1. 소개
이 빠른 기사에서는 인스턴스 프로파일 자격 증명을 사용하여 S3 버킷에 연결하는 Spring Cloud 애플리케이션을 빌드할 것입니다.
2. 클라우드 환경 프로비저닝
인스턴스 프로필은 EC2 인스턴스가 임시 자격 증명으로 다른 AWS 리소스에 연결할 수 있도록 하는 AWS 기능입니다. 이러한 자격 증명은 수명이 짧으며 AWS에 의해 자동으로 교체됩니다.
사용자는 EC2 인스턴스 내에서만 임시 자격 증명을 요청할 수 있습니다. 그러나 이러한 자격 증명은 만료될 때까지 어디에서나 사용할 수 있습니다.
인스턴스 프로파일 구성 에 대한 자세한 도움을 받으려면 AWS 설명서를 확인하십시오.
2.1. 전개
먼저 적절한 설정을 갖춘 AWS 환경이 필요합니다.
아래 코드 샘플의 경우 EC2 인스턴스, S3 버킷 및 적절한 IAM 역할을 설정해야 합니다. 이를 위해 코드 샘플에서 CloudFormation 템플릿 을 사용 하거나 이러한 리소스를 자체적으로 설정할 수 있습니다.
2.2. 확인
다음으로 EC2 인스턴스가 인스턴스 프로필 자격 증명을 검색할 수 있는지 확인해야 합니다. <InstanceProfileRoleName> 을 실제 인스턴스 프로필 역할 이름으로 바꿉니다 .
curl http://169.254.169.254/latest/meta-data/iam/security-credentials/<InstanceProfileRoleName>
모든 것이 올바르게 설정되면 JSON 응답에 AccessKeyId , SecretAccessKey , Token 및 Expiration 속성이 포함됩니다.
3. 스프링 클라우드 구성
이제 샘플 애플리케이션입니다. Spring Boot 구성 파일에서 수행할 수 있는 인스턴스 프로필을 사용하도록 Spring Boot를 구성해야 합니다.
cloud.aws.credentials.instanceProfile=true
그리고 그게 다야! 이 Spring Boot 애플리케이션이 EC2 인스턴스에 배포되면 각 클라이언트는 자동으로 인스턴스 프로필 자격 증명을 사용하여 AWS 리소스에 연결하려고 시도합니다.
이는 Spring Cloud가 AWS SDK 의 EC2ContainerCredentialsProviderWrapper 를 사용하기 때문입니다. 그러면 우선 순위에 따라 자격 증명을 찾고 시스템에서 다른 자격 증명을 찾을 수 없는 경우 인스턴스 프로필 자격 증명으로 자동 종료됩니다.
Spring Cloud가 인스턴스 프로필만 사용하도록 지정해야 하는 경우 자체 AmazonS3 인스턴스를 인스턴스화할 수 있습니다.
InstanceProfileCredentialsProvider 로 구성 하고 빈으로 게시할 수 있습니다.
@Bean
public AmazonS3 amazonS3() {
InstanceProfileCredentialsProvider provider
= new InstanceProfileCredentialsProvider(true);
return AmazonS3ClientBuilder.standard()
.withCredentials(provider)
.build();
}
이는 Spring Cloud에서 제공 하는 기본 AmazonS3 인스턴스를 대체합니다.
4. S3 버킷에 연결
이제 정상적으로 Spring Cloud를 사용하여 S3 버킷에 연결할 수 있지만 영구 자격 증명을 구성할 필요는 없습니다.
@Component
public class SpringCloudS3Service {
// other declarations
@Autowired
AmazonS3 amazonS3;
public void createBucket(String bucketName) {
// log statement
amazonS3.createBucket(bucketName);
}
}
인스턴스 프로필은 EC2 인스턴스에만 발급되기 때문에 이 코드는 EC2 인스턴스에서 실행될 때만 작동합니다 .
물론 EC2, SQS 및 SNS를 포함하여 EC2 인스턴스가 연결되는 모든 AWS 서비스에 대해 프로세스를 반복할 수 있습니다.
5. 결론
이 사용방법(예제)에서는 Spring Cloud에서 인스턴스 프로필 자격 증명을 사용하는 방법을 살펴보았습니다. 또한 S3 버킷에 연결하는 간단한 애플리케이션을 만들었습니다.
항상 그렇듯이 전체 소스는 GitHub 에서 찾을 수 있습니다 .