AWS SDK for PHP バージョン 3 での Amazon S3 マルチリージョンクライアント - AWS SDK for PHP

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS SDK for PHP バージョン 3 での Amazon S3 マルチリージョンクライアント

AWS SDK for PHP バージョン 3 では、任意のサービスで使用できる汎用マルチリージョンクライアントが提供されています。これにより、ユーザーが任意のコマンドに @region 入力パラメーターを指定することで、コマンドの送信先となる AWS リージョンを指定できるようになります。また、SDK では、特定の Amazon S3 エラーにインテリジェントに応答し、それに応じてコマンドを再ルーティングする、Amazon S3 用のマルチリージョンクライアントも提供されています。これにより、ユーザーは同じクライアントを使用して複数のリージョンと通信できるようになります。この機能は、AWS SDK for PHP バージョン 3 を使用する Amazon S3 ストリームラッパーで、バケットが複数のリージョンに分散している場合に特に役立ちます。

基本的な使用法

Amazon S3 クライアントの基本的な使用パターンは、標準 S3 クライアントとマルチリージョンクライアントのどちらを使用していても同じです。コマンドレベルでの使用法の違いは、@region 入力パラメータを使用して AWS リージョンを指定できることだけです。

// Create a multi-region S3 client $s3Client = (new \Aws\Sdk)->createMultiRegionS3(['version' => 'latest']); // You can also use the client constructor $s3Client = new \Aws\S3\S3MultiRegionClient([ 'version' => 'latest', // Any Region specified while creating the client will be used as the // default Region 'region' => 'us-west-2', ]); // Get the contents of a bucket $objects = $s3Client->listObjects(['Bucket' => $bucketName]); // If you would like to specify the Region to which to send a command, do so // by providing an @region parameter $objects = $s3Client->listObjects([ 'Bucket' => $bucketName, '@region' => 'eu-west-1', ]);
重要

マルチリージョン Amazon S3 クライアントを使用する場合は、永続的なリダイレクト例外は発生しません。標準 Amazon S3 クライアントでは、コマンドが間違ったリージョンに送信されると Aws\S3\Exception\PermanentRedirectException のインスタンスがスローされます。マルチリージョンクライアントでは、その場合に例外は発生せず、コマンドは正しいリージョンに再ディスパッチされます。

バケットリージョンキャッシュ

マルチリージョン Amazon S3 クライアントでは、特定のバケットが存在する AWS リージョンの内部キャッシュが保持されます。デフォルトでは、クライアントごとに独自のインメモリキャッシュがあります。クライアント間またはプロセス間でキャッシュを共有するには、Aws\CacheInterface のインスタンスを bucket_region_cache としてマルチリージョンクライアントに提供します。

use Aws\DoctrineCacheAdapter; use Aws\Sdk; use Doctrine\Common\Cache\ApcuCache; $sdk = new Aws\Sdk([ 'version' => 'latest', 'region' => 'us-west-2', 'S3' => [ 'bucket_region_cache' => new DoctrineCacheAdapter(new ApcuCache), ], ]);