«前の日記(2014-12-08 (Mon)) 最新 次の日記(2015-02-23 (Mon))» 編集

雑記帳


2015-02-17 (Tue) [長年日記]

[AWS][Ruby] AWS SDK for Ruby v2でのcredentialsの扱い

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

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

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

使い方

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

IAM Roleの場合

 ec2 = Aws::EC2::Client.new
 p ec2.config[:credentials]
 #=> #<Aws::InstanceProfileCredentials access_key_id="ASxxxxxxxxxxxxxxxxxQ">

Shared Credentialsの場合(~/.aws/credentialsのdefaultが参照される)

 ec2 = Aws::EC2::Client.new
 p ec2.config[:credentials]
 #=> #<Aws::SharedCredentials profile_name="default" path="/Users/isobe/.aws/credentials">

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

 Aws.config[:credentials] = Aws::SharedCredentials.new(profile_name: 'myaccount')
 #=> #<Aws::SharedCredentials profile_name="myaccount" path="/Users/isobe/.aws/credentials">

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

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

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

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