Object Storage Service (OSS) の保持ポリシーのWORM (Write Once Read Many) 機能を使用すると、ユーザーによるデータの変更や削除を防ぐことができます。 リソース所有者を含め、特定の期間内にバケット内のオブジェクトを変更または削除したくない場合は、バケットの保持ポリシーを設定できます。 保持ポリシーを設定すると、保持期間が終了するまで、ユーザーはバケット内のオブジェクトを読み取るか、バケットにオブジェクトをアップロードすることしかできません。 ユーザーは、保持期間が終了した後にのみ、バケット内のオブジェクトを変更または削除できます。
使用上の注意
保持ポリシーを設定する前に、この機能に精通していることを確認してください。 詳細については、「保持ポリシー」をご参照ください。
このトピックでは、中国 (杭州) リージョンのパブリックエンドポイントを使用します。 OSSと同じリージョンにある他のAlibaba CloudサービスからOSSにアクセスする場合は、内部エンドポイントを使用します。 OSSリージョンとエンドポイントの詳細については、「リージョン、エンドポイント、オープンポート」をご参照ください。
このトピックでは、アクセス資格情報は環境変数から取得します。 アクセス資格情報の設定方法の詳細については、「アクセス資格情報の設定」をご参照ください。
このトピックでは、OSSエンドポイントを使用してOSSClientインスタンスを作成します。 カスタムドメイン名またはSTS (Security Token Service) を使用してOSSClientインスタンスを作成する場合は、「初期化」をご参照ください。
バージョン管理が有効なバケットに対して保持ポリシーを構成することはできません。
保持ポリシーの作成
次のサンプルコードは、保持ポリシーを作成する方法の例を示しています。
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# Specify the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com.
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# Specify the ID of the region that maps to the endpoint. Example: cn-hangzhou. This parameter is required if you use the signature algorithm V4.
region = "cn-hangzhou"
# Specify the name of your bucket.
bucket = oss2.Bucket(auth, endpoint, "yourBucketName", region=region)
# Create a retention policy and set the retention period to 1 day.
result = bucket.init_bucket_worm(1)
# Query the ID of the retention policy.
print(result.worm_id)
ロック解除された保持ポリシーのキャンセル
次のサンプルコードでは、ロック解除された保持ポリシーをキャンセルする方法の例を示します。
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# Specify the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com.
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# Specify the ID of the region that maps to the endpoint. Example: cn-hangzhou. This parameter is required if you use the signature algorithm V4.
region = "cn-hangzhou"
# Specify the name of your bucket.
bucket = oss2.Bucket(auth, endpoint, "yourBucketName", region=region)
# Cancel the unlocked retention policy.
bucket.abort_bucket_worm()
保持ポリシーのロック
次のサンプルコードは、保持ポリシーをロックする方法の例を示しています。
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# Specify the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com.
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# Specify the ID of the region that maps to the endpoint. Example: cn-hangzhou. This parameter is required if you use the signature algorithm V4.
region = "cn-hangzhou"
# Specify the name of your bucket.
bucket = oss2.Bucket(auth, endpoint, "yourBucketName", region=region)
# Lock the retention policy.
bucket.complete_bucket_worm('<yourWormId>')
クエリ保持ポリシー
次のサンプルコードは、バケットの保持ポリシーを照会する方法の例を示しています。
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# Specify the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com.
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# Specify the ID of the region that maps to the endpoint. Example: cn-hangzhou. This parameter is required if you use the signature algorithm V4.
region = "cn-hangzhou"
# Specify the name of your bucket.
bucket = oss2.Bucket(auth, endpoint, "yourBucketName", region=region)
# Query retention policies.
result = bucket.get_bucket_worm()
# Query the IDs of the retention policies.
print(result.worm_id)
# Query the status of the retention policies. InProgress indicates that a retention policy is unlocked, and Locked indicates that a retention policy is locked.
print(result.state)
# Query the retention period of the retention policies.
print(result.retention_period_days)
# Query the time when the retention policies were created.
print(result.creation_date)
保持ポリシーの保持期間を延長する
次のサンプルコードは、ロックされた保持ポリシーの保持期間を延長する方法の例を示しています。
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# Specify the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com.
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# Specify the ID of the region that maps to the endpoint. Example: cn-hangzhou. This parameter is required if you use the signature algorithm V4.
region = "cn-hangzhou"
# Specify the name of your bucket.
bucket = oss2.Bucket(auth, endpoint, "yourBucketName", region=region)
# Extend the retention period of the locked retention policy.
bucket.extend_bucket_worm('<yourWormId>', 2)
関連ドキュメント
保持ポリシーの管理に使用される完全なサンプルコードについては、GitHubをご参照ください。
保持ポリシーを作成するために呼び出すことができるAPI操作の詳細については、「InitiateBucketWorm」をご参照ください。
ロック解除された保持ポリシーをキャンセルするために呼び出すことができるAPI操作の詳細については、「AbortBucketWorm」をご参照ください。
保持ポリシーをロックするために呼び出すことができるAPI操作の詳細については、「CompleteBucketWorm」をご参照ください。
保持ポリシーを照会するために呼び出すことができるAPI操作の詳細については、「GetBucketWorm」をご参照ください。
保持ポリシーの保持期間を延長するために呼び出すことができるAPI操作の詳細については、「ExtendBucketWorm」をご参照ください。