コンテナはDockerを使用することを想定しています。
ECSと他サービスの疎通を確認するための覚書です。
ローカルとAWS ECSで確認することを想定しています。
SDKはコードにクレデンシャルを明示しない場合は、以下順序でクレデンシャルを解決します。
ローカルのDockerからの確認とAWS ECSからの確認でプログラムを変更したくないため、以下の方法でSDKにクレデンシャルを渡すことにします。
↑を実現するために、AWS SDKのClient(例:SQS)にクレデンシャルを設定しません。
$client = new SqsClient([
'region' => 'ap-northeast-1',
'version' => '2012-11-05'
]);
以下のようにprofile
などを指定するとコンテナにクレデンシャルが必要になってしまいます。
$client = new SqsClient([
+ 'profile' => 'default',
'region' => 'ap-northeast-1',
'version' => '2012-11-05'
]);
docker run
でe
オプションを使ってクレデンシャルを環境変数で渡します。
# シェル変数にローカルの`default`のクレデンシャルを設定
$ AWS_REGION=$(aws configure get region)
$ AWS_ACCESS_KEY_ID=$(aws configure get aws_access_key_id)
$ AWS_SECRET_ACCESS_KEY=$(aws configure get aws_secret_access_key)
docker run
のe
オプションで環境変数を渡します。
# -eでクレデンシャルを環境変数としてコンテナに渡す
$ docker run -e AWS_REGION=$AWS_REGION -e AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID -e AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY aws-sqs-sample:latest
イメージaws-sqs-sample:latest
が存在することを想定しています。
AWS ECSでは、タスクロールに適切にIAMロールを設定していれば、IAMロールの一時認証情報(STS)を使ってクレデンシャルを取得します。
No comments yet.
改行と段落タグは自動で挿入されます。
メールアドレスは表示されません。