メニュー
Amazon Simple Storage Service
開発者ガイド (API Version 2006-03-01)

AWS SDK for PHP を使用した複数オブジェクトの削除

このトピックでは、AWS SDK for PHP のクラスを使用して、バージョニング対応および非対応の Amazon S3 バケットから複数のオブジェクトを削除する手順を示します。バージョニングの詳細については、「バージョニングの使用」を参照してください。

注記

このトピックでは、既に AWS SDK for PHP の使用と PHP サンプルの実行 の説明が実行されていて、AWS SDK for PHP が正しくインストールされていることを前提としています。

以下のタスクは、PHP SDK のクラスを使用して、バージョニング非対応のバケットから複数のオブジェクトを削除する手順を示しています。

複数オブジェクトの削除(バージョニング非対応のバケット)

1

Amazon S3 クライアントのインスタンスを Aws\S3\S3Client クラスの factory() メソッドを使用して作成します。

2

Aws\S3\S3Client::deleteObjects() メソッドを実行します。バケット名とオブジェクトキーの配列をパラメーターとして指定する必要があります。最大 1,000 個のキーを指定できます。

以下の PHP コードは、Amazon S3 のバージョニング非対応のバケットから複数のオブジェクトを実際に削除している例です。

Copy
use Aws\S3\S3Client; $bucket = '*** Your Bucket Name ***'; $keyname1 = '*** Your Object Key1 ***'; $keyname2 = '*** Your Object Key2 ***'; $keyname3 = '*** Your Object Key3 ***'; $s3 = S3Client::factory(); // Delete objects from a bucket $result = $s3->deleteObjects(array( 'Bucket' => $bucket, 'Objects' => array( array('Key' => $keyname1), array('Key' => $keyname2), array('Key' => $keyname3), ) ));

以下のタスクは、Amazon S3 のバージョニング対応のバケットから複数のオブジェクトを削除する手順を示しています。

複数オブジェクトの削除(バージョニング対応バケット)

1

Amazon S3 クライアントのインスタンスを、Aws\S3\S3Client クラスの factory() メソッドを使用して作成します。

2

Aws\S3\S3Client::deleteObjects() メソッドを実行し、削除するオブジェクトのオブジェクトキー(およびオプションでバージョン ID)のリストを指定します。

削除するオブジェクトのバージョン ID を指定した場合、Amazon S3 はそのバージョンのオブジェクトのみを削除します。削除するオブジェクトのバージョン ID を指定しない場合、Amazon S3 は削除マーカーを追加します。詳細については、「1 件のリクエストで 1 つのオブジェクトを削除」を参照してください。

以下の PHP コードは、Amazon S3 のバージョニング対応のバケットから複数のオブジェクトを実際に削除している例です。

Copy
use Aws\S3\S3Client; $bucket = '*** Your Bucket Name ***'; $keyname = '*** Your Object Key ***'; $versionId1 = '*** Your Object Key Version ID1 ***'; $versionId2 = '*** Your Object Key Version ID2 ***'; $versionId3 = '*** Your Object Key Version ID3 ***'; $s3 = S3Client::factory(); // Delete object versions from a versioning-enabled bucket. $result = $s3->deleteObjects(array( 'Bucket' => $bucket, 'Objects' => array( array('Key' => $keyname, 'VersionId' => $versionId1), array('Key' => $keyname, 'VersionId' => $versionId2), array('Key' => $keyname, 'VersionId' => $versionId3), ) ));

Amazon S3 から返されるレスポンスには、削除されたオブジェクトと、エラー(例えば、アクセス許可エラー)が原因で削除できなかったオブジェクトが示されます。

以下の PHP コード例は、削除されたオブジェクトのオブジェクトキーを出力します。また、削除されなかったオブジェクトキーと、関連するエラーメッセージも出力しています。

Copy
echo "The following objects were deleted successfully:\n"; foreach ($result['Deleted'] as $object) { echo "Key: {$object['Key']}, VersionId: {$object['VersionId']}\n"; } echo "\nThe following objects could not be deleted:\n"; foreach ($result['Errors'] as $object) { echo "Key: {$object['Key']}, VersionId: {$object['VersionId']}\n"; }

例 1: (バージョニング非対応のバケットからの)複数オブジェクトの削除

以下の PHP コード例では、deleteObjects() メソッドを使用して、バージョニング非対応のバケットから複数のオブジェクトを削除しています。

この例は以下のアクションを実行します。

  1. Aws\S3\S3Client::putObject() メソッドを使用して、少数のオブジェクトを作成します。

  2. Aws\S3\S3Client::listObjects() メソッドを使用して、作成したオブジェクトをリストし、それらのオブジェクトのキーを取得します。

  3. Aws\S3\S3Client::deleteObjects() メソッドを使用して、バージョニング非対応のバケットからのオブジェクト削除を実行します。

PHP 例の実行については、このガイド内の「PHP サンプルの実行」を参照してください。

Copy
<?php // Include the AWS SDK using the Composer autoloader. require 'vendor/autoload.php'; use Aws\S3\S3Client; $bucket = '*** Your Bucket Name ***'; // Instantiate the client. $s3 = S3Client::factory(); // 1. Create a few objects. for ($i = 1; $i <= 3; $i++) { $s3->putObject(array( 'Bucket' => $bucket, 'Key' => "key{$i}", 'Body' => "content {$i}", )); } // 2. List the objects and get the keys. $keys = $s3->listObjects(array('Bucket' => $bucket)) ->getPath('Contents/*/Key'); // 3. Delete the objects. $result = $s3->deleteObjects(array( 'Bucket' => $bucket, 'Objects' => array_map(function ($key) { return array('Key' => $key); }, $keys), ));

例 2: Multi-Object Delete(バージョニング対応のバケット)

以下の PHP コード例では、deleteObjects() メソッドを使用して、バージョニング対応のバケットから複数のオブジェクトを削除します。

この例は以下のアクションを実行します。

  1. Aws\S3\S3Client::putBucketVersioning() メソッドを使用して、バケットのバージョニングを有効化します。

  2. Aws\S3\S3Client::putObject() メソッドを使用して、オブジェクトのバージョンをいくつか作成します。

  3. Aws\S3\S3Client::listObjectVersions() メソッドを使用して、作成したバージョンのオブジェクトをリストし、それらのオブジェクトのキーとバージョン ID を取得します。

  4. 取得したキーとバージョン ID と共に Aws\S3\S3Client::deleteObjects() を使用して、バージョニング対応のバケットからオブジェクトを削除します。

  5. Aws\S3\S3Client::putBucketVersioning() メソッドを使用して、バケットのバージョニングを無効化します。

PHP 例の実行については、このガイド内の「PHP サンプルの実行」を参照してください。

Copy
<?php // Include the AWS SDK using the Composer autoloader. require 'vendor/autoload.php'; use Aws\S3\S3Client; $bucket = '*** Your Bucket Name ***'; $keyname = '*** Your Object Key ***'; // Instantiate the client. $s3 = S3Client::factory(); // 1. Enable object versioning for the bucket. $s3->putBucketVersioning(array( 'Bucket' => $bucket, 'Status' => 'Enabled', )); // 2. Create a few versions of an object. for ($i = 1; $i <= 3; $i++) { $s3->putObject(array( 'Bucket' => $bucket, 'Key' => $keyname, 'Body' => "content {$i}", )); } // 3. List the objects versions and get the keys and version IDs. $versions = $s3->listObjectVersions(array('Bucket' => $bucket)) ->getPath('Versions'); // 4. Delete the object versions. $result = $s3->deleteObjects(array( 'Bucket' => $bucket, 'Objects' => array_map(function ($version) { return array( 'Key' => $version['Key'], 'VersionId' => $version['VersionId'] ); }, $versions), )); echo "The following objects were deleted successfully:\n"; foreach ($result['Deleted'] as $object) { echo "Key: {$object['Key']}, VersionId: {$object['VersionId']}\n"; } echo "\nThe following objects could not be deleted:\n"; foreach ($result['Errors'] as $object) { echo "Key: {$object['Key']}, VersionId: {$object['VersionId']}\n"; } // 5. Suspend object versioning for the bucket. $s3->putBucketVersioning(array( 'Bucket' => $bucket, 'Status' => 'Suspended', ));

関連リソース

このページの内容: