如何将所需的VPC和子网指定到AWS CloudFormation模板中

我是亚马逊服务的新手,尤其是在CloudFormation中。

所以我已经开始阅读从Amazon网站http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/GettingStarted.html的 “CloudFormation入门”,现在我正在尝试启动示例CloudFormation模板https:/ /s3.amazonaws.com/cloudformation-templates-us-east-1/WordPress_Single_Instance_With_RDS.template作为维基介绍。

但在删除默认的VPC并添加新的(10.0.0.0/16)并在其中创build了新的子网10.0.0.0/24之前。 根据AWS文档,我不能将自己的VPC设置为默认,现在上面描述的CloudFormation模板不能启动,我看到这样的错误:

在这里输入图像说明

根据AWS页面https://aws.amazon.com/premiumsupport/knowledge-center/cloudformation-cloud-former-default-vpc/我可以解决这个问题与描述我的新的VPC,但我不知道为什么这样做是正确的。

也许你可以帮我吗?

如果您想继续使用您删除的默认VPC,则必须联系AWS支持以再次创build该VPC。 来自您正在使用的模板的AWS资源将在其上进行展开。

否则,您必须对其进行自定义,以便可以与您的非默认VPC一起使用。 有build议的变化:

0)将您的VPC ID和您的子网ID作为CloudFormationparameter passing:

"myVPC": { "Description" : "Id of my VPC", "Type" : "String", "Default" : "vpc-XXXXXXXX" }, "MySubnet": { "Description" : "My subnet from my VPC", "Type": "String", "Default": "subnet-YYYYYYYY" }, "RDSSubnets": { "Description" : "RDS subnets from my VPC", "Type": "CommaDelimitedList", "Default": "subnet-YYYYYYY1,subnet-YYYYYY2" }, 

1)必须在由VPC ID标识的新VPC中创build安全组:

 "DBSecurityGroup": { "Type": "AWS::RDS::DBSecurityGroup", "Properties": { ===>>> "EC2VpcId" : { "Ref" : "myVPC" }, <<<==== "DBSecurityGroupIngress": { "EC2SecurityGroupName": { "Ref": "WebServerSecurityGroup"} }, "GroupDescription" : "Frontend Access" } }, "WebServerSecurityGroup" : { "Type" : "AWS::EC2::SecurityGroup", "Properties" : { ===>>> "VpcId" : {"Ref" : "myVPC"}, <<<==== "GroupDescription" : "Enable HTTP access via port 80 and SSH access", "SecurityGroupIngress" : [ {"IpProtocol" : "tcp", "FromPort" : "80", "ToPort" : "80", "CidrIp" : "0.0.0.0/0"}, {"IpProtocol" : "tcp", "FromPort" : "22", "ToPort" : "22", "CidrIp" : { "Ref" : "SSHLocation"}} ] } } 

2)更改您的EC2实例以使用您的VPC子网1:

 "WebServer": { "Type": "AWS::EC2::Instance", ... "Properties": { "SubnetId": { "Ref": "MySubnet1" }, ... 

3)使用专用于RDS的VPC子网创buildRDS DB子网组(您需要在VPC所在区域的至less两个可用区中的VPC中创build子网):

 "MyDBSubnetGroup" : { "Type" : "AWS::RDS::DBSubnetGroup", "Properties" : { "DBSubnetGroupDescription" : "Subnets available for the RDS DB Instance", "SubnetIds" : { "Ref" : "RDSSubnets" }, } }, 

4)更改您的RDS实例以使用您的VPC子网和安全组(将DBSecurityGroups参数replace为VPCSecurityGroups ):

 "DBInstance" : { "Type": "AWS::RDS::DBInstance", "Properties": { "DBSubnetGroupName" : { "Ref" : "MyDBSubnetGroup" }, "VPCSecurityGroups" : [ { "Ref" : "DBSecurityGroup" } ], ... 

您可以在AWS文档中find有关使用参数的更多详细信息: