【问题标题】:How to retrieve all snapshots related to a AWS EC2 instance using BOTO3 Python?如何使用 BOTO3 Python 检索与 AWS EC2 实例相关的所有快照?
【发布时间】:2018-05-24 16:20:12
【问题描述】:

我纠结于这种情况:我可以检索与 EC2 实例关联的卷的所有快照,但是一旦 EC2 实例被删除,其关联卷也会被删除。我一直在摸索 Boto3 文档并苦苦挣扎。下面是我列出与卷关联的快照的工作示例。

import boto3
ec2 = boto3.resource('ec2')
volume_id = "something"
list_of_snapshots = []
vol = ec2.Volume(id=volume_id)
snapshots = vol.snapshots.all()
    try:
        for snapshot in snapshots:
            if snapshot:
                list_of_snapshots.append(snapshot.id)
        return list_of_snapshots[0]
    except:
        return None

【问题讨论】:

    标签: python amazon-web-services amazon-ec2 boto3


    【解决方案1】:

    一个选项是在最初创建卷时对其进行标记。即使删除了实例,这些标签也会保留在卷中。

    Amazon EC2 现在可以在启动时将标签传播到卷。

    见:Tag EC2 Instances & EBS Volumes on Creation | AWS News Blog

    【讨论】:

    • 这正是我使用的,但在某处应该有 instance-id 没有意义:/。它实际上很有用。
    【解决方案2】:

    正如@John Rotenstein 所建议的,

    目前可能的解决方案是在创建快照时在标签内添加 VolumeID,因此代码变成了这样:

    import boto3
    ec2 = boto3.client('ec2')
    volume_id= "something"
    list_of_snapshots = []
        snapshots = ec2.describe_snapshots(Filters=[{'Name':'tag:volume_id', 'Values': [volume_id]}])['Snapshots']
        try:
            for snapshot in snapshots:
                if snapshot:
                    list_of_snapshots.append(snapshot['SnapshotId'])
            return list_of_snapshots
        except:
            return None
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-19
      • 2021-02-24
      • 2016-04-16
      • 2019-09-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-11
      • 1970-01-01
      相关资源
      最近更新 更多