メニュー
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 が正しくインストールされていることを前提としています。

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

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

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

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

オブジェクトキーのリスト

1

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

2

高レベルの Amazon S3 クライアントの getIterator() メソッドを、1 番目の引数として ListObjects コマンドを、2 番目の引数として、指定したバケットから返されるオブジェクトを格納する array を指定して、実行します。

または、低レベルの Amazon S3 クライアントの listObjects() メソッドを、引数として、指定したバケットから返されるオブジェクトを格納する array を指定して、実行します。

3

返されたオブジェクトのリストの各オブジェクトから、オブジェクトキーを抽出します。

以下の PHP コード例は、リストするオブジェクトキーが含まれるバケットにあるオブジェクトを、リストする方法を示しています。

Copy
use Aws\S3\S3Client; // Instantiate the client. $s3 = S3Client::factory(); $bucket = '*** Bucket Name ***'; // Use the high-level iterators (returns ALL of your objects). $objects = $s3->getIterator('ListObjects', array('Bucket' => $bucket)); echo "Keys retrieved!\n"; foreach ($objects as $object) { echo $object['Key'] . "\n"; } // Use the plain API (returns ONLY up to 1000 of your objects). $result = $s3->listObjects(array('Bucket' => $bucket)); echo "Keys retrieved!\n"; foreach ($result['Contents'] as $object) { echo $object['Key'] . "\n"; }

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

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

Copy
<?php // Include the AWS SDK using the Composer autoloader. require 'vendor/autoload.php'; use Aws\S3\S3Client; use Aws\S3\Exception\S3Exception; $bucket = '*** Your Bucket Name ***'; // Instantiate the client. $s3 = S3Client::factory(); // Use the high-level iterators (returns ALL of your objects). try { $objects = $s3->getIterator('ListObjects', array( 'Bucket' => $bucket )); echo "Keys retrieved!\n"; foreach ($objects as $object) { echo $object['Key'] . "\n"; } } catch (S3Exception $e) { echo $e->getMessage() . "\n"; } // Use the plain API (returns ONLY up to 1000 of your objects). try { $result = $s3->listObjects(array('Bucket' => $bucket)); echo "Keys retrieved!\n"; foreach ($result['Contents'] as $object) { echo $object['Key'] . "\n"; } } catch (S3Exception $e) { echo $e->getMessage() . "\n"; }

関連リソース

このページの内容: