Amazon Simple Storage Service
開発者ガイド (API バージョン 2006-03-01)

AWS SDK for PHP を使用したキーのリスト作成

このトピックでは、バージョン 3 の AWS SDK for PHP のクラスを使用して、Amazon S3 バケットに含まれるオブジェクトキーをリストする手順を示します。

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

AWS SDK for PHP を使用してバケットに含まれるオブジェクトキーをリストするには、まずバケットに含まれるオブジェクトをリストし、次にリストされた各オブジェクトからキーを抽出します。バケットのオブジェクトキーをリストする際、低レベルの Aws\S3\S3Client::listObjects() メソッドを使用するか、または高レベルの Aws\ResultPaginator クラスを使用するかを選択できます。

低レベルの listObjects() メソッドは基盤となる Amazon S3 REST API に対応しています。1 つの listObjects() リクエストは、最大 1,000 オブジェクトからなるページを返します。バケットに 1,000 を超えるオブジェクトがある場合はレスポンスが切り捨てられるため、次の 1,000 個のオブジェクトのセットを取得するにはもう 1 つの listObjects() リクエストを送信する必要があります。

バケットに含まれるオブジェクトをリストするタスクを多少簡単にするには、高レベルの ListObjects ページネーターを使用します。ListObjects ページネーターを使用してオブジェクトのリストを作成するには、Aws/AwsClientInterface クラスから継承された、Amazon S3 クライアントの getPaginator() メソッドを、1 番目の引数として ListObjects コマンドを、2 番目の引数として、指定したバケットから返されるオブジェクトを格納する array を指定して、実行します。getPaginator() メソッドを ListObjects ページネーターとして使用すると、指定したバケットに含まれるすべてのオブジェクトが返されます。1,000 個までのオブジェクトの制限がないため、レスポンスが切り捨てられるかどうかを心配する必要はありません。

以下のタスクは、PHP Amazon S3 クライアントのメソッドを使用して、リストするオブジェクトキーが含まれるバケットにあるオブジェクトを、リストする手順を示しています。

例 (オブジェクトキーのリスト作成)

以下の PHP コード例は、指定されたバケット内のキーをリストする方法を示しています。これは、まず高レベルの getIterator() メソッドを使用してバケット内のオブジェクトをリストする方法を示し、次にリスト内の各オブジェクトからキーを抽出する方法を示します。また、バケット内のオブジェクトをリストするために低レベルの listObjects() メソッドを実行し、返されたリスト内の各オブジェクトからキーを抽出する方法も示します。 PHP 例の実行については、このガイド内の「PHP サンプルの実行」を参照してください。

<?php require 'vendor/autoload.php'; use Aws\S3\S3Client; use Aws\S3\Exception\S3Exception; $bucket = '*** Your Bucket Name ***'; // Instantiate the client. $s3 = new S3Client([ 'version' => 'latest', 'region' => 'us-east-1' ]); // Use the high-level iterators (returns ALL of your objects). try { $objects = $s3->getPaginator('ListObjects', [ 'Bucket' => $bucket ]); echo "Keys retrieved!" . PHP_EOL; foreach ($objects as $object) { echo $object['Key'] . PHP_EOL; } } catch (S3Exception $e) { echo $e->getMessage() . PHP_EOL; } // Use the plain API (returns ONLY up to 1000 of your objects). try { $result = $s3->listObjects([ 'Bucket' => $bucket ]); echo "Keys retrieved!" . PHP_EOL; foreach ($result['Contents'] as $object) { echo $object['Key'] . PHP_EOL; } } catch (S3Exception $e) { echo $e->getMessage() . PHP_EOL; }

関連リソース

このページの内容: