AWS/AWS 공부

[AWS] Secrets Manager get Value - in Node and Python

Yuco 2024. 3. 7. 20:59

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