Skip to content

Instantly share code, notes, and snippets.

@mzupan
Last active June 8, 2021 05:19
Show Gist options
  • Save mzupan/41d01bfb3b4c292fdac0 to your computer and use it in GitHub Desktop.
Save mzupan/41d01bfb3b4c292fdac0 to your computer and use it in GitHub Desktop.
AWS Lambda job to backup RDS instances
import boto3
import datetime
def lambda_handler(event, context):
print("Connecting to RDS")
client = boto3.client('rds')
print("RDS snapshot backups stated at %s...\n" % datetime.datetime.now())
client.create_db_snapshot(
DBInstanceIdentifier='web-platform-slave',
DBSnapshotIdentifier='web-platform-%s' % datetime.datetime.now().strftime("%y-%m-%d-%H"),
Tags=[
{
'Key': 'CostCenter',
'Value': 'web'
},
]
)
for snapshot in client.describe_db_snapshots(DBInstanceIdentifier='web-platform-slave', MaxRecords=50)['DBSnapshots']:
if create_ts < datetime.datetime.now() - datetime.timedelta(days=7):
print "Deleting snapshot id:", snapshot['DBSnapshotIdentifier']
client.delete_db_snapshot(
DBSnapshotIdentifier=snapshot['DBSnapshotIdentifier']
)
@songautam
Copy link

I am using the same code but getting below error -

{ "errorMessage": "An error occurred (InvalidParameterValue) when calling the CreateDBSnapshot operation: The specified instance is a member of a cluster and a snapshot cannot be created directly. Please use the CreateDBClusterSnapshot API instead.", "errorType": "ClientError", "stackTrace": [ [ "/var/task/lambda_function.py", 19, "lambda_handler", "'Value': 'NIRDS'" ], [ "/var/runtime/botocore/client.py", 312, "_api_call", "return self._make_api_call(operation_name, kwargs)" ], [ "/var/runtime/botocore/client.py", 605, "_make_api_call", "raise error_class(parsed_response, operation_name)" ] ] }

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment