AWS SDK for PHP バージョン 3 の設定 - AWS SDK for PHP

AWS SDK for PHP バージョン 3 の設定

このガイドでは、クライアントコンストラクタのオプションについて説明します。これらのオプションは、クライアントコンストラクタまたは Aws\Sdk クラスで指定できます。特定のタイプのクライアントに指定されるオプションの配列は、作成するクライアントによって異なります。これらのカスタムクライアント設定オプションについては、各クライアントの API ドキュメントで説明されています。

一部の設定オプションは、環境変数または AWS 設定ファイルに基づいてデフォルト値をチェックして使用することに注意してください。デフォルトでは、チェックされる設定ファイルは、ホームディレクトリの .aws/configで、通常、~/.aws/config です。ただし、環境変数 AWS_CONFIG_FILE を使用して、デフォルトの設定ファイルの場所を設定できます。これは、open_basedir などで特定のディレクトリへのファイルアクセスを制限する場合に特に便利です。

以下の例では、Amazon S3 のクライアントコンストラクタにオプションを渡す方法を示しています。

use Aws\S3\S3Client; $options = [ 'region' => 'us-west-2', 'version' => '2006-03-01', 'signature_version' => 'v4' ]; $s3Client = new S3Client($options);

クライアントの作成の詳細については、「基本使用法ガイド」を参照してください。

api_provider

タイプ

callable

タイプ、サービス、およびバージョン引数を受け入れて、対応する設定データの配列を返す、PHP の呼び出し可能関数。タイプの値は apiwaiterpaginator のいずれかです。

デフォルトでは、SDK は、SDK の Aws\Api\FileSystemApiProvider フォルダから API ファイルをロードする src/data のインスタンスを使用します。

認証情報

タイプ

array|Aws\CacheInterface|Aws\Credentials\CredentialsInterface|bool|callable

特定の認証情報インスタンスを使用するための Aws\Credentials\CredentialsInterface オブジェクトを渡します。

$credentials = new Aws\Credentials\Credentials('key', 'secret'); $s3 = new Aws\S3\S3Client([ 'version' => 'latest', 'region' => 'us-west-2', 'credentials' => $credentials ]);

credentials オプションを指定しない場合、SDK は環境からの認証情報のロードを以下の順序で試行します。

  1. 環境変数から認証情報をロードする

  2. credentials.ini ファイルから認証情報をロードする

  3. IAM ロールから認証情報をロードします。

Null 認証情報を使用し、リクエストに署名しないように、false を渡します。

$s3 = new Aws\S3\S3Client([ 'version' => 'latest', 'region' => 'us-west-2', 'credentials' => false ]);

関数を使用して認証情報を作成するために、呼び出し可能な認証情報プロバイダ関数を渡します。

use Aws\Credentials\CredentialProvider; // Only load credentials from environment variables $provider = CredentialProvider::env(); $s3 = new Aws\S3\S3Client([ 'version' => 'latest', 'region' => 'us-west-2', 'credentials' => $provider ]);

複数のプロセスにわたってデフォルトプロバイダーチェーンで返される値をキャッシュするために、Aws\CacheInterface のインスタンスにキャッシュされた認証情報を渡します。

use Aws\Credentials\CredentialProvider; use Aws\DoctrineCacheAdapter; use Doctrine\Common\Cache\ApcuCache; $cache = new DoctrineCacheAdapter(new ApcuCache); $provider = CredentialProvider::defaultProvider(); $cachedProvider = CredentialProvider::cache($provider, $cache); $s3 = new Aws\S3\S3Client([ 'version' => 'latest', 'region' => 'us-west-2', 'credentials' => $cachedProvider ]);

クライアントへの認証情報の提供の詳細については、「AWS SDK for PHP バージョン 3 の認証情報」を参照してください。

注記

認証情報のロードおよび検証は、それが使用されるときまで遅延されます。

デバッグ

bool|array

各転送に関するデバッグ情報を出力します。デバッグ情報には、トランザクションが準備されネットワーク経由で送信されるときの、トランザクションの状態の変更に関する情報が含まれています。また、デバッグ出力には、クライアントで使用される特定の HTTP ハンドラー (例: cURL のデバッグ出力) に関する情報も含まれています。

