【问题标题】:How to find the default vpc id at runtime using CloudFormation如何使用 CloudFormation 在运行时查找默认 vpc id
【发布时间】:2018-04-18 03:07:24
【问题描述】:

我想知道是否有办法在运行时使用 CF 找出默认 VPC ID。据我所知,我没有可以在模板中使用的伪参数来找出答案。使用cli命令可以达到效果

aws ec2 describe-vpcs --filter "Name=isDefault, Values=true"

但是,这意味着我必须创建自定义 CloudFormation 资源并使用 Lambda 函数才能在运行时找到默认 VPC id。这个想法是我想在每个 AWS 账户中创建一个角色,以防止用户将 EC2 实例启动到默认 VPC。

【问题讨论】:

  • 据我所知,自定义资源是唯一的方法。

标签: amazon-cloudformation amazon-vpc vpc


【解决方案1】:

我建议您结合使用 AWS ConfigAWS Lambda 来自动终止在默认 VPC。

我在 Re:Invent 的演示中看到了它。来源:https://www.youtube.com/watch?v=sGUQFEZWkho

【讨论】:

  • 我已经考虑过,但这将是一种反应性的行动。我需要创建一个标准用户类型的自定义角色,并且不允许用户在默认 VPC 和任何公共子网中执行任何 EC2 操作。我正在考虑利用资源标签作为策略中的条件。我正在考虑类似于以下策略条件的内容,但如果可能,请在 Condition 语句中使用子网标签而不是 EC2 标签。 “条件”:{“StringEquals”:{“ec2:ResourceTag/UserName”:“${aws:username}”}
  • 跳出框框思考:为什么不直接从您的帐户中删除默认 VPC?
  • 一些帐户已经将它用于生产工作负载,这是蹩脚的,但将在那里运行的应用程序移动到新的自定义子网需要时间。此外,我需要限制某些用户组能够在跨其他 VPC 的公共子网中创建 EC2 实例。目前,所有子网都有一个名称标签,用于指示子网是公有还是私有,如下所示:subnet-CIDR-REGION-Type (ex. 10.0.4.0-ap-southeast-2-Public)
猜你喜欢
  • 2020-03-27
  • 2016-02-23
  • 2019-07-28
  • 2020-06-22
  • 2022-09-30
  • 2021-06-28
  • 2019-04-27
  • 2015-12-11
  • 2020-02-17
相关资源
最近更新 更多