Please read my previous article - How to retrieve DynamoDB items using secrets stored in AWS Secrets Manager with AWS Lambda - 1
Let’s get started!
Please visit my GitHub Repository for DynamoDB articles on various topics being updated on constant basis.
Pre-requisites:
- AWS user account with admin access, not a root account.
- Create an IAM role
Resources Used:
Steps for implementation to this project:
Part 2
6. Create a Secret Manager to Store Access key and Secret Access keys
1
2
3
4
- Next
- Next
- Store
5
6
7. Write a Lambda code to create DynamoDB Items by retrieving the access keys from Secrets Manager.
1
Click on
Functions
at the left side and select the Function you created.Select the
Code
tab under the lambdamyFunction
Copy the
file3
, replace it with the existing code and and change theSecret ARN
in file3
import boto3 import json import base64 def lambda_handler(event, context): secret_name = "arn:aws:secretsmanager:us-east-1:xxxxxxxxxxxx:secret:mySecret-q7slUY" # Create a Secrets Manager client secretClient = boto3.client( service_name = 'secretsmanager', region_name = 'us-east-1' ) get_secret_value_response = secretClient.get_secret_value( SecretId=secret_name ) secret = get_secret_value_response['SecretString'] Table_name = 'myTable2' print('DynamoDB Table creation started.') dynamodb = boto3.resource( 'dynamodb', aws_access_key_id = json.loads(secret).get('Access Key'), aws_secret_access_key = json.loads(secret).get('Secret Access Key'), region_name = 'us-east-1' ) student_table = dynamodb.create_table( TableName = Table_name, KeySchema = [ { 'KeyType': 'HASH', 'AttributeName': 'StudId' } ], AttributeDefinitions=[ { 'AttributeName': 'StudId', 'AttributeType': 'N' } ], ProvisionedThroughput={ 'ReadCapacityUnits': 2, 'WriteCapacityUnits': 2 } ) # Wait until the Table gets created student_table.meta.client.get_waiter('table_exists').wait(TableName = Table_name) print('DynamoDB Table Creation Completed.') print('Insert Student data to table started.') # Insert 1st item into DynamoDB table table = dynamodb.Table(Table_name) table.put_item( Item = { 'StudId': 100, 'FirstName': 'Rev1', 'LastName': 'Joshi1', 'Dept': 'Science', 'Age': 11 } ) # Insert 2nd item into DynamoDB table table.put_item( Item = { 'StudId': 200, 'FirstName': 'Rev2', 'LastName': 'Joshi2', 'Dept': 'Science', 'Age': 22 } ) # Insert 3rd item into DynamoDB table table.put_item( Item = { 'StudId': 300, 'FirstName': 'Rev3', 'LastName': 'Joshi3', 'Dept': 'Science', 'Age': 33 } ) print('Insert Student data to table Completed.')
- Deploy
- Test
- Output
2
8. View DynamoDB Table created in console.
1
2
- Select the table
myTable2
and click onExplore table items
Button in the right side
9. Write a lambda code to view the table items using a secret manager.
1
Click on
Functions
at the left side and select the Function you created.Select the
Code
tab under the lambdamyFunction
Copy the
file4
, replace it with the existing code and change theSecret ARN
infile4
import boto3 import json import base64 def lambda_handler(event, context): secret_name = "arn:aws:secretsmanager:us-east-1:xxxxxxxxxxxx:secret:mySecret-q7slUY" # Create a Secrets Manager client secretClient = boto3.client( service_name = 'secretsmanager', region_name = 'us-east-1' ) get_secret_value_response = secretClient.get_secret_value( SecretId=secret_name ) secret = get_secret_value_response['SecretString'] Table_name = 'myTable2' # Create a DynamoDB table print('DynamoDB Table creation started.') dynamodb = boto3.resource( 'dynamodb', aws_access_key_id = json.loads(secret).get('Access Key'), aws_secret_access_key = json.loads(secret).get('Secret Access Key'), region_name = 'us-east-1' ) # Connect to table & Scan the entire table table = dynamodb.Table(Table_name) response = table.scan() print('---------------------------------------') print('------------STUDENT DETAILS------------') print('---------------------------------------') for item in response['Items']: print('Student Id : ', item['StudId']) print('Student Name : ', item['FirstName'], ' ', item['LastName']) print('Student Department : ', item['Dept']) print('Student Age : ', item['Age']) print('_______________________________') print('---------------------------------------')
- Deploy
- Test
- Output
Cleanup
- Delete Lambda Function
- Delete DynamoDB tables
- Delete Secrets
What we have done so far
- Successfully retrieved items from DynamoDB tables using secrets stored in AWS Secrets Manager with AWS Lambda function.
Top comments (0)