【问题标题】:AWS CLI Get private subnets for VPCAWS CLI 获取 VPC 的私有子网
【发布时间】:2020-08-10 08:06:21
【问题描述】:

我有一个启动一些 ECS 任务的脚本。要运行任务,我必须提供可以运行任务的私有子网。但是,目前我正在将私有子网 ID 从 AWS 控制台复制并粘贴到我的脚本中,这有点笨拙,所以我尝试使用 AWS CLI 以脚本方式获取私有子网。

我已经想出了如何获取 VPC Id,但我似乎在过滤子网结果时遇到了问题:

a) 我只得到私有子网 b) 我只得到那些子网的 ID

我现在拥有的是:

aws ec2 describe-subnets --filter Name=vpc-id,Values=vpc-0123456789

如何在此命令中添加“a”和“b”(首选没有任何外部或第 3 方工具)?

【问题讨论】:

  • 最简单的方法是将子网标记为私有和公共。否则,区分私有子网和公共子网并不容易。
  • 在我看来MapPublicIpOnLaunch 表示子网是公共的还是私有的,我的意思是,AWS 必须能够区分公共和私有。更多的是,如何在结果集中查询具有特定值的属性。
  • 技术上私有实例也可以将MapPublicIpOnLaunch 设置为true。但是,如果您始终如一地创建具有不同 MapPublicIpOnLaunch 值的子网,那么它也可以工作。

标签: amazon-web-services command-line-interface amazon-vpc


【解决方案1】:

通过在 --query 参数中使用 JMESPath 表达式,我只能获取私有子网:

 aws ec2 describe-subnets --filter Name=vpc-id,Values=vpc-0123456789 --query 'Subnets[?MapPublicIpOnLaunch==`false`].SubnetId'

结果:

[
    "subnet-0123456789",
    "subnet-9876543210"
]

【讨论】:

  • 我认为应该注意,这不是通用解决方案,它仅适用于您的用例。否则,其他人可能会认为对于私有子网,MapPublicIpOnLaunch 始终是 false
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-02
  • 2021-04-24
  • 2021-06-22
  • 2018-08-08
  • 2016-08-16
  • 2020-06-12
相关资源
最近更新 更多