不要になったオブジェクトタグは削除できます。バケットでバージョン管理が有効になっている場合、OSS はデフォルトでオブジェクトの現在のバージョンのタグを削除します。特定のバージョンからタグを削除するには、オブジェクトのバージョン ID を指定する必要があります。
オブジェクトタグ付けでは、キーと値のペアを使用してオブジェクトにタグを付けます。詳細については、「オブジェクトタグ付け」をご参照ください。
オブジェクトタグの削除の詳細については、「DeleteObjectTagging」をご参照ください。
注意事項
このトピックでは、中国 (杭州) リージョンのパブリックエンドポイントを使用します。OSS と同じリージョンにある他の Alibaba Cloud サービスから OSS にアクセスする場合は、内部エンドポイントを使用します。OSS のリージョンとエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。
このトピックでは、アクセス認証情報は環境変数から取得します。アクセス認証情報の設定方法の詳細については、「アクセス認証情報の設定」をご参照ください。
このトピックでは、OSS エンドポイントを使用して OSSClient インスタンスを作成します。カスタムドメイン名または Security Token Service (STS) を使用して OSSClient インスタンスを作成する場合は、「クライアントの設定 (Go SDK V1)」をご参照ください。
オブジェクトタグを削除するには、
oss:DeleteObjectTagging権限が必要です。詳細については、「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)
}
// オブジェクトタグを削除します。
err = bucket.DeleteObjectTagging(objectName)
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
fmt.Println("delete object tagging success.")
}
オブジェクトの特定バージョンからのタグの削除
バケットでバージョン管理が有効になっている場合は、バージョン ID を指定することで、特定のオブジェクトバージョンのタグを削除できます。
次のコードは、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)
}
// オブジェクトの指定されたバージョンからタグを削除します。
err = bucket.DeleteObjectTagging(objectName, oss.VersionId(versionId))
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
fmt.Println("delete object tagging success.")
}