Skip to Content

docker run時にAWS資格情報を渡してCLIやSDKを使う

概要

alipineイメージ上でAWS SDKを使ったGoバイナリを実行する

目的

IAMロールのテスト環境としてalpine上でAWS SDKを実行したかった

手順

Dockerfile

下記のDockerfileと同ディレクトリにgo build済みのtestCmdを配置
testCmdはAWS SDKを使ったGoのバイナリ

1
2
3
4
5
FROM alpine:latest
 
WORKDIR /app
COPY testCmd /app
RUN apk update && apk add ca-certificates && rm -rf /var/cache/apk/*

ビルド

同ディレクトリ上で実行

1
> docker build -t iamtest:v1 .

イメージの実行

--envで必要な環境変数を渡す
--rmは、コンテナ終了時にコンテナ自動削除(docker ps -aに残らなくなる)
-itは、疑似端末を使用してコンテナを対話的に実行
shは、shellを使う(alpineにbashはない)

1
> docker run --rm -it --env AWS_ACCESS_KEY_ID=xxx --env AWS_SECRET_ACCESS_KEY=xxx --env AWS_DEFAULT_REGION=ap-northeast-1 iamtest:v1 sh

コンテナ内

アクセスキーに間違いがなければAWS SDKを使ったバイナリが実行できる
CloudTrailでアクセスを確認してIAMロールの確認をする

まとめ

環境変数で渡すのが手間ではあるがベストプラクティスである
長いから docker run のコマンドをテキストで保存してたら、それはそれでいいのか疑問である

参考

https://docs.oracle.com/cd/E39368_01/E75728/html/section_vn2_l2z_fp.html