AWS/AWS 공부

[AWS] Secrets Manager 생성 및 값 가져오기 in JAVA

Yuco 2024. 3. 7. 21:32

아래 코드는 Java에서 AWS에서 제공하는 Secrets Manager에 접근하고, Secret을 생성하고, Secrets의 값을 가져오는 코드입니다.

1. AWS Secrets Manager Client 생성

public class SecretsManagerRepositoryImpl
    implements SecretsManagerRepository
{
	// 시크릿매니저 클라이언트 생성
    private final SecretsManagerClient secretsManagerClient;

    public SecretsManagerRepositoryImpl (
        String accessKey,  
        String secretKey
    ) {
        this.secretsManagerClient = SecretsManagerClient
            .builder()
            .region(Region.AP_NORTHEAST_2)
            .credentialsProvider(
                StaticCredentialsProvider.create(
                    AwsBasicCredentials.create(
                        accessKey,
                        secretKey
                    )))
            .build();
    }
}

 

2. AWS Secrets Manager 생성

// Generic을 통해 어떤 Data가 들어오든, secrets Manager을 생성할 수 있게 만들어 놓았습니다.
public <T> CreateSecretResponse createSecret (
    String secretName,
    T secretData
) {
    try
        {
            String secretValue = objectMapper.writeValueAsString(secretData);
            
            CreateSecretRequest secretRequest = CreateSecretRequest
                .builder()
                .name(secretName)
                .secretString(secretValue)
                .build();
            
            return secretsManagerClient.createSecret(secretRequest);
        }
    catch ( JsonProcessingException e ) // objectMapper 사용 시 예외 처리
        {
            throw new JsonProcessingException(e.getMessage());
        }
    catch ( Exception e )  // AWS SDK 예외
        {
            throw new SdkException(e.getMessage());
        }
}

 

3. AWS Secrets Manager 값 가져오기

public <T> T getSecret (
    String secretId,
    Class<T> returnType
) {
    String secretValue = secretsManagerClient
        .getSecretValue(request -> request.secretId(secretId))  // name과 arn 사용 가능
        .secretString();
    try
        {
            ObjectMapper objectMapper = new ObjectMapper();
            
            // readValue는 response 값을 returnType model에 맞게 바꿔주는 역할을 합니다.
            return objectMapper.readValue(
                secretValue,
                returnType
            );
        }
    catch ( JsonProcessingException e )  // objectMapper 사용 시 예외 처리
        {
            throw new JsonProcessingException(e.getMessage());
        }
    catch ( Exception e )  // AWS SDK Exception
        {
            throw new SdkException(e.getMessage());
        }
}

'AWS > AWS 공부' 카테고리의 다른 글

[CDK] Cognito 개념 및 생성  (0) 2024.03.17
[AWS] dynamoDB 저장 in Node  (1) 2024.03.07
[AWS] Secrets Manager get Value - in Node and Python  (0) 2024.03.07
[SQS] SQS, DLQ 정리  (0) 2023.07.08
[AWS] Amazon S3 정리  (0) 2023.06.18