Let's assume you want to make a backup of one of your DynamoDB tables each day. We also want to retain backups for a specified period of time.A simple way to achieve this is to use an Amazon CloudWatch Events rule to trigger an AWS Lambda function daily. In this hands-on AWS lab, you will write a Lambda function in Python using the Boto3 library.Setting this up requires configuring an IAM role, setting a CloudWatch rule, and creating a Lambda function.
You can certainly use any DynamoDB table you have in your account for this exercise, but if you want to create one using the AWS CLI, you may use the following command:
aws dynamodb create-table --table-name Person --attribute-definitions AttributeName=id,AttributeType=N --key-schema AttributeName=id,KeyType=HASH --billing-mode=PAY_PER_REQUEST
This will create a DynamoDB table called Person, with a primary key id.
All Lambda functions require an IAM role that defines the permissions granted to it. This is referred to as the Lambda function's execution role.First, we'll walk through the process of authoring our IAM role for the Lambda function and creating the Lambda function itself.We'll be using the AWS Management Console for this task:
{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource":"arn:aws:logs:*:*:*" }, { "Action":[ "dynamodb:CreateBackup", "dynamodb:DeleteBackup", "dynamodb:ListBackups" ], "Effect":"Allow", "Resource":"*" } ]}
This statement grants two sets of permissions. First, it grants the ability to log to CloudWatch Logs. With this permission, any Python print() statements will display in CloudWatch Logs.Second, we grant permission for the Lambda function to create, list, and delete DynamoDB backups on all tables.
Now that the policy is created, you must create a role to which this policy is attached.
Let's create our Lambda function!
Paste the following source code into the Lambda function's code editor:Click Save at the top right of the screen.
Next, we'll create a CloudWatch rule to schedule the Lambda function to run at regular intervals. This will perform backups of the DynamoDB table and remove stale backups.
aws dynamodb create-table --table-name Person --attribute-definitions AttributeName=id,AttributeType=N --key-schema AttributeName=id,KeyType=HASH --billing-mode=PAY_PER_REQUEST
The above is the detailed content of Scheduling Amazon DynamoDB Backups with Lambda, Python, and Boto3. For more information, please follow other related articles on the PHP Chinese website!