🔖

AWS ECSでAWS認証情報を取得する。

2021/06/01に公開

AWS ECS 内のタスクからAWS-SDKを利用して、AWS認証情報を取得する方法について記載する。

AWS ECS内のタスクからAWSのサービスを取得するためにタスクのIAMロールのAWS認証情報を取得する。
AWSの認証情報はコンテナ内からコマンドで取得できる。

curl 169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI

https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/task-iam-roles.html

AWS-SDKを利用することで、より簡単にAWS認証情報を取得できる。

Node.js (Typescript) での取得例

const ecsCredentials = new AWS.ECSCredentials({
  httpOptions: { timeout: 5000 },
  maxRetries: 10,
});
await ecsCredentials.getPromise();
AWS.config.credentials = ecsCredentials;

getPromise()get() を呼び出す必要がある。

こちらの公式ドキュメントにあるように直接値を代入するだけでは、
値が取得できず、 undefined になる。

AWS.config.credentials = new AWS.ECSCredentials({
  httpOptions: { timeout: 5000 },
  maxRetries: 10,
});

https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/ECSCredentials.html

Discussion