オブジェクトにタグを設定した後、オブジェクトのタグ情報を取得できます。 バケットでバージョン管理が有効になっている場合、OSS はデフォルトでオブジェクトの現在のバージョンのタグを取得します。 特定のバージョンのタグを取得するには、オブジェクトのバージョン ID (versionId) を指定します。
オブジェクトタグ付けでは、キーと値のペアのセットを使用してオブジェクトにタグを付けます。 詳細については、「オブジェクトタグ付け」をご参照ください。
オブジェクトタグの取得方法の詳細については、「GetObjectTagging」をご参照ください。
注意事項
このトピックでは、中国 (杭州) リージョンのパブリックエンドポイントを使用します。 OSS と同じリージョンにある他の Alibaba Cloud サービスから OSS にアクセスする場合は、内部エンドポイントを使用します。 OSS のリージョンとエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。
このトピックでは、アクセス認証情報は環境変数から取得されます。 アクセス認証情報の設定方法の詳細については、「アクセス認証情報の設定」をご参照ください。
このトピックでは、OSS エンドポイントを使用して OSSClient インスタンスを作成します。 カスタムドメイン名またはセキュリティトークンサービス (STS) を使用して OSSClient インスタンスを作成する場合は、「クライアントの設定 (Go SDK V1)」をご参照ください。
オブジェクトタグを取得するには、
oss:GetObjectTagging権限が必要です。 詳細については、「RAM ユーザーへのカスタム権限の付与」をご参照ください。
オブジェクトのタグ情報の取得
バケットでバージョン管理が無効になっている場合は、オブジェクトのタグ情報を取得できます。 バケットでバージョン管理が有効になっている場合、OSS はデフォルトでオブジェクトの現在のバージョンのタグを取得します。
次のコードは、examplebucket バケットの exampledir フォルダにある exampleobject.txt ファイルのタグを取得する方法を示しています。
package main
import (
"fmt"
"os"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)
func main() {
// 環境変数からアクセス認証情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// OSSClient インスタンスを作成します。
// yourEndpoint をバケットのエンドポイントに設定します。 たとえば、中国 (杭州) リージョンのバケットの場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。 他のリージョンの場合は、それに応じてエンドポイントを設定します。
// yourRegion をバケットが配置されているリージョンに設定します。 たとえば、中国 (杭州) リージョンのバケットの場合、リージョンを cn-hangzhou に設定します。 他のリージョンの場合は、それに応じてリージョンを設定します。
clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)}
clientOptions = append(clientOptions, oss.Region("yourRegion"))
// 署名バージョンを設定します。
clientOptions = append(clientOptions, oss.AuthVersion(oss.AuthV4))
client, err := oss.New("yourEndpoint", "", "", clientOptions...)
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// バケット名を指定します。 例: examplebucket。
bucketName := "examplebucket"
// オブジェクトの完全なパスを指定します。 例: exampledir/exampleobject.txt。 完全なパスにバケット名を含めることはできません。
objectName := "exampledir/exampleobject.txt"
// バケットを取得します。
bucket, err := client.Bucket(bucketName)
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// オブジェクトのタグ情報を取得します。
taggingResult, err := bucket.GetObjectTagging(objectName)
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
fmt.Printf("Object Tagging: %v\n", taggingResult)
}
特定のバージョンのオブジェクトのタグ情報の取得
バケットでバージョン管理が有効になっている場合は、オブジェクトのバージョン ID (versionId) を指定することで、特定のバージョンのオブジェクトのタグを取得できます。
次のコードは、examplebucket バケットの exampledir フォルダにある exampleobject.txt ファイルの特定のバージョンのタグを取得する方法を示しています。
バージョン ID の取得方法の詳細については、「オブジェクトのリスト (Go SDK V1)」をご参照ください。
package main
import (
"fmt"
"os"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)
func HandleError(err error) {
fmt.Println("Error:", err)
os.Exit(-1)
}
func main() {
// 環境変数からアクセス認証情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// OSSClient インスタンスを作成します。
// yourEndpoint をバケットのエンドポイントに設定します。 たとえば、中国 (杭州) リージョンのバケットの場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。 他のリージョンの場合は、それに応じてエンドポイントを設定します。
// yourRegion をバケットが配置されているリージョンに設定します。 たとえば、中国 (杭州) リージョンのバケットの場合、リージョンを cn-hangzhou に設定します。 他のリージョンの場合は、それに応じてリージョンを設定します。
clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)}
clientOptions = append(clientOptions, oss.Region("yourRegion"))
// 署名バージョンを設定します。
clientOptions = append(clientOptions, oss.AuthVersion(oss.AuthV4))
client, err := oss.New("yourEndpoint", "", "", clientOptions...)
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// バケット名を指定します。 例: examplebucket。
bucketName := "examplebucket"
// オブジェクトの完全なパスを指定します。 例: exampledir/exampleobject.txt。 完全なパスにバケット名を含めることはできません。
objectName := "exampledir/exampleobject.txt"
// オブジェクトのバージョン ID を指定します。
versionId := "CAEQMxiBgICAof2D0BYiIDJhMGE3N2M1YTI1NDQzOGY5NTkyNTI3MGYyMzJm****"
// バケットを取得します。
bucket, err := client.Bucket(bucketName)
if err != nil {
HandleError(err)
}
// 指定されたバージョンのオブジェクトのタグ情報を取得します。
taggingResult, err := bucket.GetObjectTagging(objectName, oss.VersionId(versionId))
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
fmt.Printf("Object Tagging: %v\n", taggingResult)
}