AWS 認証情報ファイルと認証情報プロファイルの使用 - AWS SDK for PHP

AWS 認証情報ファイルと認証情報プロファイルの使用

認証情報ファイルは、アクセスキーが含まれているプレーンテキストファイルです。ファイルは以下の条件を満たす必要があります。

  • アプリケーションを実行している同じコンピュータ上に存在すること。

  • 名前が credentials であること。

  • ホームディレクトリの .aws/ フォルダ内に存在すること。

ホームディレクトリは、オペレーティングシステムごとに異なる場合があります。Windows では、環境変数 %UserProfile% を使用してホームディレクトリを参照できます。Unix に似たシステムでは、環境変数 $HOME または ~ (チルダ) を使用できます。

このファイルを他の SDK やツール (AWS CLI など) で既に使用している場合は、何も変更することなく、この SDK でファイルを使用できます。ツールやアプリケーションごとに異なる認証情報を使用している場合は、プロファイルを使用して複数のアクセスキーを同じ設定ファイル内に設定できます。

すべての PHP コード例では、この方法を使用しています。

AWS 認証情報ファイルを使用することには以下の利点があります。

  • プロジェクトの認証情報がプロジェクトの外部に保存されているため、誤ってバージョン管理にコミットされることはありません。

  • 1 か所で認証情報の複数のセットを定義して名前を付けることができます。

  • 同じ認証情報を複数のプロジェクト間で簡単に再利用できます。

  • 他の AWS SDK およびツールは、この同じ認証情報ファイルをサポートします。これにより、他のツールで証明書を再利用できます。

AWS 認証情報ファイルの形式は次のようになっています。

[default] aws_access_key_id = YOUR_AWS_ACCESS_KEY_ID aws_secret_access_key = YOUR_AWS_SECRET_ACCESS_KEY [project1] aws_access_key_id = ANOTHER_AWS_ACCESS_KEY_ID aws_secret_access_key = ANOTHER_AWS_SECRET_ACCESS_KEY

各セクション ([default][project1]) は個別の認証情報プロファイルを表しています。プロファイルは、SDK 設定ファイルから参照したり、クライアントをインスタンス化するときに profile オプションを指定して参照したりできます。

use Aws\DynamoDb\DynamoDbClient; // Instantiate a client with the credentials from the project1 profile $client = new DynamoDbClient([ 'profile' => 'project1', 'region' => 'us-west-2', 'version' => 'latest' ]);

認証情報またはプロファイルが明示的に SDK に提供されていなくて、環境変数でも認証情報が定義されていない場合に、認証情報ファイルが定義されていると、SDK では「default」プロファイルが使用されます。デフォルトのプロファイルは、AWS_PROFILE 環境変数で別のプロファイル名を指定することによって変更できます。

プロファイルのあるロールを継承する

~/.aws/credentials でロールのプロファイルを定義することで、AWS SDK for PHP を設定して IAM ロールを使用できます。

継承するロールの role_arn を持つ新しいプロファイルを作成します。また、IAM ロールを継承するアクセス許可を持つ認証情報のあるプロファイルの source_profile を含めます。

~/.aws/credentials のプロファイル:

[default] aws_access_key_id = YOUR_AWS_ACCESS_KEY_ID aws_secret_access_key = YOUR_AWS_SECRET_ACCESS_KEY [project1] role_arn = arn:aws:iam::123456789012:role/testing source_profile = default role_session_name = OPTIONAL_SESSION_NAME

AWS_PROFILE 環境変数を設定するかクライアントをインスタンス化する際の profile オプションを選択することで、project1 で特定されたロールは、default プロファイルをソース認証情報を使用して継承されます。

ロールは ~/.aws/config で定義されたプロファイルで引き受けることもできます。環境変数 AWS_SDK_LOAD_NONDEFAULT_CONFIG を設定すると、ロールを引き受けるプロファイルを ~/.aws/config からロードできます。有効にすると、~/.aws/config~/.aws/credentials のどちらのプロファイルもロードされます。~/.aws/credentials のプロファイルは最後にロードされ、~/.aws/config から同じ名前でロードされたプロファイルよりも優先されます。どちらの場所からロードされたプロファイルも、source_profile または引き受けるプロファイルとして使用できます。

~/.aws/config のプロファイル:

[profile project1] role_arn = arn:aws:iam::123456789012:role/testing source_profile = default role_session_name = OPTIONAL_SESSION_NAME

~/.aws/credentials のプロファイル:

[project2] aws_access_key_id = YOUR_AWS_ACCESS_KEY_ID aws_secret_access_key = YOUR_AWS_SECRET_ACCESS_KEY

上記のファイルを使用し、[project2] をソース認証情報として使用して、[project1] を引き受けます。