如何列出多个账户(配置文件)的所有 EC2 实例

How to list all EC2 instances of multiple accounts (profiles)

我可以给这个命令一个选项,让它遍历我所有的 profiles/accounts 吗?

aws ec2 describe-instances --query "Reservations[*].Instances[*].
{PublicIP:PublicIpAddress,Type:InstanceType,Name:Tags[?Key=='Name']|
[0].Value,Status:State.Name}"  --filters "Name=instance-state-name,Values=running"
"Name=tag:Name,Values='*'"  --output table

我必须 运行 在多个帐户中这样做,我想知道是否有办法避免编写循环遍历所有配置文件的脚本

如果有 --profile allProfiles 或 --profiles 之类的东西,我找不到任何地方 [*]

您需要创建一个简单的脚本,因为 aws cli 仅适用于单个配置文件。

bash 中,类似于:

for profile in `aws configure list-profiles`; do aws ec2 describe-instances --profile $profile ;done;   

可能有用的是将每个命令的输出附加到同一个文件,然后像处理单个命令的输出一样处理该文件:

outputFile=`mktemp` ; for profile in `aws configure list-profiles`; do aws ec2 describe-instances --profile  $profile >> $outputFile  ;done; cat $outputFile

对于 json,您可能希望在附加到文件之前处理通过 jq 输出的命令。