【发布时间】:2016-09-27 07:56:16
【问题描述】:
我目前正在使用 AWS Lambda 来创建我的数据库的快照并删除超过 6 天的快照。我正在使用 Boto3 库与 AWS API 交互。我每天都在使用 CloudWatch 规则触发删除代码。
通常这可以正常工作,但我遇到了一个问题,即在月初(前 6 天)删除脚本似乎没有删除任何快照,即使存在超过 6 天的快照。
代码如下:
import json
import boto3
from datetime import datetime, timedelta, tzinfo
class Zone(tzinfo):
def __init__(self,offset,isdst,name):
self.offset = offset
self.isdst = isdst
self.name = name
def utcoffset(self, dt):
return timedelta(hours=self.offset) + self.dst(dt)
def dst(self, dt):
return timedelta(hours=1) if self.isdst else timedelta(0)
def tzname(self,dt):
return self.name
UTC = Zone(10,False,'UTC')
# Setting retention period of 6 days
retentionDate = datetime.now(UTC) - timedelta(days=6)
def lambda_handler(event, context):
print("Connecting to RDS")
rds = boto3.setup_default_session(region_name='ap-southeast-2')
client = boto3.client('rds')
snapshots = client.describe_db_snapshots(SnapshotType='manual')
print('Deleting all DB Snapshots older than %s' % retentionDate)
for i in snapshots['DBSnapshots']:
if i['SnapshotCreateTime'] < retentionDate:
print ('Deleting snapshot %s' % i['DBSnapshotIdentifier'])
client.delete_db_snapshot(DBSnapshotIdentifier=i['DBSnapshotIdentifier']
)
【问题讨论】:
标签: python aws-lambda boto3