OSS SDK for Go 2.0 を使用して、バケットに対して時刻ベースの保持ポリシー(WORM)を作成、ロック、照会、および管理します。保持期間は 1 日から 70 年まで設定可能です。
注意事項
サンプルコードでは、中国 (杭州) リージョンのリージョン ID
cn-hangzhouを使用しています。デフォルトでは、パブリックエンドポイントを使用してバケット内のリソースにアクセスします。同一リージョン内の他の Alibaba Cloud サービスからリソースにアクセスする場合は、内部エンドポイントをご利用ください。詳細については、「OSS のリージョンとエンドポイント」をご参照ください。サンプルコード内のアクセス認証情報は、環境変数から読み込まれます。設定手順については、「アクセス認証情報の設定」をご参照ください。
API まとめ
| 操作 | メソッド | 州(必須) |
|---|---|---|
| 保持ポリシーの作成 | InitiateBucketWorm | — |
| 保持ポリシーのキャンセル | AbortBucketWorm | InProgress |
| 保持ポリシーのロック | CompleteBucketWorm | InProgress |
| 保持ポリシーの照会 | GetBucketWorm | 任意 |
| 保持期間の延長 | ExtendBucketWorm | Locked |
保持ポリシーのキャンセル
キャンセル可能なのは、InProgress(アンロック)状態のポリシーのみです。AbortBucketWorm を呼び出して削除します。
package main
import (
"context"
"flag"
"log"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
var (
region string
bucketName string
)
func init() {
flag.StringVar(®ion, "region", "", "バケットが配置されているリージョン。")
flag.StringVar(&bucketName, "bucket", "", "バケットの名前。")
}
func main() {
var (
wormId = "worm id" // InitiateBucketWorm が返す Worm ID に置き換えてください。
)
flag.Parse()
if len(bucketName) == 0 {
flag.PrintDefaults()
log.Fatalf("無効なパラメーターです。バケット名が必要です。")
}
if len(region) == 0 {
flag.PrintDefaults()
log.Fatalf("無効なパラメーターです。リージョンが必要です。")
}
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
client := oss.NewClient(cfg)
// ポリシーは、ロックする前に進行中状態である必要があります。
request := &oss.CompleteBucketWormRequest{
Bucket: oss.Ptr(bucketName),
WormId: oss.Ptr(wormId),
}
result, err := client.CompleteBucketWorm(context.TODO(), request)
if err != nil {
log.Fatalf("バケットのワームの完了に失敗しました:%v", err)
}
log.Printf("バケットのワームの完了結果:%#v\n", result)
}