[Python Lamda提供的AWS RDS快照

问题描述 投票:2回答:1

我正在尝试通过AWS Lamda(python 3.6)函数创建/删除我的AWS RDS快照,但是我不知道我做错了什么,该函数还会删除7天后的快照,因此任何人都可以建议我对此

import boto3
import datetime

def lambda_handler(event, context):
    print("Connecting to RDS")
    client = boto3.client('rds')
    dbInstances = ['magento-live']

    for dbInstance in dbInstances:
        print("RDS snapshot backups started at %s...\n" % datetime.datetime.now())

        client.create_db_snapshot(
            DBInstanceIdentifier=dbInstance,
            DBSnapshotIdentifier=dbInstance+'{}'.format(datetime.datetime.now().strftime("%y-%m-%d-%H")),
            Tags=[
                {
                    'Key': 'NI',
                    'Value': 'NIRDS'

                },
            ]
        )

        for snapshot in client.describe_db_snapshots(DBInstanceIdentifier=dbInstance, MaxRecords=50)['DBSnapshots']:
            createTs = snapshot['SnapshotCreateTime'].replace(tzinfo=None)
            if createTs < datetime.datetime.now() - datetime.timedelta(days=7):
                print("Deleting snapshot id:", snapshot['DBSnapshotIdentifier'])
                client.delete_db_snapshot(
                    DBSnapshotIdentifier=snapshot['DBSnapshotIdentifier']
                )

但是我总是会遇到错误

    {
  "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)"
    ]
  ]
}
python amazon-web-services snapshot
1个回答
0
投票

阿伦是对的。您使用了另一种方法(适用于aurora群集而不是数据库实例)。

这是一个对我有用的lambda函数:

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_cluster_snapshot(
    DBClusterIdentifier='enter-your-cluster-name-her', 
    DBClusterSnapshotIdentifier='enter-your-cluster-name-here-%s' % datetime.datetime.now().strftime("%y-%m-%d-%H"),
    Tags=[
        {
            'Key': 'ENV',
            'Value': 'dev'
        },
    ]
)
© www.soinside.com 2019 - 2024. All rights reserved.