gpt4 book ai didi

python - Boto3 和 AWS Lambda - 删除早于

转载 作者:行者123 更新时间:2023-11-30 22:49:33 26 4
gpt4 key购买 nike

我目前正在使用 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']
)

最佳答案

代码看起来非常好并且 you are following the documentation

我只想添加

    print(i['SnapshotCreateTime'], retentionDate)

在for循环中,日志会快速告诉你每个月初发生了什么。

顺便说一句,您使用的是 AWS 的 RDS 吗? RDS支持自动创建快照,您还可以定义保留期限。无需创建自定义 lambda 脚本。

关于python - Boto3 和 AWS Lambda - 删除早于,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39696136/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com