【发布时间】:2020-01-07 17:31:10
【问题描述】:
我是 Python 编程新手,正在尝试开发 AWS Lambda。它是用 Python 3.6 编写的,可以创建可用 EBS 卷的快照,以便稍后使用 boto3 调用进行删除。我希望 Lambda 的逻辑遍历卷标签。如果标签列表中有特定标签,则根据要删除的卷的日期处理一些评估逻辑。如果集合中不存在指定的标签,或者标签为无,则继续创建快照。
我的 Lambda 将使用指定标签的逻辑并正常创建快照。我正在努力使用正确的循环语法来处理所有卷标签作为字典。它希望单独循环遍历卷的每个标签,而不是一次作为一个集合。
for vol in ec2.volumes.all():
if vol.state == 'available':
volid = vol.id
tags = {}
for tag in vol.tags:
if tag['Key'] == 'DeleteMeAfter':
print("===================")
print(", ".join((
volid,
tag['Key'],
tag['Value']
)))
### Process additional logic on tag['Value'] ###
当我将 elif/else 语句添加到 if 标记语句时,它会尝试创建同一卷的多个快照。
“调用 CreateSnapshot 操作时发生错误 (SnapshotCreationPerVolumeRateExceeded):已超出每个卷的最大 CreateSnapshot 请求速率。”
任何帮助将不胜感激!
【问题讨论】:
-
您是在尝试创建快照还是删除快照?
-
如此令人困惑的问题,但错误让您知道您已达到极限。
-
只需在这个 Lambda 中创建快照。一旦我创建了一个成功的快照,有一个单独的 Lambda 将删除该卷。问题是我迄今为止编写代码的方式,它遍历标签试图创建同一卷的多个快照。因此遇到了错误。
标签: python-3.x amazon-web-services amazon-ec2 aws-lambda boto3