すべてのプロダクト
Search
ドキュメントセンター

Object Storage Service:オブジェクトレベルの保持ポリシー (Object WORM) (Go SDK V2)

最終更新日:Apr 02, 2026

オブジェクトレベルの保持ポリシー (Object WORM) は、個々のオブジェクトに WORM コンプライアンスを適用し、それぞれに個別の保持モードと有効期限を設定できます。このトピックでは、Go SDK V2 を使用して Object WORM を有効化し、その構成をクエリし、オブジェクトレベルの保持ポリシーを管理する方法について説明します。

注意事項

重要

この機能は現在、招待プレビュー段階です。この機能を使用するには、technical support に連絡してアクティベーションを申請してください。この機能は現在、中国 (杭州)、中国 (成都)、中国 (深セン)、中国 (広州)、中国 (青島)、中国 (北京)、中国 (ウランチャブ)、中国 (河源)、中国 (香港)、ドイツ (フランクフルト)、日本 (東京)、韓国 (ソウル)、シンガポール、マレーシア (クアラルンプール)、インドネシア (ジャカルタ)、フィリピン (マニラ)、タイ (バンコク)、サウジアラビア (リヤド)、UAE (ドバイ) リージョンでのみサポートされています。

  • このトピックのコード例では、中国 (杭州) リージョン ID (cn-hangzhou) を使用しています。これらの例では、デフォルトでパブリックエンドポイントが使用されます。同じリージョン内の他の Alibaba Cloud サービスから OSS にアクセスする場合は、内部エンドポイントを使用してください。OSS がサポートするリージョンとエンドポイントについて詳しくは、「リージョンとエンドポイント」をご参照ください。

コード例

Object WORM の有効化とデフォルトポリシーの設定

次のコードを使用して、Object WORM を有効化し、デフォルトの保持ポリシーを設定します。

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(&region, "region", "", "The region in which the bucket is located.")
	flag.StringVar(&bucketName, "bucket", "", "The name of the bucket.")
}

func main() {
	flag.Parse()
	if len(bucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, bucket name required")
	}

	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, region required")
	}

	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	client := oss.NewClient(cfg)

	request := &oss.PutBucketObjectWormConfigurationRequest{
		Bucket: oss.Ptr(bucketName),
		ObjectWormConfiguration: &oss.ObjectWormConfiguration{
			ObjectWormEnabled: oss.Ptr("Enabled"),
			Rule: &oss.ObjectWormRule{
				DefaultRetention: &oss.ObjectWormDefaultRetention{
					Mode: oss.Ptr("COMPLIANCE"),
					Days: oss.Ptr(int32(1)),
				},
			},
		},
	}

	result, err := client.PutBucketObjectWormConfiguration(context.TODO(), request)
	if err != nil {
		log.Fatalf("Failed to put bucket Object WORM configuration: %v", err)
	}
	log.Printf("Put bucket Object WORM configuration result: %#v\n", result)
}

Object WORM 構成のクエリ

次のコードを使用して、バケットの Object WORM 構成をクエリします。

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(&region, "region", "", "The region in which the bucket is located.")
	flag.StringVar(&bucketName, "bucket", "", "The name of the bucket.")
}

func main() {
	flag.Parse()
	if len(bucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, bucket name required")
	}

	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, region required")
	}

	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	client := oss.NewClient(cfg)

	request := &oss.GetBucketObjectWormConfigurationRequest{
		Bucket: oss.Ptr(bucketName),
	}

	result, err := client.GetBucketObjectWormConfiguration(context.TODO(), request)
	if err != nil {
		log.Fatalf("Failed to get bucket Object WORM configuration: %v", err)
	}
	log.Printf("Get bucket Object WORM configuration result: %#v\n", result)
}

オブジェクト保持ポリシーの設定

次のコードを使用して、オブジェクトに個別の保持ポリシーを設定します。

package main

import (
	"context"
	"flag"
	"log"
	"time"

	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)

var (
	region     string
	bucketName string
	objectName string
)

func init() {
	flag.StringVar(&region, "region", "", "The region in which the bucket is located.")
	flag.StringVar(&bucketName, "bucket", "", "The name of the bucket.")
	flag.StringVar(&objectName, "object", "", "The name of the object.")
}

func main() {
	flag.Parse()
	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, region required")
	}
	if len(bucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, bucket name required")
	}
	if len(objectName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, object name required")
	}
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)
	client := oss.NewClient(cfg)

	date := time.Now().UTC().Add(5 * time.Hour).Format("2006-01-02T15:04:05.000Z")
	putRequest := &oss.PutObjectRetentionRequest{
		Bucket: oss.Ptr(bucketName),
		Key:    oss.Ptr(objectName),
		Retention: &oss.ObjectWormRetention{
			Mode:            oss.Ptr("COMPLIANCE"),
			RetainUntilDate: oss.Ptr(date),
		},
	}
	putResult, err := client.PutObjectRetention(context.TODO(), putRequest)
	if err != nil {
		log.Fatalf("Failed to put object retention policy: %v", err)
	}
	log.Printf("Put object retention policy result: %#v\n", putResult)
}

オブジェクト保持ポリシーのクエリ

次のコードを使用して、オブジェクトの保持ポリシーをクエリします。

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
	objectName string
)

func init() {
	flag.StringVar(&region, "region", "", "The region in which the bucket is located.")
	flag.StringVar(&bucketName, "bucket", "", "The name of the bucket.")
	flag.StringVar(&objectName, "object", "", "The name of the object.")
}

func main() {
	flag.Parse()
	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, region required")
	}
	if len(bucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, bucket name required")
	}
	if len(objectName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, object name required")
	}
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)
	client := oss.NewClient(cfg)
	getRequest := &oss.GetObjectRetentionRequest{
		Bucket: oss.Ptr(bucketName),
		Key:    oss.Ptr(objectName),
	}
	getResult, err := client.GetObjectRetention(context.TODO(), getRequest)
	if err != nil {
		log.Fatalf("Failed to get object retention policy: %v", err)
	}
	log.Printf("Get object retention policy result: %#v\n", getResult)
}