기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
의 기본 자격 증명 공급자 체인 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();
자격 증명 설정 검색 순서
Java 2.x용 SDK의 기본 자격 증명 공급자 체인은 사전 정의된 시퀀스를 사용하여 사용자 환경의 구성을 검색합니다.
-
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
환경 변수에서 임시 자격 증명을 로드합니다.
-
-
웹 자격 증명 토큰 및 IAM 역할 ARN
-
SDK는 WebIdentityTokenFileCredentialsProvider
클래스를 사용하여 웹 자격 증명 토큰을 사용하여 역할을 수임하여 자격 증명을 로드합니다. -
자격 증명 공급자는 다음 환경 변수 또는 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에 제공하여 애플리케이션이 임시 AWS 자격 증명을 얻을 수 있도록 합니다.
-
-
공유
credentials
및config
파일-
SDK는 ProfileCredentialsProvider를
사용하여 IAM Identity Center 싱글 사인온 설정 또는 [default]
프로필의 임시 자격 증명을 공유credentials
및config
파일에 로드합니다.AWS SDKs 및 도구 참조 안내서에는 SDK for Java가 IAM Identity Center Single Sign-On 토큰과 함께 작동하여 SDK가 호출하는 데 사용하는 임시 자격 증명을 가져오는 방법에 대한 자세한 정보가 나와 있습니다 AWS 서비스.
참고
credentials
및config
파일은 AWS SDKs 및 도구에서 공유됩니다. 자세한 정보는 AWS SDK 및 도구 참조 가이드의 .aws/credentials 및 .aws/config 파일을 참조하세요. -
공유
credentials
및config
파일의 프로필에는 다양한 설정 세트가 포함될 수 있으므로는 일련의 다른 공급자에ProfileCredentialsProvider
위임하여[default]
프로필에서 설정을 찾습니다.-
기본 자격 증명(클래스
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
. -
웹 자격 증명 토큰 자격 증명(클래스
WebIdentityTokenCredentialsProvider
): 프로파일에role_arn
및가 포함된 경우web_identity_token_file
. -
소스 프로파일이 있는 역할 기반 자격 증명(클래스
StsAssumeRoleCredentialsProvider
): 프로파일에role_arn
및이 포함된 경우source_profile
. -
자격 증명 소스가 있는 역할 기반 자격 증명(클래스
StsAssumeRoleWithSourceCredentialsProvider
): 프로파일에role_arn
및가 포함된 경우credential_source
.-
When:
SystemPropertyCredentialsProvider
및의 체인을credential_source = Environment
사용합니다.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();
이 접근 방식을 사용하면 기본 자격 증명 체인의 편의성을 유지하면서 더 많은 제어 권한을 얻을 수 있습니다.