【问题标题】:Getting VPC-ID for specific VPC获取特定 VPC 的 VPC-ID
【发布时间】:2020-04-08 10:02:42
【问题描述】:

创建 VPC 后,如何通过 aws ec2 describe-vpcs 从特定 VPC 中仅 grep 1 个 VPC-ID,以便可以在脚本中传递 VPC ID 以进行下一步,我知道我可以手动查看通过该命令或 AWS 控制台,

例如:

aws ec2 describe-vpcs --vpc-ids |grep VpcId
            "VpcId": "vpc-00a0338c2f671a77c",
            "VpcId": "vpc-0b3697513d5987516",
            "VpcId": "vpc-061e25f5f78877798",

它给了我所有这些,或者:

aws ec2 describe-vpcs --vpc-ids |grep -i ansible
                    "Value": "ANSIBLE_VPC",

但我只需要从命令中获取该特定 VPC 的 VPC-ID。

【问题讨论】:

  • 抱歉,您的问题不清楚。 “从命令获取该特定 VPC 的 VPC-ID”是什么意思?您是说您在此之前发出了aws ec2 create-vpc 命令吗?还是您正在根据标签的值寻找特定的 VPC?
  • 子网、IGW、路由器、安全组和 NACL 也是一样的
  • 我不确定您所说的“同样的事情......”是什么意思。下面的答案是否满足您的问题?如果没有,请编辑您的问题以澄清您在寻找什么。
  • 请注意,使用grep 查找资源ID 是脆弱的,应避免使用。您应该使用 awscli 自带的 --query 选项,或者您可以将 awscli 输出通过管道传输到名为 jq 的第三方工具中,该工具可以解析 JSON。

标签: amazon-web-services aws-cli amazon-vpc


【解决方案1】:

如果您刚刚发出了create-vpc 命令,则该 VPC 的 VPC ID 将被返回以响应该命令:

输出:

{
    "Vpc": {
        "CidrBlock": "10.0.0.0/16",
        "DhcpOptionsId": "dopt-5EXAMPLE",
        "State": "pending",
        "VpcId": "vpc-0a60eb65b4EXAMPLE",    <-- This is the VPC ID
        "OwnerId": "123456789012",
        "InstanceTenancy": "default",
        "Ipv6CidrBlockAssociationSet": [],
        "CidrBlockAssociationSet": [
            {
                "AssociationId": "vpc-cidr-assoc-07501b79ecEXAMPLE",
                "CidrBlock": "10.0.0.0/16",
                "CidrBlockState": {
                    "State": "associated"
                }
            }
        ],
        "IsDefault": false,
        "Tags": []
    }
}

因此,您可以像这样创建 VPC 并存储其 ID:

$ ID=`aws ec2 create-vpc --cidr-block 10.0.0.0/16 --query Vpc.VpcId --output text`

$ echo $ID
vpc-0fb4d08f9d6501e94

如果您正在寻找给定名称标签的 VPC 的 VPC ID,则可以使用:

$ ID=`aws ec2 describe-vpcs --filter Name=tag:Name,Values=ANSIBLE_VPC --query Vpcs[].VpcId --output text`

$ echo $ID
vpc-0fb4d08f9d6501e94

【讨论】:

    【解决方案2】:

    您可以只使用 aws cli,并使用过滤器和查询:

    aws ec2 describe-vpcs --filters Name=tag:Name,Values=ANSIBLE_VPC --query "Vpcs[].VpcId" --output text"
    

    或者您可以将--filters 命令与 grep 混合使用来完成您的任务:

    aws ec2 describe-vpcs --filters Name=tag:Name,Values=ANSIBLE_VPC | grep VpcId | grep -oh "vpc-\w*"
    

    【讨论】:

      猜你喜欢
      • 2019-11-27
      • 2021-10-22
      • 2020-06-14
      • 2015-05-13
      • 2021-07-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-22
      • 2020-01-24
      相关资源
      最近更新 更多