Lambda/Python-Boto3: Copy multiple snapshots to another backup AWS account
Nowadays, I am juggling with Python-Boto3/Lambda. I have found many good posts to create/delete EBS snapshots using Lambda but didn’t find any post to copy multiple snapshots to another backup AWS account which comes under AWS best practices, hence I am writing this post with a thought that it will be definitely helpful.
Please follow below blog which having lambda scripts to create/delete EBS snapshots.
Below Boto3 script assumes that you already have TAGGED in your snapshots which you want to copy to another AWS account. In this example, I have chosen the tag “DeleteOn:*”.
Note: I am using 111111111111 as a source AWS account and 222222222222 as Target AWS account.
Here we go:-
ec2 = boto3.resource(‘ec2’)
client = boto3.client(‘ec2’)
response = client.describe_snapshots(
‘Values’: [ ‘DeleteOn’, ]
‘Values’: [ ‘*’, ]
snapshots = response[‘Snapshots’]
for snapshot in snapshots:
snap = snapshot[‘SnapshotId’]
a = ec2.Snapshot(snap)
b = a.modify_attribute(
Some important troubleshooting points :
- Use botocore version 1.4.70, if you will find below error while executing above script.
botocore.exceptions.DataNotFoundError: Unable to load data for: ec2/2016–09–15/service-2
2. How to install botocore particular version?
# pip install botocore==1.4.70
3. Same script you can run in AWS Lambda. Just need to add below lines on top of the code.
def lambda_handler(event, context):
Rest all code will be same.
Hope it will be useful !! :)