AWS CLI on Docker
先日パイセンとAWS CLIをCircleCIから実行したいときにawsコマンドが使えるdockerイメージがあれば便利かもねみたいな話をしたので作ってみました。
既に同様のものはDocker Hubにありましたが最近自分でDockerイメージ作っていなかったのもあるので練習も兼ねて…。
Docker Hubはこちら。
用途としては以下のような場合に使いたい。
- CircleCIなどで手軽にawsコマンド使いたい場合に使えそう
- Dockerから実行したい(環境を汚したくないとかで)
pip入れるのが昔より楽だったので特に躓く箇所はなかった。
FROM alpine
ARG pip_installer="https://bootstrap.pypa.io/get-pip.py"
# Install dependent packages
RUN apk --update add \
python \
curl \
groff
# Install awscli
RUN curl ${pip_installer} | python && \
pip install awscli
# Execute aws command
ENV PAGER="less"
ENTRYPOINT ["/usr/bin/aws"]
CMD ["help"]
- ベースイメージは軽量なalpine
- デフォルトの動作は
aws help
help
の部分はCMD
で指定しているのでdocker run
での実行時に上書きされる
こんな感じで使えます。
docker run --rm \
-e "AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID" \
-e "AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY" \
-e "AWS_DEFAULT_REGION=$AWS_DEFAULT_REGION" \
lorentzca/aws s3 ls
クレデンシャルを環境変数で注入しているが若干面倒。直接環境変数読み込んでくれるようにできないかな…。
今回Docker Hubにpushするにあたって、GitHubと連携させて自動ビルドするようにしてみました。このお陰でDockerfileがDocker Hubページ内で見れるようになりました。
この辺の自動ビルド周りについては別途まとめてみようと思っています。