翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
のデフォルトの認証情報プロバイダーチェーン AWS SDK for Java 2.x
のデフォルトの認証情報プロバイダーチェーンは、事前定義された場所のシーケンスで AWS 認証情報 AWS SDK for Java 2.x を自動的に検索するため、アプリケーションは認証情報ソースを明示的に指定 AWS のサービス せずに で認証できます。
デフォルトの認証情報プロバイダーチェーンは DefaultCredentialsProvider
デフォルトの認証情報プロバイダーチェーンを使用して一時的な認証情報を指定するには、サービスクライアントビルダーを作成しますが、認証情報プロバイダーを指定しないでください。次のコードスニペットは、デフォルトの認証情報プロバイダーチェーンを使用して設定を検索および取得DynamoDbClient
する を作成します。
// Any external Region configuration is overridden. // The SDK uses the default credentials provider chain because no specific credentials provider is specified. Region region = Region.US_WEST_2; DynamoDbClient ddb = DynamoDbClient.builder() .region(region) .build();
認証情報の設定の取得順序
SDK for Java 2.x のデフォルトの認証情報プロバイダーチェーンは、事前定義されたシーケンスを使用して、環境内の設定を検索します。
-
Java のシステムプロパティ
-
SDK は、SystemPropertyCredentialsProvider
クラスを使用して、 aws.accessKeyId
、aws.secretAccessKey
およびaws.sessionToken
Java システムプロパティから一時的な認証情報をロードします。注記
Java システムプロパティの設定方法の詳細については、Java Tutorials の公式ウェブサイトにあるシステムプロパティ
のチュートリアルを参照してください。
-
-
環境変数
-
SDK は、EnvironmentVariableCredentialsProvider
クラスを使用して、 AWS_ACCESS_KEY_ID
、AWS_SECRET_ACCESS_KEY
およびAWS_SESSION_TOKEN
システム環境変数から一時的な認証情報をロードします。
-
-
ウェブ ID トークンと IAM ロール ARN
-
SDK は WebIdentityTokenFileCredentialsProvider
クラスを使用して、ウェブ ID トークンを使用してロールを引き受けることで認証情報をロードします。 -
認証情報プロバイダーは、次の環境変数または JVM システムプロパティを検索します。
-
AWS_WEB_IDENTITY_TOKEN_FILE or
aws.webIdentityTokenFile
-
AWS_ROLE_ARN
、またはaws.roleArn
-
AWS_ROLE_SESSION_NAME
またはaws.roleSessionName
(オプション)
-
-
SDK が値を取得すると、 AWS Security Token Service (STS) を呼び出し、返される一時的な認証情報を使用してリクエストに署名します。
-
Amazon Elastic Kubernetes Service (EKS) などのランタイム環境は、 AWS SDKs でウェブ ID トークンを自動的に利用可能にし、アプリケーションが一時的な AWS 認証情報を取得できるようにします。
-
-
共有
credentials
およびconfig
ファイル-
SDK は ProfileCredentialsProvider
を使用して、IAM Identity Center のシングルサインオン設定または一時的な認証情報を共有 credentials
とconfig
ファイル内の[default]
プロファイルから読み込みます。AWS SDKs およびツールリファレンスガイドには、SDK for Java が IAM Identity Center シングルサインオントークンと連携し、SDK が呼び出しに使用する一時的な認証情報を取得する方法に関する詳細情報が記載されています AWS のサービス。
注記
credentials
およびconfig
ファイルは、さまざまな AWS SDKsとツールによって共有されます。詳細については、「 AWS SDKs and Tools リファレンスガイド」の「.aws/credentials and .aws/config files」を参照してください。 -
共有ファイル
credentials
とconfig
ファイル内のプロファイルにはさまざまな設定セットを含めることができるため、 は[default]
プロファイルの設定を探すために他の一連のプロバイダーにProfileCredentialsProvider
委任します。-
基本的な認証情報 (クラス
StaticCredentialsProvider
): プロファイルにaws_access_key_id
と が含まれている場合aws_secret_access_key
。 -
セッション認証情報 (クラス
StaticSessionCredentialsProvider
): プロファイルにaws_access_key_id
、aws_secret_access_key
、および が含まれている場合aws_session_token
。 -
プロセス認証情報 (クラス
ProcessCredentialsProvider
): プロファイルに が含まれている場合credential_process
。 -
SSO 認証情報 (クラス
SsoCredentialsProvider
): プロファイルにsso_role_name
、 などの SSO 関連のプロパティが含まれている場合sso_account_id
。 -
ウェブ ID トークン認証情報 (クラス
WebIdentityTokenCredentialsProvider
): プロファイルにrole_arn
と が含まれている場合web_identity_token_file
。 -
ソースプロファイル (クラス
StsAssumeRoleCredentialsProvider
): プロファイルにrole_arn
と が含まれている場合source_profile
。 -
認証情報ソース (クラス
StsAssumeRoleWithSourceCredentialsProvider
): プロファイルにrole_arn
と が含まれている場合credential_source
。-
の場合
credential_source = Environment
:SystemPropertyCredentialsProvider
と のチェーンを使用します。EnvironmentVariableCredentialsProvider
-
の場合
credential_source = Ec2InstanceMetadata
: を使用するInstanceProfileCredentialsProvider
-
の場合
credential_source = EcsContainer
: を使用するContainerCredentialsProvider
-
-
-
-
Amazon ECS コンテナ認証情報
-
SDK は ContainerCredentialsProvider
クラスを使用して、次の環境変数を使用して一時的な認証情報をロードします。 -
AWS_CONTAINER_CREDENTIALS_RELATIVE_URI
、、またはAWS_CONTAINER_CREDENTIALS_FULL_URI
-
AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE
、、またはAWS_CONTAINER_AUTHORIZATION_TOKEN
-
ECS コンテナエージェントは、ECS 認証情報エンドポイントを指す
AWS_CONTAINER_CREDENTIALS_RELATIVE_URI
環境変数を自動的に設定します。その他の環境変数は通常、標準の ECS 認証情報エンドポイントが使用されていない特定のシナリオで設定されます。 -
-
Amazon EC2 インスタンス IAM ロール提供の認証情報
-
SDK は InstanceProfileCredentialsProvider
クラスを使用して、 Amazon EC2 メタデータサービスから一時的な認証情報をロードします。
-
-
上記のすべてのステップで必要な構成設定が SDK で見つからない場合、次のような出力の例外がスローされます。
software.amazon.awssdk.core.exception.SdkClientException: Unable to load credentials from any of the providers in the chain AwsCredentialsProviderChain(credentialsProviders=[SystemPropertyCredentialsProvider(), EnvironmentVariableCredentialsProvider(), WebIdentityTokenCredentialsProvider(), ProfileCredentialsProvider(), ContainerCredentialsProvider(), InstanceProfileCredentialsProvider()])
コードDefaultCredentialsProvider
で を使用する
コードでデフォルトの認証情報プロバイダーチェーンを明示的に使用できます。これは、 SDK がDefaultCredentialsProvider
デフォルトで を使用するため、認証情報プロバイダーをまったく指定しないことと機能的に同等です。ただし、明示的に使用すると、コードがより読みやすくなり、自己文書化されます。デフォルトの認証情報チェーンを使用する意図を明確に示しています。
import software.amazon.awssdk.auth.credentials.DefaultCredentialsProvider; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.s3.S3Client; public class ExplicitDefaultCredentialsExample { public static void main(String[] args) { // Explicitly create the DefaultCredentialsProvider. DefaultCredentialsProvider defaultCredentialsProvider = DefaultCredentialsProvider .builder().build(); // Use it with any service client. S3Client s3Client = S3Client.builder() .region(Region.US_WEST_2) .credentialsProvider(defaultCredentialsProvider) .build(); // Now you can use the client with the default credentials chain. s3Client.listBuckets(); } }
デフォルトの認証情報プロバイダーを構築するときに、より多くの設定を指定できます。
DefaultCredentialsProvider customizedProvider = DefaultCredentialsProvider.builder() .profileName("custom-profile") // Use a specific profile if the chain gets to the `ProfileCredentialsProvider` stage. .asyncCredentialUpdateEnabled(true) // Enable async credential updates. .build();
このアプローチにより、デフォルトの認証情報チェーンの利便性を維持しながら、より細かく制御できます。