AWSなコマンドラインツールをつくるときにAWS CLIと同じようにAWSアクセスキーやリージョン情報を取得できるライブラリ awsecrets

を作って、awspeckumomeで使っています。

github.com

使い方

例えば、EC2インスタンスの情報をただ取得するコマンドラインツールを作るとき Awsecrets.load メソッドを利用して

#!/usr/bin/env ruby
require 'awsecrets'
Awsecrets.load
ec2_client = Aws::EC2::Client.new
puts ec2_client.describe_instances({ instance_ids: [ARGV.first] }).reservations.first.instances.first

というコマンドラインツール ec2sample を書いたら、

$ ec2sample i-1aa1aaaa --profile mycreds --region ap-northeast-1

$ AWS_ACCESS_KEY_ID=XXXXXXXXXXXXXXXXXXXX AWS_SECRET_ACCESS_KEY=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX AWS_REGION=ap-northeast-1 ec2sample i-1aa1aaaa

$ cat <<EOF > secrets.yml
region: ap-northeast-1
aws_access_key_id: XXXXXXXXXXXXXXXXXXXX
aws_secret_access_key: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
EOF
$ ec2sample i-1aa1aaaa

など、AWS CLIと同じような感じでAWSアクセスキーやリージョンを取得して Aws::config にセットしていい感じに aws-sdk を活用できます。中身はaws_config.gemとaws-sdk.gemでできています。

使いドコロは難しいですが、RubyAWSコマンドラインツールをつくるときには是非ご検討ください。