true に設定すると、リクエストの送信時にデバッグ情報が表示されます。

$s3 = new Aws\S3\S3Client([ 'version' => 'latest', 'region' => 'us-west-2', 'debug' => true ]); // Perform an operation to see the debug output $s3->listBuckets();

または、以下のキーを持つ連想配列を指定できます。

logfn (callable)

ログメッセージで呼び出される関数。デフォルトでは、PHP の echo 関数が使用されます。

stream_size (int)

ストリームのサイズがこの数より大きい場合、ストリームデータは記録されません。0 に設定すると、ストリームデータは一切記録されません。

scrub_auth (bool)

false に設定すると、記録されたメッセージでの認証データのスクラブが無効になります (つまり、AWS アクセスキー ID や署名が logfn に渡されます)。

http (bool)

false に設定すると、低レベルの HTTP ハンドラー (例: cURL の詳細出力) の「debug」機能が無効になります。

auth_headers (array)

置き換え先の値にマッピングされている、置き換えるヘッダーの、キーと値のマッピングに設定します。scrub_authtrue に設定されていない場合、これらの値は使用されません。

auth_strings (array)

置き換え先にマッピングするための正規表現の、キーと値のマッピングに設定します。scrub_authtrue に設定されている場合に、これらの値は認証データスクラバーで使用されます。

$s3 = new Aws\S3\S3Client([ 'version' => 'latest', 'region' => 'us-west-2', 'debug' => [ 'logfn' => function ($msg) { echo $msg . "\n"; }, 'stream_size' => 0, 'scrub_auth' => true, 'http' => true, 'auth_headers' => [ 'X-My-Secret-Header' => '[REDACTED]', ], 'auth_strings' => [ '/SuperSecret=[A-Za-z0-9]{20}/i' => 'SuperSecret=[REDACTED]', ], ] ]); // Perform an operation to see the debug output $s3->listBuckets();
注記

デバッグ出力は、AWS SDK for PHP での問題を診断する場合に非常に役立ちます。SDK に関する問題をオープンする場合は、分離した障害ケースのデバッグ出力を提供してください。

stats

タイプ

bool|array

転送の統計情報を、SDK オペレーションによって返されるエラーと結果にバインドします。

true に設定すると、送信されたリクエストに関する統計情報が収集されます。

$s3 = new Aws\S3\S3Client([ 'version' => 'latest', 'region' => 'us-west-2', 'stats' => true ]); // Perform an operation $result = $s3->listBuckets(); // Inspect the stats $stats = $result['@metadata']['transferStats'];

または、以下のキーを持つ連想配列を指定できます。

retries (bool)

true に設定すると、再試行に関するレポートが有効になります。デフォルトでは、再試行の統計情報が収集されて、返されます。

http (bool)

true に設定すると、低レベルの HTTP アダプタからの統計情報 (例: GuzzleHttpTransferStats で返される値) の収集が有効になります。このオプションの効果が生じるには、HTTP ハンドラーで __on_transfer_stats オプションがサポートされている必要があります。HTTP 統計情報は連想配列のインデックス付き配列として返されます。それぞれの連想配列には、1 つのリクエストに対して、クライアントの HTTP ハンドラーによって返される転送統計情報が含まれています。デフォルトでは無効になっています。

リクエストが再試行された場合、各リクエストの転送統計情報が返され、最初のリクエストの統計情報が $result['@metadata']['transferStats']['http'][0] に、2 回目のリクエストの統計情報が $result['@metadata']['transferStats']['http'][1] に入っています (以下同様)。

timer (bool)

true に設定すると、1 つのオペレーションの合計所要時間 (秒単位) をレポートするコマンドタイマーが有効になります。デフォルトでは無効になっています。

