有没有办法使用boto将Name标签添加到创建的快照?

时间:2014-07-21 21:05:11

标签: python amazon-ec2 boto

我没有运气找到这个浏览API文档。如果不可能,我会感到惊讶。我有这个用boto创建快照:

conn.create_snapshot(volume_id, "This shows up in the description column")

这有效,但我想用{Name:“my tag”}正确标记快照。有没有人知道在创建快照时是否有办法做到这一点?如果这不可能,是否可以在创建后向快照对象添加标签?

3 个答案:

答案 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()调用已合并到其中。