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