get subnet id AWS



我试图获得特定VPC内的子网id并将它们存储在变量中所以我可以在bash脚本中使用它们

aws ec2 describe-subnets --filter "Name=vpc-id,Values=VPCid" --region $REGION --query "Subnets[*].SubnetId" --output text

就得到了这样的结果

subnet-12345        subnet-78910
(END)

我想知道如何将它们存储到一个变量中。

I tried with

SBnet=$(aws ec2 describe-subnets --filter "Name=vpc-id,Values=VPCid" --region $REGION --query "Subnets[*].SubnetId" --output text)

但是我不知道我可以访问创建的数组/列表

I tried with

echo $(SBnet[0]) 

但不工作

我在MACos上使用zsh

您可以这样做(添加VPC和区域):

#!/bin/bash
SUBNET_IDS=$(aws ec2 describe-subnets --filter "Name=vpc-id,Values=vpc-1234" --query "Subnets[*].SubnetId" --output text)
for SUBNET_ID in $SUBNET_IDS;
do
echo $SUBNET_ID
done

要将子网id列表拆分为变量,可以这样做:

#!/bin/bash
SUBNET_IDS=$(aws ec2 describe-subnets --filter "Name=vpc-id,Values=vpc-1234" --query "Subnets[*].SubnetId" --output text)
IFS=$'t ' read -r -a subnet_ids <<< $SUBNET_IDS
echo "${subnet_ids[0]}"
echo "${subnet_ids[1]}"

单个子网id将在subnet_ids数组中。

你可以像@jarmod建议的那样做,你也可以写一个查询,以逗号分隔的输出提取与系统中所有VPC绑定的所有子网,并进一步使用它,像这样

aws ec2 describe-subnets --query "Subnets[].[SubnetId,VpcId,CidrBlock,AvailabilityZone]" --output text|sed 's/t/,/g'

最新更新