こんにちは、cloudpack磯辺 です。

AWS SDK for Rubyで新標準となったCredentials管理方法を使ってみる では、aws-sdk-v1での、Shared Credentialsの使い方について説明した。v2では、この辺りも大きく変わっているようだったので、どうなっているのか確認してみた。

v2のドキュメント によると、Awsモジュールに、それぞれクラスが定義されている。

Aws::Credentials をベースに、ソース毎にクラスが定義されている。

使い方

今どきは、 Amazon EC2 であればIAM Roleを、手元の環境ではShared Credentialsを使うだろう。その場合は、特に何もせずともCredentialsが有効になる。

IAM Roleの場合

ec2 = Aws::EC2::Client.new
p ec2.config[:credentials]
#=> #

Shared Credentialsの場合

~/.aws/credentials の default が参照される)

ec2 = Aws::EC2::Client.new
p ec2.config[:credentials]
#=> #

Shared Credentialsで、profileを指定したい場合

Aws.config[:credentials] = Aws::SharedCredentials.new(profile_name: 'myaccount')
#=> #

キーを直接渡す場合

キーを直接渡す場合は、 Aws.config[:credentials]Aws::Credentials を代入すれば良い。

p Aws.config[:credentials] = Aws::Credentials.new(
  'AKxxxxxxxxxxxxxxxxxx',
  'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
)
#=> #

(AssumeRoleは…環境がないので省略)

IAM RoleやShared Credentialsのdefaultを使う場合は、意識せずに使えるようになったので、かなり便利かと思う。

元記事はこちらです。
AWS SDK for Ruby v2でのcredentialsの扱い