🔐
AWS Vault + Docker版AWS CLI のすゝめ
AWS Vaultについて
ローカル環境でAWS CLIを利用する際、素のAWS CLIだと認証情報を平文で保存することになり、セキュリティ的に宜しくありません。
平文で保存することを回避する為、AWS Vaultを利用することが多いと思います。
AWS CLIについて
MacにAWS CLIをインストールする際、Homebrew
やpip
、pkg
ファイルなどのインストール方法がありますが、個人的に一番楽なのは、AWSが公式で用意してくれているAWS CLIのDockerイメージを利用する方法です。
コマンドを実行する際は、下記のようなaliasを準備する必要がありますが、バージョンのアップグレードはdocker pull
するだけで済むのは非常に楽です。
$ alias aws='docker run --rm -it -v ~/.aws:/root/.aws amazon/aws-cli'
$ aws s3 ls --profile default
$ docker pull amazon/aws-cli:latest
AWS VaultとDocker版AWS CLIの連携について
AWS ValutとDocker版AWS CLIを組み合わせて利用したいのですが、当然そのような仕組みは用意されていない為、zsh
で独自関数を作成してみました。
事前準備
$ brew install aws-vault direnv
.zshrc
~/.zshrc
aws() {
aws-vault exec $AWS_PROFILE -- env | \
read envs <<< $(awk -v 'ORS= ' '/AWS_(REGION|ACCESS_KEY_ID|SECRET_ACCESS_KEY|SESSION_TOKEN)/ {print "-e " $0}'); \
zsh -c "docker run --rm -it $envs amazon/aws-cli $*"
}
AWS profileの作成
$ aws-vault add jonsmith
Enter Access Key Id: ABDCDEFDASDASF
Enter Secret Key: %%%
$ aws-vault list
Profile Credentials Sessions
======= =========== ========
jonsmith jonsmith -
利用するAWS profileを環境変数に設定
$ direnv edit .
export AWS_PROFILE=jonsmith
利用方法
$ aws --version
aws-cli/2.4.20 Python/3.8.8 Linux/5.10.76-linuxkit docker/x86_64.amzn.2 prompt/off
$ aws configure list
Name Value Type Location
---- ----- ---- --------
profile <not set> None None
access_key ****************DASF env
secret_key ****************awrh env
region ap-northeast-1 env ['AWS_REGION', 'AWS_DEFAULT_REGION']
Discussion