なるべく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 .
コマンドを作成
下記を参考にして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
コマンド実行と同じ挙動を実現
docker-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