我最终试图获取/构建快照的ARN,以便将其与详细的计费报告相匹配。快照在详细计费报告中记录的ResourceId示例如下所示。
arn:aws:ec2:us-east-2:210987654321:snapshot/snap-12345678901234567
boto3中的describe_snapshots()
方法只返回此信息
{
'Description': 'Created by CreateImage(i-12345678901234567) for ami-12345678901234567 from vol-12345678901234567',
'Encrypted': False,
'OwnerId': '210987654321',
'Progress': '100%',
'SnapshotId': 'snap-12345678901234567',
'StartTime': datetime.datetime(2020, 10, 22, 16, 24, 14, 564000, tzinfo=tzlocal()),
'State': 'completed',
'VolumeId': 'vol-12345678901234567',
'VolumeSize': 8
}
最终,我唯一缺少的信息是确定快照是在哪个区域创建的。如果我能在某个地方找到这些信息,我就可以自己构建ARN。
我已经考虑过通过获取与快照关联的卷来查找区域,但是,快照似乎可以在没有卷的情况下存在,因此不是检索此信息的理想方法。如有任何建议,我们将不胜感激。
基于注释。
describe_snapshots
仅返回当前区域的快照。因此,通过明确设置区域,或使用boto3中的默认区域,可以获得构建ARN所需的区域。
要从多个区域获取快照,可以迭代感兴趣的区域,并使用boto3.client
从不同区域获取快照:
ec2 = boto3.client('ec2', region_name='<region-name>')