なるべくDockerを利用して手元の端末を汚さない試み。便利かはわかりません。
使い方
docker-aws
コマンドはDockerコンテナでaws
コマンドを実行しています。
認証情報はホストの~/.aws
を参照します。
S3にバケット作成してファイルをアップロードしたり削除したりしてみます。
AWS CLIでS3を操作するコマンド一覧 - Qiita
https://qiita.com/uhooi/items/48ef6ef2b34162988295
# credentialsがある前提
> ls ~/.aws
config credentials models
> docker-aws --version
aws-cli/1.16.263 Python/2.7.16 Linux/4.9.184-linuxkit botocore/1.12.253
> docker-aws s3 mb s3://kai-cli-test
make_bucket: kai-cli-test
> echo "hoge" > hoge.txt
> docker-aws s3 cp hoge.txt s3://kai-cli-test
upload: ./hoge.txt to s3://kai-cli-test/hoge.txt
> docker-aws s3 cp s3://kai-cli-test/hoge.txt hoge2.txt
download: s3://kai-cli-test/hoge.txt to ./hoge2.txt
> ls
hoge.txt hoge2.txt
> cat hoge2.txt
hoge
# 後片付け
> docker-aws s3 rm s3://kai-cli-test/hoge.txt
delete: s3://kai-cli-test/hoge.txt
> docker-aws s3 rb s3://kai-cli-test
remove_bucket: kai-cli-test
環境設定
Dockerイメージを作成
下記を参考にaws
コマンドを実行するのに最低限のDockerfileを用意してイメージを作成します。
Dockerでaws-cli環境を作ればアカウント切替が簡単に - Qiita
https://qiita.com/icck/items/40545486a342179a5bd3
AWS CLI用のDockerイメージを作った
https://blog.lorentzca.me/aws-cli-on-docker/
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
で、docker build
します。
> docker build -t aws-cli .
AWS CLI v2のイメージを作成する
AWS CLI v2がGA(一般利用可能: 2020/02/12)になったので、イメージ作成しようと思って調べてみたら、すでに試されている方がおられたのでそちらが参考になります。感謝!
AWS CLI v2をDockerでお手軽に試してみる - Qiita
https://qiita.com/tomohisaota/items/8b8aa2d1dbf0d01da450
コマンドを作成
下記を参考にしてDockerコンテナ内でaws
コマンドを実行できるようにします。
Dockerにホームディレクトリをマウントしちゃおう - Qiita
https://qiita.com/74th/items/a3a7d6826a67e8a61608
Dockerコンテナからホスト側カレントディレクトリにアクセス - Qiita
https://qiita.com/yoichiwo7/items/ce2ade791462b4f50cf3
ポイントは以下のとおりです。
-
-v $HOME/.aws:$HOME/.aws -e "HOME=$HOME"
で認証情報をホストにあるものを参照 -
-v $PWD:$PWD -w $PWD
でコマンド実行時のカレントディレクトリを指定 -
--entrypoint=aws
と$*
で通常のaws
コマンド実行と同じ挙動を実現
#!/bin/bash
docker run -it --rm \
-v $HOME/.aws:$HOME/.aws -e "HOME=$HOME" \
-v $PWD:$PWD -w $PWD \
--entrypoint=aws \
aws-cli \
$*
作成したファイルのシンボリックリンクを/usr/local/bin
にはって実行できるようにします。/usr/local/bin
が$PATH
に含まれている前提です。
自作のコマンドを作成した - Qiita
https://qiita.com/yoshiken/items/2b8e6c24d6b95e65b625
> chmod +x docker-aws
> ln -s docker-aws /usr/local/bin/
これで最初にあげたようにdocker-aws
コマンドが実行できるようになります。
コマンド実行のカレントディレクトリがDockerコンテナで参照できるので、たいていのコマンド実行では問題にならないかなと。
docker-aws
がコマンド打つのに長ったらしいのはエイリアスなんかでどうにでもなります。
まとめ
使えるかわかりませんが、とりあえずイメージしてたコマンドが出来上がりました。
これを応用すればGCPのgcloud
コマンドなんかもDockerコンテナで実行できそうですね。
参考
AWS CLIでS3を操作するコマンド一覧 - Qiita
https://qiita.com/uhooi/items/48ef6ef2b34162988295
Dockerでaws-cli環境を作ればアカウント切替が簡単に - Qiita
https://qiita.com/icck/items/40545486a342179a5bd3
AWS CLI用のDockerイメージを作った
https://blog.lorentzca.me/aws-cli-on-docker/
Dockerにホームディレクトリをマウントしちゃおう - Qiita
https://qiita.com/74th/items/a3a7d6826a67e8a61608
Dockerコンテナからホスト側カレントディレクトリにアクセス - Qiita
https://qiita.com/yoichiwo7/items/ce2ade791462b4f50cf3
自作のコマンドを作成した - Qiita
https://qiita.com/yoshiken/items/2b8e6c24d6b95e65b625