$s3 = new Aws\S3\S3Client([ 'version' => 'latest', 'region' => 'us-west-2', 'stats' => [ 'retries' => true, 'timer' => false, 'http' => true, ] ]); // Perform an operation $result = $s3->listBuckets(); // Inspect the HTTP transfer stats $stats = $result['@metadata']['transferStats']['http']; // Inspect the number of retries attempted $stats = $result['@metadata']['transferStats']['retries_attempted']; // Inspect the total backoff delay inserted between retries $stats = $result['@metadata']['transferStats']['total_retry_delay'];

endpoint

タイプ

string

ウェブサービスの完全な URI。これは、アカウント固有のエンドポイントを使用する MediaConvert などのサービスに必須です。これらのサービスの場合、このエンドポイントをリクエストするには :doc`describeEndpoints`<emc-examples-getendpoint>` メソッドを使用します。

これは、カスタムエンドポイント (例: Amazon S3 または Amazon DynamoDB Local のローカルバージョン) に接続する場合にのみ必要です。

Amazon DynamoDB ローカルへの接続の例を次に示します。

$client = new Aws\DynamoDb\DynamoDbClient([ 'version' => '2012-08-10', 'region' => 'us-east-1' 'endpoint' => 'http://localhost:8000' ]);

使用可能な AWS リージョンとエンドポイントの一覧については、「AWS リージョンとエンドポイント」を参照してください。

endpoint_provider

タイプ

callable

「service」および「region」キーを含むオプションのハッシュを受け入れる、省略可能な呼び出し可能関数です。NULL またはエンドポイントデータのハッシュ (「エンドポイント」キーが必要) を返します。

最小限のエンドポイントプロバイダーを作成する方法の例を次に示します。

$provider = function (array $params) { if ($params['service'] == 'foo') { return ['endpoint' => $params['region'] . '.example.com']; } // Return null when the provider cannot handle the parameters return null; });

endpoint_discovery

タイプ

array|Aws\CacheInterface|Aws\EndpointDiscovery\ConfigurationInterface|callable

エンドポイント検出では、エンドポイント検出をサポートするサービス API に対する正しいエンドポイントを識別して接続します。エンドポイント検出をサポートするが、これを必要としないサービスの場合、クライアントの作成中に endpoint_discovery を有効にします。サービスがエンドポイント検出をサポートしていない場合、この設定は無視されます。

Aws\EndpointDiscovery\ConfigurationInterface

サービスが指定するオペレーションのサービス API の適切なエンドポイントへの自動接続を可能にするオプションの設定プロバイダー。

Aws\EndpointDiscovery\Configuration オブジェクトでは 2 つのオプションを使用できます。1 つはエンドポイント検出が有効な場合にそれを示すブール値「enabled」で、もう 1 つはエンドポイントキャッシュのキーの最大数を示す整数「cache_limit」です。

作成されるクライアントごとに、エンドポイント検出の特定の設定を使用するために Aws\EndpointDiscovery\Configuration オブジェクトを渡します。

use Aws\EndpointDiscovery\Configuration; use Aws\S3\S3Client; $enabled = true; $cache_limit = 1000; $config = new Aws\EndpointDiscovery\Configuration ( $enabled, $cache_limit ); $s3 = new Aws\S3\S3Client([ 'version' => 'latest', 'region' => 'us-east-2', 'endpoint_discovery' => $config, ]);

複数のプロセスにわたってエンドポイント検出で返される値をキャッシュするために、Aws\CacheInterface のインスタンスを渡します。

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

エンドポイント検出に配列を渡します。

use Aws\S3\S3Client; $s3 = new S3Client([ 'version' => 'latest', 'region' => 'us-west-2', 'endpoint_discovery' => [ 'enabled' => true, 'cache_limit' => 1000 ], ]);

handler

タイプ

callable

コマンドオブジェクトとリクエストオブジェクトを受け入れて、GuzzleHttp\Promise\PromiseInterface オブジェクトで満たすかまたは Aws\ResultInterface で拒否する promise (Aws\Exception\AwsException) を返すハンドラーです。ハンドラーはターミナルであり、コマンドを満たすことになっているため、ハンドラーは next ハンドラーを受け入れません。ハンドラーが指定されていない場合は、デフォルトの Guzzle ハンドラーが使用されます。

Aws\MockHandler を使用して、模擬結果を返すか、または Mock 例外をスローできます。結果または例外をキューに追加すると、MockHandler は FIFO ルールに従ってそれをキューから削除します。

use Aws\Result; use Aws\MockHandler; use Aws\DynamoDb\DynamoDbClient; use Aws\CommandInterface; use Psr\Http\Message\RequestInterface; use Aws\Exception\AwsException; $mock = new MockHandler(); // Return a mocked result $mock->append(new Result(['foo' => 'bar'])); // You can provide a function to invoke; here we throw a mock exception $mock->append(function (CommandInterface $cmd, RequestInterface $req) { return new AwsException('Mock exception', $cmd); }); // Create a client with the mock handler $client = new DynamoDbClient([ 'region' => 'us-west-2', 'version' => 'latest', 'handler' => $mock ]); // Result object response will contain ['foo' => 'bar'] $result = $client->listTables(); // This will throw the exception that was enqueued $client->listTables();

http

タイプ

array

SDK によって作成される HTTP リクエストと転送に適用する HTTP オプションの配列に設定します。

この SDK では以下の設定オプションがサポートされています。

cert

string|array

PEM 形式のクライアント側の証明書を指定します。

  • 証明書ファイルのみへのパスの文字列として設定します。

use Aws\S3\S3Client; $client = new S3Client([ 'region' => 'us-west-2', 'version' => 'latest', 'http' => ['cert' => '/path/to/cert.pem'] ]);
  • パスとパスワードを含む配列として設定します。

use Aws\S3\S3Client; $client = new S3Client([ 'region' => 'us-west-2', 'version' => 'latest', 'http' => [ 'cert' => ['/path/to/cert.pem', 'password'] ] ]);

connect_timeout

サーバーへの接続の試行時に待機する秒数を記述する浮動小数点。0 に設定すると、無期限に待機します (デフォルト動作)。

use Aws\DynamoDb\DynamoDbClient; // Timeout after attempting to connect for 5 seconds $client = new DynamoDbClient([ 'region' => 'us-west-2', 'version' => 'latest', 'http' => [ 'connect_timeout' => 5 ] ]);

デバッグ

bool|resource

デバッグ情報を出力するように、基になる HTTP ハンドラーに指示します。HTTP ハンドラーから提供されるデバッグ情報は、HTTP ハンドラーごとに異なります。

  • true を渡すと、デバッグ出力は STDOUT に書き込まれます。

  • resource で返された fopen を渡すと、デバッグ出力は特定の PHP ストリームリソースに書き込まれます。

decode_content

bool

圧縮されたレスポンスの本文を解凍するように、基になる HTTP ハンドラーに指示します。有効になっていない場合、圧縮されたレスポンス本文は GuzzleHttp\Psr7\InflateStream を使用して解凍されます。

注記

SDK のデフォルト HTTP ハンドラーでは、コンテンツのデコードはデフォルトで有効になっています。下位互換性のために、このデフォルトは変更できません。圧縮されたファイルを Amazon S3 に保存する場合は、S3 クライアントレベルでコンテンツのデコードを無効にすることをお勧めします。

use Aws\S3\S3Client; use GuzzleHttp\Psr7\InflateStream; $client = new S3Client([ 'region' => 'us-west-2', 'version' => 'latest', 'http' => ['decode_content' => false], ]); $result = $client->getObject([ 'Bucket' => 'my-bucket', 'Key' => 'massize_gzipped_file.tgz' ]); $compressedBody = $result['Body']; // This content is still gzipped $inflatedBody = new InflateStream($result['Body']); // This is now readable

delay

int

リクエストを送信する前の遅延の時間数 (ミリ秒単位)。これは、リクエストを再試行する前に遅延するためによく使用されます。

expect

bool|string

このオプションは、基盤となる HTTP ハンドラーに渡されます。デフォルトでは、リクエストの本文が 1 MB を超えたときに Expect: 100-Continue ヘッダーが設定されます。true または false により、すべてのリクエストでヘッダーが有効または無効になります。整数を使用する場合、この設定を超える本文を持つリクエストのみが、ヘッダーを使用します。整数として使用した場合、本文のサイズが不明なときは Expect ヘッダーが送信されます。

警告

Expect ヘッダーを無効にすると、サービスは認証エラーやその他のエラーを返すことができなくなる場合があります。このオプションの設定には注意が必要です。

progress

callable

転送の進行状況が作成されたときに呼び出す関数を定義します。この関数は以下の次の引数を受け入れます。

  1. ダウンロードすることになっている総バイト数。

  2. これまでにダウンロード済みのバイト数。

  3. アップロードすることになっている総バイト数。

  4. これまでにアップロード済みのバイト数。

use Aws\S3\S3Client; $client = new S3Client([ 'region' => 'us-west-2', 'version' => 'latest' ]); // Apply the http option to a specific command using the "@http" // command parameter $result = $client->getObject([ 'Bucket' => 'my-bucket', 'Key' => 'large.mov', '@http' => [ 'progress' => function ($expectedDl, $dl, $expectedUl, $ul) { printf( "%s of %s downloaded, %s of %s uploaded.\n", $expectedDl, $dl, $expectedUl, $ul ); } ] ]);

proxy

string|array

proxy オプションを使用することによって、プロキシを介して AWS のサービスと接続できます。

  • すべてのタイプの URI に対するプロキシに接続するための文字列値を指定します。このプロキシ文字列値には、スキーム、ユーザー名、およびパスワードを含めることができます。たとえば、"http://username:password@192.168.16.1:10" と指定します。

  • プロキシ設定の連想配列を指定します。キーは URI のスキームであり、値は指定の URI に対するプロキシです (つまり、「http」と「https」のエンドポイントに対して異なるプロキシを指定できます)。

use Aws\DynamoDb\DynamoDbClient; // Send requests through a single proxy $client = new DynamoDbClient([ 'region' => 'us-west-2', 'version' => 'latest', 'http' => [ 'proxy' => 'http://192.168.16.1:10' ] ]); // Send requests through a different proxy per scheme $client = new DynamoDbClient([ 'region' => 'us-west-2', 'version' => 'latest', 'http' => [ 'proxy' => [ 'http' => 'tcp://192.168.16.1:10', 'https' => 'tcp://192.168.16.1:11', ] ] ]);

HTTP_PROXY 環境変数を使用して「http」プロトコル固有のプロキシを、HTTPS_PROXY 環境変数を使用して「https」固有のプロキシをそれぞれ設定できます。

sink

resource|string|Psr\Http\Message\StreamInterface

sink オプションは、オペレーションのレスポンスデータのダウンロード先を制御します。

  • resource で返される fopen を指定すると、レスポンス本文は PHP ストリームにダウンロードされます。

  • ディスク上のファイルのパスを string 値として指定すると、レスポンス本文はディスク上の特定のファイルにダウンロードされます。

  • Psr\Http\Message\StreamInterface を指定すると、レスポンス本文は特定の PSR ストリームオブジェクトにダウンロードされます。

注記

SDK はデフォルトでは、レスポンス本文を PHP の一時ストリームにダウンロードします。つまり、本文のサイズが 2 MB に達するまでデータはメモリに保持され、2 MB に達した時点でそのデータはディスク上の一時ファイルに書き込まれます。

synchronous

bool

synchronous オプションを true に設定すると、結果をブロックする予定であることが、基になる HTTP ハンドラーに通知されます。

stream

bool

true に設定すると、ウェブサービスからのレスポンスの本文を、最初にすべてダウンロードするのではなく、ストリーミングする予定であることが、基になる HTTP ハンドラーに通知されます。たとえば、Amazon S3 のストリームラッパークラスでは、データが確実にストリーミングされるように、このオプションを当てにしています。

timeout

float

リクエストのタイムアウトを秒数で記述する浮動小数点。0 に設定すると、無期限に待機します (デフォルト動作)。

use Aws\DynamoDb\DynamoDbClient; // Timeout after 5 seconds $client = new DynamoDbClient([ 'region' => 'us-west-2', 'version' => 'latest', 'http' => [ 'timeout' => 5 ] ]);

verify

bool|string

verifyhttp オプションを使用して、SDK でのピアの SSL/TLS 証明書検証動作をカスタマイズできます。

  • true に設定すると、ピアの SSL/TLS 証明書検証が有効になり、オペレーティングシステムで提供されているデフォルトの CA バンドルが使用されます。

  • false に設定すると、ピアの証明書検証が無効になります(これは安全ではありません)。

  • CA 証明書バンドルのパスを指定する文字列に設定すると、カスタム CA バンドルを使用した検証が有効になります。

指定した CA バンドルがシステムに見つからずにエラーを受け取った場合は、SDK に対して CA バンドルのパスを指定します。特定の CA バンドルを使用する必要がない場合は、ここからダウンロードできる、一般的に使用される CA バンドル (cURL のメンテナンス担当者によって維持されている) が Mozilla によって提供されています。使用可能な CA バンドルをディスク上に準備したら、PHP の .ini 設定 openssl.cafile でそのファイルのパスを指すように設定できます。そうすると、verify リクエストオプションを省略できます。SSL 証明書の詳細については、cURL ウェブサイトを参照してください。

use Aws\DynamoDb\DynamoDbClient; // Use a custom CA bundle $client = new DynamoDbClient([ 'region' => 'us-west-2', 'version' => 'latest', 'http' => [ 'verify' => '/path/to/my/cert.pem' ] ]); // Disable SSL/TLS verification $client = new DynamoDbClient([ 'region' => 'us-west-2', 'version' => 'latest', 'http' => [ 'verify' => false ] ]);

http_handler

callable

http_handler オプションは、SDK を他の HTTP クライアントと統合するために使用されます。http_handler オプションは、Psr\Http\Message\RequestInterface オブジェクトと、コマンドに適用する http オプションの配列を受け入れて、GuzzleHttp\Promise\PromiseInterface オブジェクトで満たすかまたは以下の例外データで拒否する Psr\Http\Message\ResponseInterface オブジェクトを返す関数です。

  • exception - (\Exception) 発生した例外。

  • response - (Psr\Http\Message\ResponseInterface) 受信したレスポンス (存在する場合)。

  • connection_error - (bool) true に設定すると、そのエラーが接続エラーとしてマークされます。また、この値を true 設定すると、SDK が必要に応じてオペレーションを自動的に再試行できるようになります。

SDK は、指定された http_handlerhandler オブジェクトでラップすることによって、指定された http_handler を通常の Aws\WrappedHttpHandler オプションに自動的に変換します。

デフォルトでは、SDK は Guzzle を HTTP ハンドラーとして使用します。ここで別の HTTP ハンドラーを指定するか、Guzzle クライアントに独自のカスタム定義オプションを提供することができます。

TLS バージョンの設定

1 つのユースケースは、Curl が環境にインストールされていることを前提に、Curl で Guzzle が使用する TLS バージョンを設定することです。サポートされている TLS のバージョンに関する Curl バージョンの制約に注意してください。デフォルトでは、最新バージョンが使用されます。TLS バージョンが明示的に設定されていて、リモートサーバーがこのバージョンをサポートしていない場合、以前の TLS バージョンを使用する代わりにエラーが発生します。

debug クライアントオプションを true に設定し、SSL 接続の出力を確認することによって、特定のクライアント操作に使用されている TLS のバージョンを決定できます。その行は次のようになります。SSL connection using TLSv1.2

Guzzle 6 で TLS 1.2を設定する例:

use Aws\DynamoDb\DynamoDbClient; use Aws\Handler\GuzzleV6\GuzzleHandler; use GuzzleHttp\Client; $handler = new GuzzleHandler( new Client([ 'curl' => [ CURLOPT_SSLVERSION => CURL_SSLVERSION_TLSv1_2 ] ]) ); $client = new DynamoDbClient([ 'region' => 'us-west-2', 'version' => 'latest', 'http_handler' => $handler ]);
注記

http_handler オプションは、指定されたどの handler オプションよりも優先されます。

profile

string

ホームディレクトリにある AWS 認証情報ファイルから認証情報が作成されるときに使用されるプロファイルを指定できます。この設定は AWS_PROFILE 環境変数をオーバーライドします。

注記

「profile」を指定すると「credentials」キーは無視されます。

// Use the "production" profile from your credentials file $ec2 = new Aws\Ec2\Ec2Client([ 'version' => '2014-10-01', 'region' => 'us-west-2', 'profile' => 'production' ]);

認証情報の設定および .ini ファイル形式の詳細については、「AWS SDK for PHP バージョン 3 の認証情報」を参照してください。

リージョン

string

必須

true

接続先の AWS リージョン。利用可能なリージョンのリストについては、「AWS のリージョンとエンドポイント」を参照してください。

// Set the Region to the EU (Frankfurt) Region $s3 = new Aws\S3\S3Client([ 'region' => 'eu-central-1', 'version' => '2006-03-01' ]);

retries

int|array|Aws\CacheInterface|Aws\Retry\ConfigurationInterface|callable

デフォルト値

int(3)

クライアントに対して再試行モードと許可される最大再試行回数を設定します。0 を渡すと、再試行が無効になります。

次の 3 つの再試行モードは次のとおりです。* legacy - デフォルトのレガシー再試行実装 * standard - 成功する可能性の低い再試行を防ぐために、再試行のクォータシステム

を追加する

  • adaptive - 標準モードに基づいて構築され、クライアント側のレートリミッターを追加します。このモードは実験的と見なされることに注意してください。

再試行の設定は、モードと各リクエストに使用される最大試行回数で構成されます。設定は、次の優先順位に従って、いくつかの異なる場所で設定できます。

優先順位

再試行設定の優先順位は次のとおりです (1 は 2-3 を上書きします)。

  1. クライアント設定オプション

  2. 環境変数

  3. AWS 共有 Config ファイル

環境変数

  • AWS_RETRY_MODElegacystandard、または adaptive に設定します。

  • AWS_MAX_ATTEMPTS - リクエストあたりの最大試行回数の整数値に設定

共有 Config ファイルキー

  • retry_modelegacystandard、または adaptive に設定します。

  • max_attempts - リクエストあたりの最大試行回数の整数値に設定

クライアント設定

次の例では、Amazon DynamoDB クライアントの再試行を無効にしています。

// Disable retries by setting "retries" to 0 $client = new Aws\DynamoDb\DynamoDbClient([ 'version' => '2012-08-10', 'region' => 'us-west-2', 'retries' => 0 ]);

次の例では、整数を渡します。デフォルトでは、再試行回数が渡された状態で legacy モードになります。

// Disable retries by setting "retries" to 0 $client = new Aws\DynamoDb\DynamoDbClient([ 'version' => '2012-08-10', 'region' => 'us-west-2', 'retries' => 6 ]);
Aws\Retry\Configuration オブジェクトは、2 つのパラメータ、

再試行モードとリクエストごとの最大試行回数の整数を受け付けます。この例では、

再試行設定の Aws\Retry\Configuration オブジェクトを渡します。

use Aws\EndpointDiscovery\Configuration; use Aws\S3\S3Client; $enabled = true; $cache_limit = 1000; $config = new Aws\Retry\Configuration('adaptive', 10); $s3 = new Aws\S3\S3Client([ 'version' => 'latest', 'region' => 'us-east-2', 'retries' => $config, ]);

この例では、再試行設定のために配列を渡します。

use Aws\S3\S3Client; $s3 = new S3Client([ 'version' => 'latest', 'region' => 'us-west-2', 'retries' => [ 'mode' => 'standard, 'max_attempts' => 7 ], ]);

この例では、Aws\CacheInterface のインスタンスを渡して、デフォルトの再試行設定プロバイダーから返された値をキャッシュします。

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

scheme

string

デフォルト値

string(5) "https"

接続するときに使用される URI スキーム。SDK では、デフォルトでは「https」エンドポイント (つまり、SSL/TLS 接続) が使用されます。scheme を「http」に設定することによって、暗号化されていない「http」エンドポイントでのサービスへの接続を試行できます。

$s3 = new Aws\S3\S3Client([ 'version' => '2006-03-01', 'region' => 'us-west-2', 'scheme' => 'http' ]);

エンドポイントの一覧と http スキームをサポートするサービスについては、「AWS のリージョンとエンドポイント」を参照してください。

service

string

必須

true

使用するサービスの名前。SDK で提供されているクライアントを使用する場合は、この値はデフォルトで指定されています (例: Aws\S3\S3Client)。このオプションは、SDK でまだ公開されていないがディスク上ですでに使用可能なサービスをテストするときに便利です。

signature_provider

callable

署名バージョン名 (例: v4)、サービス名、および AWS リージョンを受け入れて、Aws\Signature\SignatureInterface オブジェクトを返すか、または指定されたパラメーターの署名者をプロバイダが作成できる場合は NULL を返す呼び出し可能関数。このプロバイダは、クライアントで使用される署名者を作成するために使用されます。

SDK の Aws\Signature\SignatureProvider クラスでは、カスタマイズされた署名プロバイダを作成するために使用できるさまざまな機能が提供されています。

signature_version

string

サービスで使用されるカスタム署名バージョンを表す文字列 (例: v4)。オペレーション署名バージョンによって、このリクエストされた署名が必要に応じてオーバーライドされることがあります。

次の例は、署名バージョン 4 を使用するように Amazon S3 クライアントを設定する方法を示しています。

// Set a preferred signature version $s3 = new Aws\S3\S3Client([ 'version' => '2006-03-01', 'region' => 'us-west-2', 'signature_version' => 'v4' ]);
注記

クライアントで使用する signature_provider は、指定した signature_version オプションを作成できる必要があります。SDK で使用されるデフォルトの signature_provider は、「v4」および「anonymous」署名バージョンの署名オブジェクトを作成できます。

ua_append

string|string[]

デフォルト値

[]

HTTP ハンドラーに渡されるユーザーエージェント文字列に追加される、文字列または文字列の配列。

validate

bool|array

デフォルト値

bool(true)

false に設定すると、クライアント側のパラメーター検証が無効になります。検証をオフにすると、クライアントのパフォーマンスがわずかに向上することがありますが、その違いは無視できる程度です。

// Disable client-side validation $s3 = new Aws\S3\S3Client([ 'version' => '2006-03-01', 'region' => 'eu-west-1', 'validate' => false ]);

検証オプションの連想配列に設定すると、以下の特定の検証の制約が有効になります。

  • required - 必須パラメーターが存在することを検証します (デフォルトでオン)。

  • min - 値の最小長さを検証します (デフォルトでオン)。

  • max - 値の最大長を検証します。

  • pattern - 値が正規表現と一致することを検証します。

// Validate only that required values are present $s3 = new Aws\S3\S3Client([ 'version' => '2006-03-01', 'region' => 'eu-west-1', 'validate' => ['required' => true] ]);

バージョン

string

必須

true

使用するウェブサービスのバージョン (例: 2006-03-01)。

「version」設定値は必須です。バージョン制約を指定すると、サービスに対して行われた互換性を破る変更の影響を受けないことが保証されます。たとえば、Amazon S3 を使用する場合に、使用する API バージョンを 2006-03-01 に限定することができます。

$s3 = new Aws\S3\S3Client([ 'version' => '2006-03-01', 'region' => 'us-east-1' ]);

使用可能な API バージョンの一覧については、各クライアントの API ドキュメントのページを参照してください。特定の API バージョンをロードできない場合は、SDK のコピーの更新が必要になることがあります。

「version」の設定値に文字列 latest を指定すると、クライアントの API プロバイダで見つかった (デフォルトの api_provider では、API モデルの SDK の src/data ディレクトリがスキャンされる)、使用可能な最新の API バージョンが使用されます。

// Use the latest version available $s3 = new Aws\S3\S3Client([ 'version' => 'latest', 'region' => 'us-east-1' ]);
警告

API の更新が含まれている新しいマイナーバージョンの SDK を取り込むと本稼働アプリケーションが中断される可能性があるため、本稼働アプリケーションで latest を使用することはお勧めしません。