雑記帳
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を使う場合は、意識せずに使えるようになったので、かなり便利かと思う。