VPC 内部的 CloudFormation?

Posted

技术标签:

【中文标题】VPC 内部的 CloudFormation?【英文标题】:CloudFormation Inside VPC? 【发布时间】:2014-08-03 18:31:21 【问题描述】:

我知道我可以使用 CloudFormation 创建资源,还可以使用 CloudFormation 创建一个 VPC 以及其中的资源。

我可以使用 CloudFormation 模板在预先存在的 VPC 中创建堆栈吗?例如,假设我的公司有一个 VPC,有一个服务段、一些生产段(私有和公共),也许还有一些开发段。

我想在 VPC 中使用自己的 CloudFormation 模板定义每组服务 - 服务、生产环境、开发环境。

我可以这样做吗?

【问题讨论】:

在每个资源定义中使用subnet-id还不够? 我不知道你可以! 【参考方案1】:

是的,你可以。另一个文件中定义的堆栈对于主 JSON 是堆栈类型的资源。 当然,您必须告诉在哪里检索其他 JSON/YML 文件。

Cloudformation 并不容易,所以我建议尝试使用现有架构并逐步修改。

This example 应该可以帮到你。

【讨论】:

【参考方案2】:

有趣的是,我正要指出它应该是 List,但我对两者都进行了测试,并且您的方法也很有效。

"VpcId" : 
  "Type" : "List<AWS::EC2::VPC::Id>",
  "Description" : "VpcId Ids"

【讨论】:

啊。我看到列表意味着您可以在使用类型时输入值列表,而不是您有可用类型的列表。因此,对于从 drop 中获取的单个值,您的答案就是解决方案。【参考方案3】:

由于这没有很好地记录,而且我看到的所有示例(包括 Julio 的)都只是使用提示手动输入 VPC ID 的字符串字段,这是最好的方法。

您可以让您的模板通过显示所有现有 VPC 的下拉菜单提示您,让您选择一个。

在您的模板中使用 AWS::EC2::VPC::Id 属性:


  "Parameters" : 
    "VpcId" : 
      "Type" : "AWS::EC2::VPC::Id",
      "Description" : "VpcId of your existing Virtual Private Cloud (VPC)"
    
  

http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/parameters-section-structure.html

【讨论】:

通过您的解决方案,我们可以从区域中选择 VPC。我们如何选择具有特定 VPC 的安全组? ***.com/questions/46021670/…【参考方案4】:

是的,你可以。您可以将子网 id 作为参数传递并在这些子网中创建资源,也可以将 vpc id 作为参数传递并在其中创建子网和资源。

例如,此模板将在现有 VPC 内创建 RDS 数据库: https://s3.amazonaws.com/cloudformation-templates-us-east-1/RDS_VPC.template

【讨论】:

太好了,谢谢。我喜欢 cloudformation 的想法——过去的 AWS 部署是通过外部文档手动完成的——它是通过代码进行的基础设施管理,非常优雅。只是仍然对一些细节有所了解。 我也可以吗?引用 VPC ID 并以这种方式创建新子网? 好的,只需创建引用 vpc id 参数的子网资源! 太棒了。我一直喜欢围绕 AWS 的广泛思考和大量文档,但通向您想要的东西的路径通常是模糊的。 @Julio_AWS_DevRel 通过使用 List<:ec2::securitygroup::id> 我们可以在参数部分获取安全组列表。但是我们如何对附加到特定 VPC 的安全组进行排序呢? ***.com/questions/46021670/…

以上是关于VPC 内部的 CloudFormation?的主要内容,如果未能解决你的问题,请参考以下文章

从 VPC 内的另一个 cloudformation 模板引用 SecurityGroup

如何使用 CloudFormation 编辑 VPC 的默认网络 ACL?

AWS CloudFormation:默认 VPC“vpc”中不存在安全组“sg-”

AWS CloudFormation VPC CIDR 分配给安全组

如何在 Cloudformation 模板中将 EIP 分配给 VPC 的 Autoscaling Group

如何使用 AWS CloudFormation 创建 Amazon VPC?