はじめに
aws-cli環境作成にあたりローカルを汚したくない。--profile
オプションで切替めんどくさい。
そんな思いでDockerで環境作れないか試してみました。
実行環境
- ubuntu 18.10
- Dockerインストール済
1. Dockerfileの作成
- 軽量なalpineを選択。
- aws-cliのバージョンはお好きなものに変更してください。
- 取得したjsonを
jq
で整形したいなどお好みでインストール内容は変更してください。 -
PS1
はお好みの設定に変更してください。- 今回は起動時に指定するDockerホスト名を表示し、どんなaws-cli環境なのかわかるようにしています。
-
[root@awscli-dev:/]$
と表示し開発環境のaws-cliのように見せてみました。
Dockerfile
FROM alpine
ARG pip_installer="https://bootstrap.pypa.io/get-pip.py"
ARG awscli_version="1.16.76"
# Install dependent packages
RUN apk --update add \
bash \
python \
curl \
groff \
jq \
less
# Install awscli
RUN curl ${pip_installer} | python && \
pip install awscli==${awscli_version}
# 入力補完
RUN bash -c 'echo complete -C '/usr/bin/aws_completer' aws >> $HOME/.bashrc'
ENV PS1="[\u@\h:\w]$"
2. docker build
docker build -t aws-cli .
3. 実行スクリプトの作成
- アカウント単位ですぐ使えるようにスクリプト化。
-
tmux
などで複数ターミナルを開けば同時に別のaws-cliを複数起動も。 - 起動したコンテナは
--rm
オプションでexitしたら削除しコンテナのゴミは残さないように。 - hオプションを付けてどんな環境なのかわかる名前を付けます。 ※複数実行した場合の作業ミス防止
- s3などでローカルディレクトリを利用したい場合は、Dockerfile作成時に作業ディレクトリを作成しておき
-v
オプションでマウントしても良いかも知れません。
run.sh
AWS_ACCESS_KEY_ID="アクセスキー"
AWS_SECRET_ACCESS_KEY="シークレットキー"
AWS_DEFAULT_REGION="リージョン"
docker run -ith awscli-dev --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 \
aws-cli /bin/bash
4. スクリプト実行
# 実行権限はchmod +x run.sh
./run.sh
[root@awscli-dev:/]$ aws コマンド入力
さいごに
- スクリプトを実行するだけで好きなアカウントのaws-cli環境に切替れるようになりました。
-
--profile
オプションでアカウント切替える面倒から開放されましたが、どちらが良いか個人差ありそうです。 -
awscli
でDocker環境つくりましたがaws-shell
でも少しDockerfileを変更するだけでOKでした。 - ここまで読んで頂きありがとうございました。