Есть ли способ добавить тег имени к созданному снимку с помощью boto?

Мне не повезло найти этот просмотр документации по API. Я бы удивился, если бы это было невозможно. У меня есть это, чтобы создать снимок с помощью boto:

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

Это работает, но я хотел бы правильно пометить снимок {Name: "my tag"}. Кто-нибудь знает, есть ли способ сделать это при создании снимка? Если это невозможно, можно ли добавить тег к объекту моментального снимка после создания?


person numb3rs1x    schedule 21.07.2014    source источник


Ответы (3)


При создании снимка нельзя добавлять теги. API EC2 не поддерживает это. Однако вы можете легко пометить снимок после его создания. Есть несколько способов сделать это.

Первый использует объект 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'})
person garnaat    schedule 21.07.2014
comment
Интересно, что можно устанавливать теги для моментальных снимков RDS во время их создания. Даже Бото поддерживает это. - person Tuukka Mustonen; 07.04.2015
comment
Несоответствия между API — это вещь. - person garnaat; 07.04.2015
comment
На самом деле ваше решение дает мне эту ошибку AttributeError: 'dict' object has no attribute 'add_tags' when I want to add a tag to snapshot - person JavaQueen; 20.01.2017

Согласно это объявление AWS можно передавать теги при создании снимка с апреля 2018 года.

Вот фрагмент, который делает именно это:

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() был объединен с этим.

person dth    schedule 14.11.2018

Мне удалось сделать это, используя только метод create_tags (метод add_tags вызвал ошибку AttributeError, как упоминалось JavaQueen выше в комментариях).

Пример:

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

conn.create_tags(
            Resources=[
                snapshot['SnapshotId'],
            ],
            Tags=[
                {'Key': 'Name', 'Value': 'myTagValue'}
            ]
 )

Вдохновленный вкладом Эдди Трехо: https://stackoverflow.com/a/44796462/1973233

Примечание. Возможно, вам придется обновить базовую политику, чтобы получить разрешение Allow: ec2:CreateSnapshot.

person Laurent Camus    schedule 30.03.2018