Quantcast
Channel: Active questions tagged python - Stack Overflow
Viewing all articles
Browse latest Browse all 14126

Using AWS Secrets Manager with Python (Lambda Console)

$
0
0

I am attempting to use Secrets Manager a Lambda function in AWS. Secrets a manager is used to store database credentials to Snowflake (username, password).

I managed to set up a secret in Secrets Manager which contains several key/value pairs (e.g. one for username, another for password).

Now I am trying to refer to these values in my Python function code. AWS documentation kindly provides the following snippet:

import boto3import base64from botocore.exceptions import ClientErrordef get_secret():    secret_name = "MY/SECRET/NAME"    region_name = "us-west-2"    # Create a Secrets Manager client    session = boto3.session.Session()    client = session.client(        service_name='secretsmanager',        region_name=region_name    )    # In this sample we only handle the specific exceptions for the 'GetSecretValue' API.    # See https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_GetSecretValue.html    # We rethrow the exception by default.    try:        get_secret_value_response = client.get_secret_value(            SecretId=secret_name        )    except ClientError as e:        if e.response['Error']['Code'] == 'DecryptionFailureException':            # Secrets Manager can't decrypt the protected secret text using the provided KMS key.            # Deal with the exception here, and/or rethrow at your discretion.            raise e        elif e.response['Error']['Code'] == 'InternalServiceErrorException':            # An error occurred on the server side.            # Deal with the exception here, and/or rethrow at your discretion.            raise e        elif e.response['Error']['Code'] == 'InvalidParameterException':            # You provided an invalid value for a parameter.            # Deal with the exception here, and/or rethrow at your discretion.            raise e        elif e.response['Error']['Code'] == 'InvalidRequestException':            # You provided a parameter value that is not valid for the current state of the resource.            # Deal with the exception here, and/or rethrow at your discretion.            raise e        elif e.response['Error']['Code'] == 'ResourceNotFoundException':            # We can't find the resource that you asked for.            # Deal with the exception here, and/or rethrow at your discretion.            raise e    else:        # Decrypts secret using the associated KMS CMK.        # Depending on whether the secret is a string or binary, one of these fields will be populated.        if 'SecretString' in get_secret_value_response:            secret = get_secret_value_response['SecretString']        else:            decoded_binary_secret = base64.b64decode(get_secret_value_response['SecretBinary'])    # Your code goes here.

Later in my def lambda_handler(event, context) function, I have the following snippet to establish a connection to my database:

        conn = snowflake.connector.connect(            user=USERNAME,            password=PASSWORD,            account=ACCOUNT,            warehouse=WAREHOUSE,            role=ROLE            )

However, I am unable to figure out how to use the get_secret() function to return values for parameters like USERNAME or PASSWORD.

How can this be accomplished? Thank you for the help!


Viewing all articles
Browse latest Browse all 14126

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>