aws-cliを使ったshell scriptを書いていて、ふと「credencialsから情報を取ればスクリプトの中にACCESS_KEYとかACCESS_SECRET_KEYを書かなくて良いな」と気付いたので、取れるようにしました。
以下、デフォルトの情報を取得するためのサンプルです。
なお、別ユーザの情報を取得したい場合は、sed の引数の -n *p
の *
に +3 していくと取得できます。
sample
$ CRED_FILE = /home/user/.aws/credentials
$ ACCESS_KEY=`/bin/cat $CRED_FILE | sed -n 2p | cut -d'=' -f2 | tr -d ' '`
$ ACCESS_SECRET_KEY=`/bin/cat $CRED_FILE | sed -n 3p | cut -d'=' -f2 | tr -d ' '`
$ echo $ACCESS_KEY
XXXXXXXXXXXXXXXXXXXX
$ echo $ACCESS_SECRET_KEY
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
ちなみにクレデンシャルファイルは.awsに配置されたままのフォーマットになっています。
$ cat /home/user/.aws/credentials
[default]
aws_access_key_id = XXXXXXXXXXXXXXXXXXXX
aws_secret_access_key = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
[user]
aws_access_key_id = ********************
aws_secret_access_key = ****************************************
後、awsからダウンロードしてきたcsvファイルから取得したい時は以下で可能です。
sample2
$ CRED_FILE = /home/user/.aws/credentials.csv
$ ACCESS_KEY=`/bin/cat $CRED_FILE | tail -1 | cut -d',' -f1`
$ ACCESS_SECRET_KEY=`/bin/cat $CRED_FILE | tail -1 | cut -d',' -f2`
$ echo $ACCESS_KEY
XXXXXXXXXXXXXXXXXXXX
$ echo $ACCESS_SECRET_KEY
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
ちなみにcsvファイルのフォーマットは、awsからダウンロードしたままのフォーマットになっています。
$ cat /home/user/.aws/credentials.csv
Access key ID,Secret Access Key
XXXXXXXXXXXXXXXXXXXX,XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
以下のようなフォーマットの場合は cat の引数の -d',' -f*
の *
に +1 していくと取得できます。
$ cat /home/user/.aws/credentials.csv
User Name,Access key ID,Secret Access Key
"user",XXXXXXXXXXXXXXXXXXXX,XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
「うまく動かない」、「もっとシンプルでスマートなやり方がある」などのご意見があれば、ぜひともいただきたいです。
ではこちらのコマンドが少しでも皆さんのお役に立ちますように。