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
