아래 코드는 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 |