一度に1つ以上のオブジェクトを削除したり、指定されたプレフィックスを名前に含むオブジェクトを削除したり、指定されたディレクトリとそのディレクトリ内のすべてのオブジェクトを削除したりできます。
削除したオブジェクトを元に戻すことはできません。 オブジェクトを削除するときは注意してください。
使用上の注意
このトピックでは、中国 (杭州) リージョンのパブリックエンドポイントを使用します。 OSSと同じリージョンにある他のAlibaba CloudサービスからOSSにアクセスする場合は、内部エンドポイントを使用します。 OSSリージョンとエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。
このトピックでは、アクセス資格情報は環境変数から取得します。 アクセス資格情報の設定方法の詳細については、「アクセス資格情報の設定」をご参照ください。
このトピックでは、OSSエンドポイントを使用してOSSClientインスタンスを作成します。 カスタムドメイン名またはSTS (Security Token Service) を使用してOSSClientインスタンスを作成する場合は、「初期化」をご参照ください。
オブジェクトを削除するには、
oss:DeleteObject
権限が必要です。 詳細については、「RAMユーザーへのカスタムポリシーのアタッチ」をご参照ください。
単一のオブジェクトの削除
次のサンプルコードは、examplebucketバケットからexampleobject.txtオブジェクトを削除する方法の例を示しています。
# -*-コーディング: utf-8 -*-
oss2のインポート
oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート
# 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。
# バケットの名前を指定します。 例: examplebucket.
bucket = oss2.Bucket(auth, 'https:// oss-cn-hangzhou.aliyuncs.com ', 'examplebucket')
# オブジェクトを削除します。
# 削除するオブジェクトのフルパスを指定します。 バケット名をフルパスに含めないでください。 例: exampledir/exampleobject.txt。
# ディレクトリを削除する场合は, ディレクトリ名を指定します。 ディレクトリにオブジェクトが含まれている場合は、ディレクトリを削除する前に、ディレクトリからすべてのオブジェクトを削除する必要があります。
bucket.de lete_object('exampledir/exampleobject.txt ')
一度に複数のオブジェクトを削除する
一度に最大1,000個のオブジェクトを削除できます。 複数の指定されたオブジェクト、指定されたプレフィックスを含む名前のオブジェクト、または指定されたディレクトリとディレクトリ内のすべてのオブジェクトを削除できます。
ライフサイクルルールを設定して、オブジェクトを自動的に削除することもできます。 詳細については、「最終変更時刻に基づくライフサイクルルール」をご参照ください。
複数の指定オブジェクトの削除
次のサンプルコードは、指定した複数のオブジェクトを削除する方法の例を示します。
# -*-コーディング: utf-8 -*-
oss2のインポート
oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート
# 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。
# バケットの名前を指定します。 例: examplebucket.
bucket = oss2.Bucket(auth, 'https:// oss-cn-hangzhou.aliyuncs.com ', 'examplebucket')
# 一度に3つのオブジェクトを削除します。 一度に最大1,000個のオブジェクトを削除できます。
# 削除する3つのオブジェクトのフルパスを指定します。 完全なパスにバケット名を含めないでください。
result = bucket.batch_delete_objects (['exampleobject1.jpg ', 'testobject2.png', 'destobject3.txt '])
# 削除されたオブジェクトの名前を表示します。
print('\n'.join(result.de leted_keys))
指定されたオブジェクト名プレフィックスまたは指定されたディレクトリ内の複数のオブジェクトを削除する
次のサンプルコードでは、指定した名前プレフィックスを持つ複数のオブジェクトを削除する方法と、指定したディレクトリとそのディレクトリ内のすべてのオブジェクトを削除する方法の例を示します。
プレフィックスが指定されていないか、次のコードでNULLに設定されている場合、バケット内のすべてのオブジェクトが削除されます。 削除操作でプレフィックスを指定するときは注意してください。
# -*-コーディング: utf-8 -*-
oss2のインポート
oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート
# 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。
# バケットの名前を指定します。 例: examplebucket.
bucket = oss2.Bucket(auth, 'https:// oss-cn-hangzhou.aliyuncs.com ', 'examplebucket')
# 削除するオブジェクトの名前のプレフィックスを指定します。 たとえば、名前にsrcプレフィックスが含まれるすべてのオブジェクトを削除する場合は、プレフィックスをsrcに設定します。 プレフィックスをsrcに設定すると、srcプレフィックス、srcディレクトリ、およびsrcディレクトリ内のすべてのオブジェクトを含む名前のディレクトリ以外のすべてのオブジェクトが削除されます。
prefix = 'src'
# srcディレクトリとディレクトリ内のすべてのオブジェクトのみを削除する場合は、プレフィックスをsrc /に設定します。
# prefix = 'src/'
# 複数のオブジェクトを削除します。
oss2.ObjectIteratorのobjの場合 (バケット、プレフィックス=プレフィックス):
bucket.de lete_object(obj.key)
参考資料
一度に1つまたは複数のオブジェクトを削除するために使用される完全なサンプルコードについては、GitHubをご参照ください。
単一のオブジェクトを削除するために呼び出すことができるAPI操作の詳細については、「DeleteObject」をご参照ください。
複数のオブジェクトを削除するために呼び出すことができるAPI操作の詳細については、「DeleteMultipleObjects」をご参照ください。