バージョニングが有効なバケットからのオブジェクトバージョンの削除 - Amazon Simple Storage Service

バージョニングが有効なバケットからのオブジェクトバージョンの削除

オブジェクトのバージョンは Amazon S3 バケットからいつでも削除できます。さらに、明確なライフサイクルが定義されているオブジェクトのライフサイクル設定ルールを定義することにより、最新のオブジェクトバージョンを有効期限切れにしたり、以前のオブジェクトバージョンを完全に削除したりするよう Amazon S3 にリクエストできます。バケットでバージョニングが有効であるか、バージョニングが停止されている場合、ライフサイクル設定アクションは次のように動作します。

  • Expiration アクションは、最新のオブジェクトバージョンに適用されます。Amazon S3 は、最新のオブジェクトバージョンを削除するのではなく、削除マーカーを追加してそれを最新バージョンにします。これにより、最新バージョンは以前のバージョンとして保持されます。

  • NoncurrentVersionExpiration アクションは、以前のオブジェクトバージョンに適用されます。Amazon S3 はこれらのオブジェクトバージョンを完全に削除します。完全に削除したオブジェクトは復元できません。

詳細については、「ストレージのライフサイクルの管理」を参照してください。

リクエストのユースケースを削除する

DELETE リクエストには次のユースケースがあります。

  • バージョニングが有効になっている場合、単純な DELETE はオブジェクトを完全に削除することはできません。代わりに、Amazon S3 はバケットに削除マーカーを挿入します。このマーカーが新しい ID を持つオブジェクトの最新バージョンになります。

    最新バージョンが削除マーカーであるオブジェクトを GET しようとすると、Amazon S3 は、オブジェクトが (消去されていなくても) 削除されたものとして動作し、エラー 404 を返します。詳細については、「削除マーカーの使用」を参照してください。

    次の図は、シンプルな DELETE が、指定したオブジェクトを実際には削除しないことを示しています。代わりに、Amazon S3 は削除マーカーを挿入します。

  • バージョニングされたオブジェクトを完全に削除するときは、必ず DELETE Object versionId を使用します。

    次の図は、指定したオブジェクトバージョンを削除することによって、そのオブジェクトを完全に削除する方法を示しています。

オブジェクトバージョンを削除するには

Amazon S3 内のオブジェクトバージョンは、コンソール、AWS SDK、または REST API を使って削除できます。

  1. AWS Management Console にサインインし、Amazon S3 コンソール (https://console.aws.amazon.com/s3/) を開きます。

  2. [Buckets] (バケット) リストで、オブジェクトが含まれるバケットの名前を選択します。

  3. オブジェクト一覧から、オブジェクトの名前を選択します。

  4. [バージョン] を選択します。

    Amazon S3 にオブジェクトのバージョンがすべて表示されます。

  5. 取得するバージョンのバージョン ID の、横のチェックボックスをオンにします。

  6. [削除] を選択します。

  7. [オブジェクトを完全に削除しますか?] に、permanently delete と入力します。

    警告

    オブジェクトバージョンを完全に削除すると、アクションを元に戻すことができません。

  8. [オブジェクトの削除] を選択します。

    Amazon S3 がオブジェクトのバージョンを削除します。

AWS SDK for Java、.NET、PHP を使用してオブジェクトを削除する例については、「Amazon S3 objects を削除する」を参照してください。バージョニングが無効なバケットと有効なバケットでオブジェクトを削除する場合の例は、同一です。ただし、バージョニングが有効なバケットには、Amazon S3 がバージョン番号を割り当てます。それ以外の場合、バージョン番号は null になります。

他の AWS SDK の使用の詳細については、「AWS デベロッパーセンター」を参照してください。

Python

作業サンプルを作成およびテストする方法については、「AWS SDK for Python (Boto) の使用」を参照してください。

次の Python コード例は、すべてのバージョンを削除することによってバージョニングされたオブジェクトを完全に削除する方法を示しています。

def permanently_delete_object(bucket, object_key): """ Permanently deletes a versioned object by deleting all of its versions. Usage is shown in the usage_demo_single_object function at the end of this module. :param bucket: The bucket that contains the object. :param object_key: The object to delete. """ try: bucket.object_versions.filter(Prefix=object_key).delete() logger.info("Permanently deleted all versions of object %s.", object_key) except ClientError: logger.exception("Couldn't delete all versions of %s.", object_key) raise

オブジェクトの特定のバージョンを削除するには

  • DELETE でバージョン ID を指定します。

例 - 特定のバージョンの削除

次の例では、UIORUnfnd89493jJFJ のバージョン photo.gif を削除します。

DELETE /photo.gif?versionId=UIORUnfnd89493jJFJ HTTP/1.1 Host: bucket.s3.amazonaws.com Date: Wed, 12 Oct 2009 17:50:00 GMT Authorization: AWS AKIAIOSFODNN7EXAMPLE:xQE0diMbLRepdf3YB+FIEXAMPLE= Content-Type: text/plain Content-Length: 0

オブジェクトバージョンの削除の詳細については、以下のトピックをご参照ください。