by shigemk2

当面は技術的なことしか書かない

CredentialProvider::defaultProvider

Aws\Credentials\CredentialProvider::defaultProvider はデフォルトの認証情報プロバイダです。このプロバイダは、クライアントの作成時に credentials オプションを指定しなかった場合に使用されます。このプロバイダは、環境変数、.ini ファイル (.aws/credentials ファイルから .aws/config ファイルの順)、インスタンスプロファイル (EcsCredentials から Ec2 メタデータの順) の順で認証情報のロードを試行します。

で、IAMロールにS3権限を付与してEC2に割り当てて(さらにDockerコンテナでコネコネする)場合はこんな書き方。

use Aws\Credentials\CredentialProvider;
use Aws\S3\S3Client;

// Use the default credential provider
$provider = CredentialProvider::defaultProvider();

// Pass the provider to the client
$client = new S3Client([
    'region'      => 'us-west-2',
    'version'     => '2006-03-01',
    'credentials' => $provider
]);

認証情報プロバイダの使用 - AWS SDK for PHP

AWS SDK for PHP バージョン 3 の基本的な使用パターン - AWS SDK for PHP

aws-sdk-php/credentials.rst at master · aws/aws-sdk-php · GitHub

書き方間違えると以下エラーが出がち。

Error retrieving credentials from the instance profile metadata server.