解析 AWS CLI 命令

Parsing AWS CLI commands

我想解析 AWS CLI 命令的输出

aws ec2 describe-transit-gateways

从上面,我想要得到的输出是作为标记示例给出的中转网关的名称:("Name": "dev-tgw")

我能够从以下脚本中检索 TGW ID 和中转网关所有者

result=`aws ec2 describe-transit-gateways --profile $acc`

  for tgw in $(echo "${result}" |jq -r '.TransitGateways[] | @base64'); do

    _jq() {

      echo ${tgw} | base64 --decode | jq -r 

    }
    
    Tgw=$(_jq '.TransitGatewayId')
    Tgw_owner=$(_jq '.OwnerId')
    Tgw_name=$(_jq '.Tags.Name')

    echo "$acc.Name"
    echo "Transit_Gateway": "$Tgw"
    echo "TGW_Owner_ID": "$Tgw_owner"
    echo "TGW_name": "$Tgw_name"

但我无法使用

检索 TGW 的名称
 Tgw_name=$(_jq '.Tags.Name')
 echo "TGW_name": "$Tgw_name"

我错过了什么或者我循环错了吗?

您可以尝试以下版本:

result=$(aws ec2 describe-transit-gateways --profile $acc)

for tgw in $(echo "${result}" | jq -r '.TransitGateways[] | @base64'); do

    _jq() {
      echo ${tgw} | base64 --decode | jq -r ""
    }
    
    Tgw=$(_jq '.TransitGatewayId')
    Tgw_owner=$(_jq '.OwnerId')
    Tgw_name=$(_jq '.Tags[] | select(.Key == "Name").Value')
    
    echo "$acc.Name"
    echo "Transit_Gateway": "$Tgw"
    echo "TGW_Owner_ID": "$Tgw_owner"
    echo "TGW_name": "$Tgw_name"
    
done