请求协助修改AWS CLI Bash脚本:遍历多配置文件与区域
修改后的多配置文件+多区域EC2实例查询脚本
先创建一个存储AWS配置文件的文本文件,比如命名为aws_profiles.txt,每行填写一个配置文件名称,示例内容:
default dev-profile prod-profile
接下来是修改后的脚本,实现同时遍历配置文件和区域:
# 定义区域和配置文件的文件名 REGIONS_FILE="aws_regions.txt" PROFILES_FILE="aws_profiles.txt" # 读取区域列表和配置文件列表 AWSREGIONS=$(cat "$REGIONS_FILE") AWSPROFILES=$(cat "$PROFILES_FILE") # 外层循环遍历每个AWS配置文件 for profile in $AWSPROFILES do echo "\n===== 使用配置文件: '$profile' 查询实例 =====" # 内层循环遍历每个区域 for region in $AWSREGIONS do echo "\n正在查询区域: '$region' 下的实例..." aws ec2 describe-instances \ --filters "Name=tag:name,Values=test" \ --output text \ --query 'Reservations[].Instances[].[InstanceId, PrivateIpAddress, Tags[?Key==`Name`].Value[] | [0]]' \ --region "$region" \ --profile "$profile" done done
关键修改说明
- 新增
PROFILES_FILE变量指定配置文件列表路径,读取该文件内容得到配置文件列表 - 采用嵌套循环:先遍历每个AWS配置文件,再在每个配置文件下遍历所有区域执行查询
- 把原脚本中固定的
--profile default替换为遍历变量--profile "$profile" - 增加分隔线输出,方便区分不同配置文件的查询结果
注意事项
- 确保
aws_profiles.txt文件中每行只有一个配置文件名,避免多余空格或空行 - 确认每个配置文件已在本地AWS配置文件(通常是
~/.aws/config或~/.aws/credentials)中正确配置 - 如果区域文件或配置文件路径不在脚本执行目录,需填写完整绝对路径
内容的提问来源于stack exchange,提问作者difficultyadequate
相关产品推荐
相关产品推荐

