spring-cloud-awsの2系でようやくaws-sdk-javaのDefaultAWSCredentialsProviderChain
がサポートされた。
1.x系でのAWS LambdaやコンテナサービスのIAM Roleを利用した認証情報を取得する際のカスタマイズが不要になるのでご参考に。
(AWS Lambdaで起動に時間を要するSpring Frameworkは非推奨ではあるが)
方法
application.properties(yml)または起動オプションにcloud.aws.credentials.useDefaultAwsCredentialsChain
を追加する。
application.properties
cloud.aws.credentials.useDefaultAwsCredentialsChain=true
任意項目なので設定しない場合はfalse(1.x系と同じ挙動)になる。
ドキュメントやコード
- リファレンス
- なぜか反映されていない。M4のものには記載されてる。
http://cloud.spring.io/spring-cloud-aws/spring-cloud-aws.html
http://cloud.spring.io/spring-cloud-static/spring-cloud-aws/2.0.0.M4/single/spring-cloud-aws.html#_configuring_credentials
- 実装箇所
- 履歴
ついでに従来通りのIAM Userを利用する場合をメモっとく
- accessKeyとsecretKeyをapplication.propertiesなどで定義する場合
cloud.aws.credentials.accessKey=hoge_accessKey
cloud.aws.credentials.secretKey=hoge_secretKey
- aws-cliの~/.aws/credentialsを使用する場合
- profileNameが[default]の場合は定義しなくてもよい
#cloud.aws.credentials.accessKey,secretKeyは消してOK
#cloud.aws.credentials.accessKey=
#cloud.aws.credentials.secretKey=
cloud.aws.credentials.profileName=hoge_profile
- aws-cliの~/.aws/credentialsのパスを独自に設定している場合
- profileを利用すると複数のIAMユーザーの切り替えが柔軟なのでおすすめ
#cloud.aws.credentials.accessKey,secretKeyは消してOK
#cloud.aws.credentials.accessKey=
#cloud.aws.credentials.secretKey=
cloud.aws.credentials.profileName=hoge_profile
cloud.aws.credentials.profilePath=.aws/hoge_credentials