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

Object Storage Service:OSS SDK for Pythonを使用して保持ポリシーを設定する

最終更新日:Feb 22, 2024

Object Storage Service (OSS) の保持ポリシーのWORM (Write Once Read Many) 機能を使用すると、ユーザーによるデータの変更や削除を防ぐことができます。 リソース所有者を含め、特定の期間内にバケット内のオブジェクトを変更または削除したくない場合は、バケットの保持ポリシーを設定できます。 保持ポリシーを設定すると、保持期間が終了するまで、ユーザーはバケット内のオブジェクトを読み取るか、バケットにオブジェクトをアップロードすることしかできません。 ユーザーは、保持期間が終了した後にのみ、バケット内のオブジェクトを変更または削除できます。

使用上の注意

  • 保持ポリシーを設定する前に、この機能に精通していることを確認してください。 詳細については、「保持ポリシー」をご参照ください。

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

  • このトピックでは、アクセス資格情報は環境変数から取得します。 アクセス資格情報の設定方法の詳細については、「アクセス資格情報の設定」をご参照ください。

  • このトピックでは、OSSエンドポイントを使用してOSSClientインスタンスを作成します。 カスタムドメイン名またはSTS (Security Token Service) を使用してOSSClientインスタンスを作成する場合は、「初期化」をご参照ください。

  • バージョン管理が有効なバケットに対して保持ポリシーを構成することはできません。

保持ポリシーの作成

次のサンプルコードは、保持ポリシーを作成する方法の例を示しています。

# -*-コーディング: utf-8 -*-
oss2のインポート
oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート
# 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 
# バケットの名前を指定します。 
bucket = oss2.Bucket(auth, 'https:// oss-cn-hangzhou.aliyuncs.com ', 'yourBucketName')

# 保持ポリシーを作成し、保持期間を1日に設定します。 
result = bucket.init_bucket_worm (1)
# 保持ポリシーのIDを照会します。 
print(result.worm_id) 

ロック解除された保持ポリシーのキャンセル

次のサンプルコードでは、ロック解除された保持ポリシーをキャンセルする方法の例を示します。

# -*-コーディング: utf-8 -*-
oss2のインポート
oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート
# 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 
# バケットの名前を指定します。 
bucket = oss2.Bucket(auth, 'https:// oss-cn-hangzhou.aliyuncs.com ', 'yourBucketName')

# ロック解除された保持ポリシーをキャンセルします。 
bucket.abort_bucket_worm() 

保持ポリシーのロック

次のサンプルコードは、保持ポリシーをロックする方法の例を示しています。

# -*-コーディング: utf-8 -*-
oss2のインポート
oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート
# 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 
# バケットの名前を指定します。 
bucket = oss2.Bucket(auth, 'https:// oss-cn-hangzhou.aliyuncs.com ', 'yourBucketName')

# 保持ポリシーをロックします。 
bucket.com plete_bucket_worm('<yourWormId>') 

クエリ保持ポリシー

次のサンプルコードは、バケットの保持ポリシーを照会する方法の例を示しています。

# -*-コーディング: utf-8 -*-
oss2のインポート
oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート
# 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 
# バケットの名前を指定します。 
bucket = oss2.Bucket(auth, 'https:// oss-cn-hangzhou.aliyuncs.com ', 'yourBucketName')

# 保持ポリシーを照会します。 
result = bucket.get_bucket_worm()

# 保持ポリシーのIDを照会します。 
print(result.worm_id)
# 保持ポリシーのステータスを照会します。 InProgressは保持ポリシーがロック解除されていることを示し、Lockedは保持ポリシーがロックされていることを示します。 
プリント (result.state)
# 保持ポリシーの保持期間を照会します。 
プリント (result.retention_period_days)
# 保持ポリシーが作成された時刻を照会します。 
プリント (result.creation_date) 

保持ポリシーの保持期間を延長する

次のサンプルコードは、ロックされた保持ポリシーの保持期間を延長する方法の例を示しています。

# -*-コーディング: utf-8 -*-
oss2のインポート
oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート
# 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 
# バケットの名前を指定します。 
bucket = oss2.Bucket(auth, 'https:// oss-cn-hangzhou.aliyuncs.com ', 'yourBucketName')

# ロックされた保持ポリシーの保持期間を延長します。 
bucket.extend_bucket_worm('<yourWormId>', 2) 

参考資料

  • 保持ポリシーの管理に使用される完全なサンプルコードについては、GitHubをご参照ください。

  • 保持ポリシーを作成するために呼び出すことができるAPI操作の詳細については、「InitiateBucketWorm」をご参照ください。

  • ロック解除された保持ポリシーをキャンセルするために呼び出すことができるAPI操作の詳細については、「AbortBucketWorm」をご参照ください。

  • 保持ポリシーをロックするために呼び出すことができるAPI操作の詳細については、「CompleteBucketWorm」をご参照ください。

  • 保持ポリシーを照会するために呼び出すことができるAPI操作の詳細については、「GetBucketWorm」をご参照ください。

  • 保持ポリシーの保持期間を延長するために呼び出すことができるAPI操作の詳細については、「ExtendBucketWorm」をご参照ください。