###やったこと
AWS CLI(1.16.76)とSAM(serverless application model)をDocker環境で実行できるようにする。
Dockerfile
FROM python:3.6
ARG pip_installer="https://bootstrap.pypa.io/get-pip.py"
ARG awscli_version="1.16.76"
# Install awscli
RUN pip install awscli==${awscli_version}
# Install sam
RUN pip install --user --upgrade aws-sam-cli
RUN mkdir /data
RUN chmod -x /data
ENV PATH $PATH:/root/.local/bin
※ awscli_versionはよしなに変えてください。
###コンテナ起動
ビルド
docker build -t aws-cli .
コンテナの起動
AWS_ACCESS_KEY_ID="<your aws access key id>"
AWS_SECRET_ACCESS_KEY="<your aws access key>"
AWS_DEFAULT_REGION="<aws default region>"
docker run -it \
-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 \
-v $(pwd):/data \
aws-cli /bin/bash
カレントディレクトリが/dataディレクトリにマウントされます。
docker内で指定したバージョンのCLI、SAMが使用できます。
試しにコンテナ内で
aws s3 ls
と打ってs3のバケット一覧が取得できればOKです。
###終わりに
aws cliの環境を整えようとするとpythonやpipのバージョンを合わせたりが面倒だったので、コンテナで運用すると楽になりました。本番環境へのデプロイにも使えると思うので、ぜひ活用してみてください。