Amazon web services 跨多个帐户运行aws cli的方法
我试图找出10个不同帐户中运行非AmazonAMI映像的所有EC2实例。以下CLI命令提供了所有AMI的列表:Amazon web services 跨多个帐户运行aws cli的方法,amazon-web-services,aws-cli,amazon-ami,Amazon Web Services,Aws Cli,Amazon Ami,我试图找出10个不同帐户中运行非AmazonAMI映像的所有EC2实例。以下CLI命令提供了所有AMI的列表: aws ec2 describe-instances --output text --query 'Reservations[*].Instances[*].[ImageId]' | sort | uniq -c 我想我可以进一步修改它以获得所有非AmazonAMI,但是有没有一种方法可以在一次调用中跨10个不同的帐户运行它 有没有一种方法可以在一次通话中跨10个不同的帐户运行此功能
aws ec2 describe-instances --output text --query 'Reservations[*].Instances[*].[ImageId]' | sort | uniq -c
我想我可以进一步修改它以获得所有非AmazonAMI,但是有没有一种方法可以在一次调用中跨10个不同的帐户运行它
有没有一种方法可以在一次通话中跨10个不同的帐户运行此功能
不,那是不可能的。您需要编写一个循环,在每个帐户上迭代,为每个帐户调用一次
ec2 descripe instances
。下面是一个脚本,可以使用AMI查找所有者不在亚马逊的实例:
导入boto3
ec2_client=boto3.client('ec2',region_name='ap-Southast-2')
实例=ec2_客户端。描述_实例()
#获取一组用于所有实例的AMI
images=set(实例中r的i['ImageId']r['instances']的i['Reservations']
#找出哪些是亚马逊所有的
amis=ec2_客户端。描述_图像(ImageID=list(图像),所有者=['amazon'])
amazon_amis=[i['ImageId']表示amis['Images']]
#哪些实例不使用Amazon图像?
非亚马逊实例=[(i['InstanceId',i['ImageId'])对于实例中的r['Reservations']对于r中的i['instances'],如果i['ImageId']不在亚马逊实例中]
对于非亚马逊实例中的i:
打印(f“{i[0]}使用{i[1]}”)
需要注意的几点:
- 不推荐使用的AMI可能没有可访问的信息,因此可能被标记为非Amazon
- 如前所述,此脚本仅适用于一个区域。您可以将其更改为通过区域循环
- 正如所写的,这个脚本只在一个帐户上工作。您需要一种方法来循环其他帐户的凭据
ec2 descripe instances
调用中按ami所有者进行筛选,因为响应中不包含该信息。我不需要按所有者进行筛选。我只想知道AMI是亚马逊图片还是定制的。有更好的方法吗?所有者是如何检查的。您将检查Amazon是否是所有者。这没有所有者:aws ec2描述实例。我只在通过linux或windows搜索时获得所有者。我遗漏了什么吗?在Python中,使用boto3可能会更简单。