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

見落としがちな気がする、aws configure経由にて、既に設定済みのアクセスキーを取得する手順についてまとめてみました。
2019.06.04

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

サードパーティ製のライブラリを用いる際に、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からアクセスキーだけピックアップしたい時等にオススメです。