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 , TokenExpiration 속성이 포함됩니다.

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 에서 찾을 수 있습니다 .

Security footer banner