【发布时间】:2020-05-06 10:43:40
【问题描述】:
我试图将每个快照 id 传递到 for 循环和打印中,但无济于事,每次我可以传递它时,它只在第一个快照上描述,并为所有人打印标签。
for snapshot in get_my_snapshots():
print ('Snapshot ID is equal to', snapshot['id'])
my_tag = ec2.describe_snapshots(Filters=[{'Name': 'tag:mytag', 'Values': ['TRUE']}])['Snapshots']
print (my_tag)
print('{:22} {:22}'.format(
snapshot['id'],
snapshot['description'],
))
我尝试了多种组合从函数中传递快照 id,但无济于事,如下所示。
for snapshot in get_my_snapshots():
print ('Snapshot ID is equal to', snapshot['id'])
my_tag = ec2.describe_snapshots(SnapshotId=snapshot['id'], Filters=[{'Name': 'tag:mytag', 'Values': ['TRUE']}])['Snapshots']
print (my_tag)
print('{:22} {:22}'.format(
snapshot['id'],
snapshot['description'],
))
如何将快照 id 传递到应用过滤器的描述中以获取每个快照的标签
能够使用下面的函数并在主体中调用for循环来解决
def get_tag_snapshots():
'''
Get all tags.
'''
global region_tags
ec2 = boto3.client('ec2', region_name=region_tags)
snap_tag = ec2.describe_snapshots(Filters=[{'Name': 'tag:mytag', 'Values': ['TRUE']}])
print ('Snap Tag!!', snap_tag)
ls_snaptags=[]
for snapshot in snap_tag['Snapshots']:
(ls_snaptags.append(snapshot['SnapshotId']))
snap_tag_id = snapshot['SnapshotId']
yield {
'snap_id': snapshot['SnapshotId'],
}
print ("Snapshot with mytag = True !! ",snapshot['SnapshotId'])
感谢约翰的帮助
【问题讨论】:
-
什么是
get_my_snapshots()?您可以编辑您的问题以显示它返回的示例吗? -
为什么代码指定 both
SnapshotIdand 过滤器?快照 ID 是唯一的,因此足以检索快照的详细信息。如果快照没有mytag=TRUE,它将不返回任何内容。如果您想“获取每个快照的标签”,那么 不要 指定过滤器。将返回所有标签。 -
我希望排除 mytag=TRUE 的快照。 mu 理解是 Filters 参数仅用于包含,我正在查看 for 循环中的过滤但在标签查找时遇到问题,只看到'Description','OwnerId','SnapshotId''StartTime'
标签: python-3.x amazon-web-services aws-lambda boto3 boto