2021년도에 정리했던 내용을 포스팅함.
AWS SDK의 다양한 서비스 (S3, KMS 등등)를 이용하려면, AWS Client를 생성하여 리소스에 Credential 정보가 반드시 필요함 !
AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
.withCredentials(DefaultAWSCredentialsProviderChain.getInstance())
.build();
별도의 인수를 제공하지 않고 기본값으로 새 서비스 클라이언트를 초기화하기 위해서는 AWS SDK for Java에서는 기본적으로 DefaultAWSCredentialsProviderChain
클래스의 기본 자격 증명 공급자 체인을 사용하여 AWS 자격 증명을 찾을 수 있다.
기본 자격 증명 공급자를 사용하면, 내부적으로 지정된 우선순위대로 찾게되고 조건을 만족하면 해당 값으로 자격증명을 로드한다.
AWS SDK for Java 2.x 버전 기준으로 DefaultAWSCredentialsProviderChain
는 다음과 같은 순서대로 Credential
를 찾는다.
환경 변수
AWS_ACCESS_KEY_ID
와 AWS_SECRET_ACCESS_KEY
의 값을 가져온다.EnvironmentVariableCredentialsProvider
클래스를 사용하여 자격 증명을 로드한다.자바 시스템 프로퍼티
-D
옵션으로 설정되는 값을 의미한다.java -jar application.jar -Dspring.active.profiles=??
자바 시스템 프로퍼티에 설정된 aws.accessKeyId
와 aws.secretKey
SystemPropertiesCredentialsProvider
클래스를 사용하여 자격 증명을 로드한다.기본 크리덴셜 프로필 파일
~/.aws/credentials
(플랫폼마다 다를 수 있음)에 있으며 많은 AWS SDKs 및 AWS CLI에서 공유aws configure
명령을 사용하여 자격 증명 파일을 생성하거나 텍스트 편집기에서 이 파일을 편집하여 새로 생성할 수 있음[default]
aws_access_key_id = ?
aws_secret_access_key = ?
ProfileCredentialsProvider
를 사용하여 자격 증명을 로드Amazon ECS 컨테이너 크리덴셜
AWS_CONTAINER_CREDENTIALS_RELATIVE_URI
가 설정되면 Amazon ECS에서 로드ContainerCredentialsProvider
를 사용하여 자격 증명을 로드인스턴스 프로파일 자격 증명
InstanceProfileCredentialsProvider
를 사용하여 이러한 자격 증명을 로드