aws configureのサブコマンドから、設定済みのアクセスキーを手軽に取得する

はじめに

サードパーティ製のライブラリを用いる際に、ACCESS_KEY_IDSRCRET_ACCESS_KEYを所定の設定ファイルへ入力するケースは多々あると思われます。

多分手っ取り早いだろうと、必要になる度に~/.aws/credentialsを参照してコピー貼り付けの作業を行っていましたが、コピーする際に正確に範囲指定が出来ていなかったケースもありました。

awscli経由でどうにかして引っ張ってこれないものかと試行錯誤してみたところ、個人的には発見だったため備忘録的に記しておきます。

aws configureからcredentialsを引っ張る

結論から言うと、以下のコマンドにて取得可能です。

% aws configure [--profile XXXX] get aws_access_key_id
% aws configure [--profile XXXX] get aws_secret_access_key
% aws configure [--profile XXXX] get region
% aws configure [--profile XXXX] get output

regionoutputが求められる頻度は少ないかもしれませんが、取得可能ということで残しておきます。

aws configure getの構成

configureコマンドのサブコマンドとなっており、aws_access_key_idaws_secret_access_keyについてはパラメータとなっています。パラメータは補完されないこともあり気が付きにくいというわけです。

aws configure get helpにて表示されるテキストにて以下の様に記載はされているのですが、なかなかそこまでスクロールする機会も少ない。

  The following commands would have the corresponding output:
 $ aws configure get aws_access_key_id
 default_access_key

 $ aws configure get default.aws_access_key_id
 default_access_key

 $ aws configure get aws_access_key_id --profile testing
 testing_access_key

 $ aws configure get profile.testing.aws_access_key_id
 testing_access_key

 $ aws configure get preview.cloudsearch
 true

手軽な利用方法

sedを利用することで、設定ファイル内への置換用文字列埋め込みにて、コマンド経由にて置換処置が可能です。

% sed -i -e "s/AWS_ACCESS_KEY_ID/$(aws configure --profile default get aws_access_key_id)/g" FILE 
% sed -i -e "s/AWS_SECRET_ACCESS_KEY/$(aws configure --profile default get aws_secret_access_key)/g" FILE

まとめ

人によっては常用的な使い方かもしれません。pipeにてpbcopyに繋ぐとコピペミスも減らせます。

% aws configure --profile default get aws_access_key_id | pbcopy

credentialsからアクセスキーだけピックアップしたい時等にオススメです。