Object Storage Service (OSS) では、オブジェクトタグを設定してオブジェクトを分類できます。 ライフサイクルルールを設定し、タグに基づいてオブジェクトへのアクセスを制御できます。
使用上の注意
このトピックでは、中国 (杭州) リージョンのパブリックエンドポイントを使用します。 OSSと同じリージョンにある他のAlibaba Cloudサービスを使用してOSSにアクセスする場合は、内部エンドポイントを使用します。 OSSでサポートされているリージョンとエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。
このトピックでは、アクセス資格情報は環境変数から取得します。 アクセス資格情報の設定方法の詳細については、「アクセス資格情報の設定」をご参照ください。
このトピックでは、OSSエンドポイントを使用してOSSClientインスタンスを作成します。 カスタムドメイン名またはSTS (Security Token Service) を使用してOSSClientインスタンスを作成する場合は、「初期化」をご参照ください。
オブジェクトにタグを追加するには、
oss:PutObjectTagging
権限が必要です。 詳細については、「RAMユーザーへのカスタムポリシーのアタッチ」をご参照ください。
背景情報
オブジェクトのタグ付けを設定するときは、次の項目に注意してください。
オブジェクトのアップロード時およびアップロード後に、オブジェクトにタグを追加できます。 オブジェクトの既存のタグのキーとして追加するタグに同じキーを指定すると、既存のタグが上書きされます。 オブジェクトにタグを追加する方法の詳細については、「PutObjectTagging」をご参照ください。
オブジェクトにタグを追加するには、PutObjectTagging操作を呼び出す権限が必要です。
スクリプトを使用してカスタムポリシーを作成し、RAMユーザーに必要な権限を付与できます。 詳細については、「RAMユーザーへのカスタムポリシーのアタッチ」をご参照ください。
オブジェクトの最後に変更された時刻は、オブジェクトのタグが変更されても更新されません。
オブジェクトは最大10個のタグを持つことができます。 オブジェクトに追加されるタグには、一意のキーが必要です。
タグキーの長さは最大128文字です。 タグ値の長さは最大256文字です。
タグキーとタグ値は大文字と小文字を区別します。
タグキーとタグ値には、英数字、スペース、および次の特殊文字を使用できます。
+ - = . _ : /
説明HTTPヘッダーにタグを設定し、タグに文字が含まれている場合は、タグキーとタグ値に対してURLエンコードを実行する必要があります。
オブジェクトのタグ付けでは、キーと値のペアを使用してオブジェクトを識別します。 オブジェクトタグの詳細については、「オブジェクトタグ付け」をご参照ください。
オブジェクトをアップロードするときにタグを追加する
単純アップロードを使用してオブジェクトをアップロードするときにタグを追加する
次のコードでは、単純アップロードを使用してオブジェクトをアップロードするときに、オブジェクトにタグを追加する方法の例を示します。
パッケージメイン import (import (import) "fmt" "os" "strings" 「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インスタンスを作成します。 // バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 実際のエンドポイントを指定します。 client, err := oss.New("yourEndpoint", ", " ", ", oss.SetCredentialsProvider(&provider)) 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) } // オブジェクトタグのキーと値を指定します。 たとえば、キーをownerに設定し、値をJohnに設定します。 tag1 := oss.Tag { キー: "owner" 、値: "ジョン" 、} tag2 := oss. タグ { キー: "type" 、値: "document" 、} tagging := oss.Tagging { タグ: []oss.Tag{tag1, tag2}, } // オブジェクトにタグを追加します。 err = bucket.PutObject(objectName、strings.NewReader("Hello OSS") 、oss.SetTagging (タグ付け)) if err! =nil { fmt.Println("Error:", err) os.Exit(-1) } fmt.Println(bucket.GetObjectTagging(objectName)) }
マルチパートアップロードを使用してオブジェクトをアップロードするときにオブジェクトにタグを追加する
次のコードは、マルチパートアップロードを使用してオブジェクトをアップロードするときに、オブジェクトにタグを追加する方法の例を示しています。
パッケージメイン import (import (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インスタンスを作成します。 // バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 実際のエンドポイントを指定します。 client, err := oss.New("yourEndpoint", ", " ", ", oss.SetCredentialsProvider(&provider)) if err! =nil { fmt.Println("Error:", err) os.Exit(-1) } // バケットの名前を指定します。 例: examplebucket. bucketName := "examplebucket" // オブジェクトのフルパスを指定します。 バケット名をフルパスに含めないでください。 例: exampledir/exampleobject.txt。 objectName := "exampledir/exampleobject.txt" // ローカルファイルのフルパスを指定します。 例: D :\\ localpath\\examplefile.txt。 // ローカルパスを指定せずにexamplefile.txtなどのローカルファイル名のみを指定した場合、サンプルプログラムが属するプロジェクトのパスからローカルファイルがアップロードされます。 fileName := "D :\\ localpath\\examplefile.txt" // バケット情報を取得します。 bucket, err := client.Bucket(bucketName) if err! =nil { fmt.Println("Error:", err) os.Exit(-1) } // オブジェクトタグのキーと値を指定します。 たとえば、キーをownerに設定し、値をJohnに設定します。 tag1 := oss.Tag { キー: "owner" 、値: "ジョン" 、} tag2 := oss. タグ { キー: "type" 、値: "document" 、} tagging := oss.Tagging { タグ: []oss.Tag{tag1, tag2}, } // オブジェクトサイズに基づいて、オブジェクトを複数のパーツに分割してアップロードできます。 この例では、オブジェクトは3つの部分に分割されます。 chunks, err := oss.SplitFileByPartNum(fileName, 3) if err! =nil { fmt.Println("Error:", err) os.Exit(-1) } // オブジェクトを開きます。 fd, err := os.Open(fileName) if err! =nil { fmt.Println("Error:", err) os.Exit(-1) } defer fd. 閉じる () // アップロードされたオブジェクトを初期化し、オブジェクトのタグ付けを設定します。 imur, err := bucket.InitiateMultipartUpload(objectName, oss.SetTagging(tagging)) if err! =nil { fmt.Println("Error:", err) os.Exit(-1) } // マルチパートアップロードタスクを開始します。 var parts []oss.UploadPart for _, chunk := range chunks { fd.Seek(chunk.Offset, os.SEEK_SET) part, err := bucket.UploadPart(imur, fd, chunk.Size, chunk.Number) if err! =nil { fmt.Println("Error:", err) os.Exit(-1) } parts = append(parts, part) } _, err = bucket.CompleteMultipartUpload(imur, parts) if err! =nil { fmt.Println("Error:", err) os.Exit(-1) } fmt.Println(bucket.GetObjectTagging(objectName)) }
追加アップロードを使用してオブジェクトをアップロードするときにタグを追加する
次のコードは、追加アップロードを使用してオブジェクトをアップロードするときに、オブジェクトにタグを追加する方法の例を示しています。
パッケージメイン import (import (import) "fmt" "os" "strings" 「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インスタンスを作成します。 // バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 実際のエンドポイントを指定します。 client, err := oss.New("yourEndpoint", ", " ", ", oss.SetCredentialsProvider(&provider)) 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) } // オブジェクトタグのキーと値を指定します。 たとえば、キーをownerに設定し、値をJohnに設定します。 tag1 := oss.Tag { キー: "owner" 、値: "ジョン" 、} tag2 := oss. タグ { キー: "type" 、値: "document" 、} tagging := oss.Tagging { タグ: []oss.Tag{tag1, tag2}, } var nextPos int64 // 初めて追加アップロードを使用してオブジェクトをアップロードします。 AppendObject操作を呼び出してオブジェクトにタグを追加する場合、オブジェクトが初めてアップロードされたときにのみ、タグをオブジェクトに追加できます。 nextPos, err = bucket.AppendObject(objectName, strings.NewReader("Hello OSS A \n"), nextPos, oss.SetTagging (タグ付け)) if err! =nil { fmt.Println("Error:", err) os.Exit(-1) } // 2回目の追加アップロードを使用してオブジェクトをアップロードします。 nextPos, err = bucket.AppendObject(objectName, strings.NewReader("Hello OSS B \n"), nextPos) if err! =nil { fmt.Println("Error:", err) os.Exit(-1) } fmt.Println(bucket.GetObjectTagging(objectName)) }
再開可能アップロードを使用してオブジェクトをアップロードするときにオブジェクトにタグを追加する
次のコードは、再開可能アップロードを使用してオブジェクトをアップロードするときに、オブジェクトにタグを追加する方法の例を示しています。
パッケージメイン import (import (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インスタンスを作成します。 // バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 実際のエンドポイントを指定します。 client, err := oss.New("yourEndpoint", ", " ", ", oss.SetCredentialsProvider(&provider)) if err! =nil { fmt.Println("Error:", err) os.Exit(-1) } // バケットの名前を指定します。 例: examplebucket. bucketName := "examplebucket" // オブジェクトのフルパスを指定します。 バケット名をフルパスに含めないでください。 例: exampledir/exampleobject.txt。 objectName := "exampledir/exampleobject.txt" // ローカルファイルのフルパスを指定します。 例: D :\\ localpath\\examplefile.txt。 // ローカルパスを指定せずにexamplefile.txtなどのローカルファイル名のみを指定した場合、サンプルプログラムが属するプロジェクトのパスからローカルファイルがアップロードされます。 fileName := "D :\\ localpath\\examplefile.txt" // バケット情報を取得します。 bucket, err := client.Bucket(bucketName) if err! =nil { fmt.Println("Error:", err) os.Exit(-1) } // オブジェクトタグのキーと値を指定します。 たとえば、キーをownerに設定し、値をJohnに設定します。 tag1 := oss.Tag { キー: "owner" 、値: "ジョン" 、} tag2 := oss. タグ { キー: "type" 、値: "document" 、} tagging := oss.Tagging { タグ: []oss.Tag{tag1, tag2}, } // オブジェクトを複数の部分に分割します。各部分のサイズは100 KBです。 次に、3つのスレッドを使用してパーツを同時にアップロードし、パーツをアップロードするときにオブジェクトにタグを追加します。 err = bucket.UploadFile(objectName, fileName, 100*1024, oss.Routines(3), oss.SetTagging(tagging)) if err! =nil { fmt.Println("Error:", err) os.Exit(-1) } fmt.Println(bucket.GetObjectTagging(objectName)) }
アップロードされたオブジェクトにタグを追加するか、オブジェクトのタグを変更する
既存のオブジェクトにタグがない場合、または追加されたオブジェクトのタグが要件を満たしていない場合は、既存のオブジェクトのタグを追加または変更できます。
次のコードは、アップロードされたオブジェクトにタグを追加する方法、またはオブジェクトのタグを変更する方法の例を示しています。
パッケージメイン
import (import (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インスタンスを作成します。
// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 実際のエンドポイントを指定します。
client, err := oss.New("yourEndpoint", ", " ", ", oss.SetCredentialsProvider(&provider))
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)
}
// オブジェクトタグのキーと値を指定します。 たとえば、キーをownerに設定し、値をJohnに設定します。
tag1 := oss.Tag {
キー: "owner" 、値: "ジョン" 、}
tag2 := oss. タグ {
キー: "type" 、値: "document" 、}
tagging := oss.Tagging {
タグ: []oss.Tag{tag1, tag2},
}
// オブジェクトにタグを追加します。
err = bucket.PutObjectTagging(objectName, tagging)
if err! =nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
fmt.Println(bucket.GetObjectTagging(objectName))
}
指定したオブジェクトバージョンにタグを追加するか、オブジェクトバージョンのタグを変更する
バケットのバージョン管理が有効になっている場合、オブジェクトのバージョンIDを指定することで、バケット内のオブジェクトの指定されたバージョンにタグを追加したり、タグを変更したりできます。
次のコードは、オブジェクトの指定されたバージョンにタグを追加する方法、またはオブジェクトのタグを変更する方法の例を示しています。
オブジェクトのバージョンIDを照会する方法の詳細については、「オブジェクトのリスト」をご参照ください。
パッケージメイン
import (import (import)
"fmt"
「github.com/aliyun/aliyun-oss-go-sdk/oss」
"os"
)
func HandleError (エラーエラー) {
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インスタンスを作成します。
// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 実際のエンドポイントを指定します。
client, err := oss.New("yourEndpoint", ", " ", ", oss.SetCredentialsProvider(&provider))
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)
}
// オブジェクトタグのキーと値を指定します。 たとえば、キーをownerに設定し、値をJohnに設定します。
tag1 := oss.Tag {
キー: "owner" 、値: "ジョン" 、}
tag2 := oss. タグ {
キー: "type" 、値: "document" 、}
tagging := oss.Tagging {
タグ: []oss.Tag{tag1, tag2},
}
// 指定したバージョンのオブジェクトにタグを追加します。
err = bucket.PutObjectTagging(objectName, tagging, oss.VersionId(versionId))
if err! =nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
fmt.Println(bucket.GetObjectTagging(objectName))
}
オブジェクトをコピーするときにオブジェクトにタグを追加する
次のいずれかの方法を使用して、オブジェクトをコピーするときにオブジェクトのタグ付けを設定できます。
コピー: ソースオブジェクトのタグがコピー先オブジェクトにコピーされます。
置換: ターゲットオブジェクトには、ソースオブジェクトのタグではなく、リクエストで指定されたタグがあります。
次の例では、シンプルコピーモードで1 GB未満、マルチパートコピーモードで1 GBを超えるオブジェクトにタグを追加する方法について説明します。
シンプルコピーモードでオブジェクトをコピーするときにオブジェクトにタグを追加する
次のコードでは、オブジェクトをシンプルコピーモードでコピーするときに、1 GB未満のオブジェクトにタグを追加する方法の例を示します。
パッケージメイン import (import (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インスタンスを作成します。 // バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 実際のエンドポイントを指定します。 client, err := oss.New("yourEndpoint", ", " ", ", oss.SetCredentialsProvider(&provider)) if err! =nil { fmt.Println("Error:", err) os.Exit(-1) } // バケットの名前を指定します。 例: examplebucket. bucketName := "examplebucket" // ソースオブジェクトのフルパスを指定します。 バケット名をフルパスに含めないでください。 例: srcexampledir/exampleobject.txt。 srcObjectName := "srcexampledir/exampleobject.txt" // 宛先オブジェクトのフルパスを指定します。 バケット名をフルパスに含めないでください。 例: destexampledir1/exampleobject.txt。 destObjectName1 := "destexampledir1/exampleobject.txt" // 宛先オブジェクトのフルパスを指定します。 バケット名をフルパスに含めないでください。 例: destexampledir2/exampleobject.txt。 destObjectName2 := "destexampledir2/exampleobject.txt" // バケット情報を取得します。 bucket, err := client.Bucket(bucketName) if err! =nil { fmt.Println("Error:", err) os.Exit(-1) } // オブジェクトタグのキーと値を指定します。 たとえば、キーをownerに設定し、値をJohnに設定します。 tag1 := oss.Tag { キー: "owner" 、 値: "ジョン" 、 } tag2 := oss. タグ { キー: "type" 、 値: "document" 、 } tagging := oss.Tagging { タグ: []oss.Tag{tag1, tag2}, } // タグ付けパラメーターのみを設定した場合、ターゲットオブジェクトにタグを追加することはできません。 _, err = bucket.CopyObject(srcObjectName, destObjectName1, oss.SetTagging(tagging)) if err! =nil { fmt.Println("Error:", err) os.Exit(-1) } // TaggingReplaceパラメーターとタグ付けパラメーターの両方を設定した場合にのみ、ターゲットオブジェクトにタグを追加できます。 _, err = bucket.CopyObject(srcObjectName, destObjectName2, oss.SetTagging(tagging), oss.TaggingDirective(oss.TaggingReplace)) if err! =nil { fmt.Println("Error:", err) os.Exit(-1) } fmt.Println(bucket.GetObjectTagging(srcObjectName)) fmt.Println(bucket.GetObjectTagging(destObjectName1)) fmt.Println(bucket.GetObjectTagging(destObjectName2)) }
マルチパートコピーモードでオブジェクトをコピーするときにオブジェクトにタグを追加する
次のコードでは、マルチパートコピーモードでオブジェクトをコピーするときに、1 GBを超えるオブジェクトにタグを追加する方法の例を示します。
パッケージメイン import (import (import) "fmt" "os" "strings" 「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インスタンスを作成します。 // バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 実際のエンドポイントを指定します。 client, err := oss.New("https://oss-cn-hangzhou.aliyuncs.com", ", ", ", oss.SetCredentialsProvider(&provider)) if err! =nil { fmt.Println("Error:", err) os.Exit(-1) } // バケットの名前を指定します。 例: examplebucket. bucketName := "examplebucket" // ソースオブジェクトのフルパスを指定します。 バケット名をフルパスに含めないでください。 例: srcexampledir/exampleobject.txt。 srcObjectName := "srcexampledir/exampleobject.txt" // 宛先オブジェクトのフルパスを指定します。 バケット名をフルパスに含めないでください。 例: destexampledir/exampleobject.txt。 destObjectName := "destexampledir/exampleobject.txt" // バケット情報を取得します。 bucket, err := client.Bucket(bucketName) if err! =nil { fmt.Println("Error:", err) os.Exit(-1) } // オブジェクトタグのキーと値を指定します。 たとえば、キーをownerに設定し、値をJohnに設定します。 tag1 := oss.Tag { キー: "owner" 、 値: "ジョン" 、 } tag2 := oss. タグ { キー: "type" 、 値: "document" 、 } tagging := oss.Tagging { タグ: []oss.Tag{tag1, tag2}, } // マルチパートコピー用のオブジェクトをアップロードします。 content := "this your object value" err = bucket.PutObject(srcObjectName, strings.NewReader(content)) if err! =nil { fmt.Println("Error:", err) os.Exit(-1) } // アップロードされたオブジェクトを初期化し、オブジェクトのタグ付けを設定します。 imur, err := bucket.InitiateMultipartUpload(destObjectName, oss.SetTagging(tagging)) if err! =nil { fmt.Println("Error:", err) os.Exit(-1) } // UploadPartCopyメソッドを使用して、オブジェクトを1つのパーツとしてアップロードします。 part, err := bucket.UploadPartCopy(imur, bucketName, srcObjectName, 0, int64(len(content)), 1) if err! =nil { fmt.Println("Error:", err) os.Exit(-1) } parts := []oss.UploadPart{part} _, err = bucket.CompleteMultipartUpload(imur, parts) if err! =nil { fmt.Println("Error:", err) os.Exit(-1) } fmt.Println(bucket.GetObjectTagging(destObjectName)) }
シンボリックリンクにタグを追加する
次のコードは、シンボリックリンクにタグを追加する方法の例を示しています。
パッケージメイン
import (import (import)
"fmt"
"os"
"strings"
「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インスタンスを作成します。
// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 実際のエンドポイントを指定します。
client, err := oss.New("yourEndpoint", ", " ", ", oss.SetCredentialsProvider(&provider))
if err! =nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// バケットの名前を指定します。 例: examplebucket.
bucketName := "examplebucket"
// オブジェクトのフルパスを指定します。 バケット名をフルパスに含めないでください。 例: exampledir/exampleobject.txt。
objectName := "exampledir/exampleobject.txt"
// シンボリックリンクのフルパスを指定します。 例: shortcut/myobject.txt。
symlinkName := "shortcut/myobject.txt"
// バケット情報を取得します。
bucket, err := client.Bucket(bucketName)
if err! =nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// オブジェクトタグのキーと値を指定します。 たとえば、キーをownerに設定し、値をJohnに設定します。
tag1 := oss.Tag {
キー: "owner" 、値: "ジョン" 、}
tag2 := oss. タグ {
キー: "type" 、値: "document" 、}
tagging := oss.Tagging {
タグ: []oss.Tag{tag1, tag2},
}
err = bucket.PutObject(objectName, strings.NewReader("Hello OSS"))
if err! =nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
err = bucket.PutSymlink(objectName, symlinkName, oss.SetTagging(tagging))
if err! =nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
fmt.Println(bucket.GetObjectTagging(objectName))
}