1. Node + 타입 스크립트
아래 코드는 node와 타입 스크립트를 이용해 AWS Secrets Manager에 접근하는 코드입니다.
@aws-sdk/client-secrets-manager 라이브러리를 사용하며, SecretsManagerClient를 활용해 사용자가 제공한 ARN이나 Name 을 가진 시크릿 매니저 값에 접근하여, SecretString 값을 가져올 수 있습니다.
SecretString의 값은 {"key": "value"} 형식으로 되어 있기 때문에, JSON.parse를 통해 value 값에 접근할 수 있습니다.
import {
GetSecretValueCommand,
SecretsManagerClient,
} from "@aws-sdk/client-secrets-manager";
export const getSecretsValue = async () => {
const secretsManagerArn = process.env.SECRETS_MANAGER_ARN; // param or env
const client = new SecretsManagerClient();
const response = await client.send(
new GetSecretValueCommand({
SecretId: secretsManagerArn // arn 및 name도 가능
}),
);
if (response.SecretString) {
const parsedSecret = JSON.parse(response.SecretString);
return parsedSecret.key; // {"key": "value"}, value 값 가져오기
}
};
2. python
아래 코드는 위의 node + 타입 스크립트와 같은 기능을 하는 코드이며, 파이썬으로 작성되었습니다.
boto3라는 라이브러리를 사용하여 AWS Secrets Manager Client를 생성하며, 이 역시도 ARN 혹은 Name 값을 사용하여 AWS 시크릿 매니저의 값에 접근할 수 있습니다.
이 역시 SecretString의 값은 {"key": "value"} 형식으로 되어 있기 때문에, json.loads()를 통해 value 값에 접근할 수 있습니다.
import boto3
from botocore.exceptions import ClientError
def get_secrets():
region_name = "ap-northeast-2"
# Create a Secrets Manager client
session = boto3.session.Session()
client = session.client(
service_name='secretsmanager',
region_name=region_name
)
try:
get_secret_value_response = client.get_secret_value(
SecretId=os.environ['SECRETS_MANAGER_ARN'] // arn 및 name 가능
)
except ClientError as e:
raise e
secret = get_secret_value_response['SecretString']
value = json.loads(
secret
)
return value['key'] # {"key": "value"}
'AWS > AWS 공부' 카테고리의 다른 글
[AWS] Secrets Manager 생성 및 값 가져오기 in JAVA (0) | 2024.03.07 |
---|---|
[AWS] dynamoDB 저장 in Node (1) | 2024.03.07 |
[SQS] SQS, DLQ 정리 (0) | 2023.07.08 |
[AWS] Amazon S3 정리 (0) | 2023.06.18 |
[AWS] EC2 정리 (0) | 2023.06.18 |