【发布时间】:2020-12-07 15:18:34
【问题描述】:
我对 python 和在 AWS 上编写 lambda 函数相当陌生。我现在阅读了很多博文和文章,最终偶然发现了我目前正在“测试”的以下脚本。
…
# Connect to region
ec2 = boto3.client('ec2', region_name=reg)
# grab all snapshot id's
result = ec2.describe_snapshots( OwnerIds=[account_id] )
# result = ec2.describe_snapshots( Filters=[{'Name': 'tag:retention', 'Values': ['keep']},{'Name': 'owner-id','Values': ['111111111111']}] )
for snapshot in result['Snapshots']:
print "Checking snapshot %s which was created on %s" % (snapshot['SnapshotId'],snapshot['StartTime'])
# for tag in snapshots:
…
我要删除所有比保留天数更早的快照,但所有具有标签“保留”且值为“保留”的快照除外。
谁能帮我看看如何在 for 循环中做到这一点?
问题是:我什至是否在 for 循环中执行此操作并以某种方式过滤 snapshot[Tags] 或其他什么,或者我是否使用上面的过滤器?
我想如果我在 describe_snapshots 中使用过滤器,我只会得到带有标签的快照。 但我想检索所有快照,然后对除带有标签的快照之外的所有快照运行删除命令。
我们将不胜感激。提前致谢
【问题讨论】:
-
你能告诉我你的所有快照是否至少有一个标签吗?或者很少有标签,很少有没有标签。
-
更新了代码,如果您遇到任何问题,请尝试告诉我。您只需根据需要更改
retention_days = datetime.now() - timedelta(days=30)保留天数。 -
你测试了吗?
标签: python amazon-web-services aws-lambda