23
Sep 2014
by
小川 岳史
AWS の API にアクセスするには AWS の認証情報(アクセスキーとシークレットキー)が必要になる。
AWS SDK for Java ではサービスクライアントに認証情報を引数で指定しない場合、
default credential provider chain を用いて、アクセスキーとシークレットキーは次のクラスが順番で見つかるまで探す。
- EnvironmentVariableCredentialsProvider
- SystemPropertiesCredentialsProvider
- ProfileCredentialsProvider
- InstanceProfileCredentialsProvider
1. EnvironmentVariableCredentialsProvider
OSの環境変数からアクセスキーとシークレットキーを探す。
アクセスキー | AWS_ACCESS_KEY_ID | AWS_ACCESS_KEY (第2候補) |
シークレットキー | AWS_SECRET_KEY | AWS_SECRET_ACCESS_KEY (第2候補) |
2. SystemPropertiesCredentialsProvider
システムプロパティ(Java の起動オプション -D で指定できる)からアクセスキーとシークレットキーを探す。
アクセスキー | aws.accessKeyId |
シークレットキー | aws.secretKey |
3. ProfileCredentialsProvider
~/.aws/credentials に配置した認証情報ファイルから探す。
4. InstanceProfileCredentialsProvider
EC2 のインスタンスメタデータからアクセスキーとシークレットキーを探す。
IAMRole を設定した場合に有効。
インスタンスメタデータは AWS 特有の機能で、そのインスタンスから http://169.254.169.254/latest/meta-data/ にアクセスすると、自身のインスタンスに設定された情報が取得できるというもの。
参考URL
http://docs.aws.amazon.com/AWSSdkDocsJava/latest/DeveloperGuide/credentials.html