我没有运气找到这个浏览API文档。如果不可能,我会感到惊讶。我有这个用boto创建快照:
conn.create_snapshot(volume_id, "This shows up in the description column")
这有效,但我想用{Name:“my tag”}正确标记快照。有没有人知道在创建快照时是否有办法做到这一点?如果这不可能,是否可以在创建后向快照对象添加标签?
答案 0 :(得分:9)
创建快照时无法添加标签。 EC2 API不支持这一点。但是,您可以在创建快照后轻松标记快照。有几种方法可以做到这一点。
第一个使用Snapshot
方法返回的create_snapshot
对象:
snapshot = conn.create_snapshot(volume_id, "This shows up in the description column")
snapshot.add_tags({'foo': 'bar', 'fie': 'bas'})
或者,您可以使用通用create_tags
方法,该方法可用于向任何可标记资源添加标记:
conn.create_tags('snap-12345678', {'foo': 'bar', 'fie': 'baz'})
答案 1 :(得分:0)
我已设法仅使用create_tags
方法执行此操作(add_tags
方法引发了上述JavaQueen在评论中提到的AttributeError
错误。
示例:
snapshot = conn.create_snapshot(volume_id, "This shows up in the description column")
conn.create_tags(
Resources=[
snapshot['SnapshotId'],
],
Tags=[
{'Key': 'Name', 'Value': 'myTagValue'}
]
)
受到Eddie Trejo贡献的启发:https://stackoverflow.com/a/44796462/1973233
注意:您可能必须更新要授予Allow: ec2:CreateSnapshot
权限的基础策略。
答案 2 :(得分:0)
根据this AWS announcement,自2018年4月起创建快照时可以传递标签。
这里是一个片段,它就是这样做的:
snap = ec.create_snapshot(
Description = "Recent Snapshot",
VolumeId = volume_id,
TagSpecification = [{
'ResourceType': 'snapshot',
'Tags': [
{'Key': 'Name', 'Value': snapshot},
{'Key': 'InstanceId', 'Value': instance_id}
]
}]
)
如您所见,以前的ec2.create_tags()
调用已合并到其中。