LoginSignup
13
6

More than 1 year has passed since last update.

docker-composeでコンテナにローカルのAWS認証情報を渡す

Last updated at Posted at 2021-10-22

DockerコンテナからAWSにアクセスする時、AWSのcredentialsが必要になる。
AWS上でコンテナを動かす場合IAMロールを付与すればいいが、ローカルで動かす時はそうもいかない。

そこで、ここではローカルのAWS認証情報(~/.aws/)をコンテナに渡す方法をまとめた。

docker-compose.yaml

AWS SDK for JavaScriptを使ったWebアプリケーションをDockerコンテナで動かす体で見て欲しい。
docker-compose.yaml から一部抜粋する。

docker-compose.yaml
  :
  app:
    environment:
      - AWS_SDK_LOAD_CONFIG
      - AWS_PROFILE
      - NODE_ENV=development
    volumes:
      - ~/.aws/:/root/.aws:ro
  :

environment

環境変数は値を書かなければローカルの環境変数がパススルーされるので、必要に応じてお好みで設定する。だいたい .env に書いている。

ちなみに AWS_SDK_LOAD_CONFIGtrue に設定すると、SDKが自動的に ~/.aws/config を読み込むようになる。不要であれば別途 AWS_REGION を設定する必要がある。

プロファイルを default から変更したい時も AWS_PROFILE を設定する必要がある。

    environment:
      - AWS_SDK_LOAD_CONFIG
      - AWS_PROFILE

volumes

ローカルの ~/.aws を、Dockerコンテナの /root/.aws にマウントする(念の為、読み取り専用にしている)。これでDockerコンテナからAWSの認証情報を参照できるようになる。

ここでは root ユーザーを実行ユーザーにしているが、実際は専用ユーザーを作成したほうがいいと思う。

    volumes:
      - ~/.aws/:/root/.aws:ro
13
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
6