获取特定 VPC 的 VPC-ID

emp*_*001 3 amazon-web-services amazon-vpc aws-cli

创建 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",
Run Code Online (Sandbox Code Playgroud)

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

aws ec2 describe-vpcs --vpc-ids |grep -i ansible
                    "Value": "ANSIBLE_VPC",
Run Code Online (Sandbox Code Playgroud)

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

Joh*_*ein 5

如果您刚刚发出了一个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": []
    }
}
Run Code Online (Sandbox Code Playgroud)

因此,您可以像这样创建 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": []
    }
}
Run Code Online (Sandbox Code Playgroud)

相反,如果您要为给定名称标签的 VPC 寻找 VPC ID,则可以使用:

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

$ echo $ID
vpc-0fb4d08f9d6501e94
Run Code Online (Sandbox Code Playgroud)


Dan*_*elC 5

您可以仅使用 aws cli 来实现此目的,并带有过滤器和查询:

aws ec2 describe-vpcs --filters Name=tag:Name,Values=ANSIBLE_VPC --query "Vpcs[].VpcId" --output text"
Run Code Online (Sandbox Code Playgroud)

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

aws ec2 describe-vpcs --filters Name=tag:Name,Values=ANSIBLE_VPC | grep VpcId | grep -oh "vpc-\w*"
Run Code Online (Sandbox Code Playgroud)