search
HomeBackend DevelopmentPython TutorialScheduling Amazon DynamoDB Backups with Lambda, Python, and Boto3

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.

屏幕截图 2024-10-29 094728.png

Create the DynamoDB Table

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.

Create the IAM Execution Role

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:

  1. Navigate to IAM.
  2. Navigate to Policies.
  3. Click Create Policy.
  4. Select the JSON tab.
  5. Replace the default content with the following JSON statement:
{   "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.

  1. Click Review Policy.
  2. Name this policy LambdaBackupDynamoDBPolicy.
  3. Click Create Policy.

Now that the policy is created, you must create a role to which this policy is attached.

  1. Within IAM, navigate to Roles.
  2. Click Create Role.
  3. Select the type of trusted entity: AWS service.
  4. Choose the service that will use this role: Lambda.
  5. Click Next: Permissions.
  6. In the search box, find the LambdaBackupDynamoDBPolicy created in the previous step.
  7. Check the checkbox next to the policy name.
  8. Click Next: Tags.
  9. Click Next: Review.
  10. Role name: LambdaBackupDynamoDBRole.
  11. Click Create role.

Create the Lambda Function

Let's create our Lambda function!

  1. Navigate to Lambda.
  2. Click Create function.
  3. Select Author from scratch.
  4. Function name: BackupDynamoDB.
  5. Runtime: Python 3.7.
  6. Under Permissions, select Choose or create an execution role.
  7. Under Execution Role, select Use an existing role.
  8. Under Existing Role, select LambdaBackupDynamoDBRole, created in the previous step.
  9. Click Create function.

Paste the following source code into the Lambda function's code editor:Click Save at the top right of the screen.

Create a CloudWatch Rule

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.

  1. Navigate to CloudWatch.
  2. Navigate to Events > Rules.
  3. Click Create rule.
  4. Schedule event to run at the desired interval (e.g., every 1 day).
  5. Click Add target.
  6. Under Lambda function, select  BackupDynamoDB.
  7. Under Configure input, select Constant(JSON text).
  8. Set the value to the JSON statement:
    aws dynamodb create-table --table-name Person  --attribute-definitions AttributeName=id,AttributeType=N  --key-schema AttributeName=id,KeyType=HASH  --billing-mode=PAY_PER_REQUEST
  9. Click Configure details.
  10. Name: BackupDynamoDBDaily (or whatever you prefer).
  11. Click Create rule.
  12. Wait for the CloudWatch rule to trigger the next backup job you have scheduled. If you're impatient like me, you can set the schedule interval to 1 minute, and you'll see it run sooner.
  13. Verify the scheduled backup job ran using CloudWatch Logs. The Log Group will be named /aws/lambda/BackupDynamoDB, with a stream for each invocation.
  14. Verify the backup file exists in the list of DynamoDB backups.


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!

Statement
This article is reproduced at:pluralsight.com. If there is any infringement, please contact admin@php.cn delete
Merging Lists in Python: Choosing the Right MethodMerging Lists in Python: Choosing the Right MethodMay 14, 2025 am 12:11 AM

TomergelistsinPython,youcanusethe operator,extendmethod,listcomprehension,oritertools.chain,eachwithspecificadvantages:1)The operatorissimplebutlessefficientforlargelists;2)extendismemory-efficientbutmodifiestheoriginallist;3)listcomprehensionoffersf

How to concatenate two lists in python 3?How to concatenate two lists in python 3?May 14, 2025 am 12:09 AM

In Python 3, two lists can be connected through a variety of methods: 1) Use operator, which is suitable for small lists, but is inefficient for large lists; 2) Use extend method, which is suitable for large lists, with high memory efficiency, but will modify the original list; 3) Use * operator, which is suitable for merging multiple lists, without modifying the original list; 4) Use itertools.chain, which is suitable for large data sets, with high memory efficiency.

Python concatenate list stringsPython concatenate list stringsMay 14, 2025 am 12:08 AM

Using the join() method is the most efficient way to connect strings from lists in Python. 1) Use the join() method to be efficient and easy to read. 2) The cycle uses operators inefficiently for large lists. 3) The combination of list comprehension and join() is suitable for scenarios that require conversion. 4) The reduce() method is suitable for other types of reductions, but is inefficient for string concatenation. The complete sentence ends.

Python execution, what is that?Python execution, what is that?May 14, 2025 am 12:06 AM

PythonexecutionistheprocessoftransformingPythoncodeintoexecutableinstructions.1)Theinterpreterreadsthecode,convertingitintobytecode,whichthePythonVirtualMachine(PVM)executes.2)TheGlobalInterpreterLock(GIL)managesthreadexecution,potentiallylimitingmul

Python: what are the key featuresPython: what are the key featuresMay 14, 2025 am 12:02 AM

Key features of Python include: 1. The syntax is concise and easy to understand, suitable for beginners; 2. Dynamic type system, improving development speed; 3. Rich standard library, supporting multiple tasks; 4. Strong community and ecosystem, providing extensive support; 5. Interpretation, suitable for scripting and rapid prototyping; 6. Multi-paradigm support, suitable for various programming styles.

Python: compiler or Interpreter?Python: compiler or Interpreter?May 13, 2025 am 12:10 AM

Python is an interpreted language, but it also includes the compilation process. 1) Python code is first compiled into bytecode. 2) Bytecode is interpreted and executed by Python virtual machine. 3) This hybrid mechanism makes Python both flexible and efficient, but not as fast as a fully compiled language.

Python For Loop vs While Loop: When to Use Which?Python For Loop vs While Loop: When to Use Which?May 13, 2025 am 12:07 AM

Useaforloopwheniteratingoverasequenceorforaspecificnumberoftimes;useawhileloopwhencontinuinguntilaconditionismet.Forloopsareidealforknownsequences,whilewhileloopssuitsituationswithundeterminediterations.

Python loops: The most common errorsPython loops: The most common errorsMay 13, 2025 am 12:07 AM

Pythonloopscanleadtoerrorslikeinfiniteloops,modifyinglistsduringiteration,off-by-oneerrors,zero-indexingissues,andnestedloopinefficiencies.Toavoidthese:1)Use'i

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

SublimeText3 Linux new version

SublimeText3 Linux new version

SublimeText3 Linux latest version

SecLists

SecLists

SecLists is the ultimate security tester's companion. It is a collection of various types of lists that are frequently used during security assessments, all in one place. SecLists helps make security testing more efficient and productive by conveniently providing all the lists a security tester might need. List types include usernames, passwords, URLs, fuzzing payloads, sensitive data patterns, web shells, and more. The tester can simply pull this repository onto a new test machine and he will have access to every type of list he needs.

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Powerful PHP integrated development environment

DVWA

DVWA

Damn Vulnerable Web App (DVWA) is a PHP/MySQL web application that is very vulnerable. Its main goals are to be an aid for security professionals to test their skills and tools in a legal environment, to help web developers better understand the process of securing web applications, and to help teachers/students teach/learn in a classroom environment Web application security. The goal of DVWA is to practice some of the most common web vulnerabilities through a simple and straightforward interface, with varying degrees of difficulty. Please note that this software

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor