OSS Python SDK v2 を使用して、バケット上の WORM (write-once-read-many) コンプライアンス保持ポリシーを管理します。保持ポリシーは、1 日から 70 年の範囲で設定できる保持期間中、オブジェクトの不変性を強制します。
このトピックでは、保持ポリシーの作成、クエリ、ロック、延長、キャンセルの 5 つの操作について説明します。
注意事項
すべての例では、中国 (杭州) リージョンを使用します。デフォルトでは、クライアントはパブリックエンドポイントを使用して接続します。同じリージョン内の別の Alibaba Cloud サービスから OSS にアクセスするには、cfg.endpoint を内部エンドポイントに設定します。エンドポイントの完全なリストについては、リージョンとエンドポイントをご参照ください。
前提条件
開始する前に、以下が準備できていることを確認してください。
OSS バケット
Python SDK v2 (
alibabacloud_oss_v2) がインストール済みであること環境変数として設定されたアクセス認証情報
保持ポリシーのクエリ
get_bucket_worm() を呼び出して、保持ポリシーの現在の構成と状態を取得します。
import argparse
import alibabacloud_oss_v2 as oss
parser = argparse.ArgumentParser(description="Query the WORM retention policy of a bucket")
parser.add_argument('--region', required=True, help='Region ID, e.g. cn-hangzhou')
parser.add_argument('--bucket', required=True, help='Bucket name')
parser.add_argument('--endpoint', help='Custom endpoint (optional)')
def main():
args = parser.parse_args()
credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()
cfg = oss.config.load_default()
cfg.credentials_provider = credentials_provider
cfg.region = args.region
if args.endpoint is not None:
cfg.endpoint = args.endpoint
client = oss.Client(cfg)
result = client.get_bucket_worm(oss.GetBucketWormRequest(
bucket=args.bucket,
))
print(f'status code: {result.status_code},'
f' request id: {result.request_id},'
f' worm id: {result.worm_configuration.worm_id},'
f' state: {result.worm_configuration.state},'
f' retention period in days: {result.worm_configuration.retention_period_in_days},'
f' creation date: {result.worm_configuration.creation_date},'
f' expiration date: {result.worm_configuration.expiration_date},'
)
if __name__ == "__main__":
main()worm_configuration オブジェクトは、次のフィールドを返します。
| フィールド | 説明 |
|---|---|
worm_id | 保持ポリシーの一意の ID |
state | WORM 機能の現在の状態 |
retention_period_in_days | 保持期間 (日数) |
creation_date | ポリシーが作成された日付 |
expiration_date | ポリシーの有効期限が切れる日付 |
保持期間の延長
extend_bucket_worm() を呼び出して、保持ポリシーの保持期間を延長します。
import argparse
import alibabacloud_oss_v2 as oss
parser = argparse.ArgumentParser(description="Extend the retention period of a locked WORM policy")
parser.add_argument('--region', required=True, help='Region ID, e.g. cn-hangzhou')
parser.add_argument('--bucket', required=True, help='Bucket name')
parser.add_argument('--endpoint', help='Custom endpoint (optional)')
parser.add_argument('--worm_id', required=True, help='Worm ID of the locked policy')
parser.add_argument('--retention_period_in_days', required=True, help='New retention period in days')
def main():
args = parser.parse_args()
credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()
cfg = oss.config.load_default()
cfg.credentials_provider = credentials_provider
cfg.region = args.region
if args.endpoint is not None:
cfg.endpoint = args.endpoint
client = oss.Client(cfg)
result = client.extend_bucket_worm(oss.ExtendBucketWormRequest(
bucket=args.bucket,
worm_id=args.worm_id,
extend_worm_configuration=oss.ExtendWormConfiguration(
retention_period_in_days=int(args.retention_period_in_days),
),
))
print(f'status code: {result.status_code},'
f' request id: {result.request_id}'
)
if __name__ == "__main__":
main()次のステップ
保持ポリシーに関連する一般的なエラーについては、27-WORM をご参照ください。