web-dev-qa-db-ja.com

AWS CloudFormationテンプレートに必要なVPCとサブネットを指定する方法

私はAmazonサービス、特にCloudFormationが初めてです。

そのため、Amazonサイトの「Getting Started with CloudFormation」から読み始めました http://docs.aws.Amazon.com/AWSCloudFormation/latest/UserGuide/GettingStarted.html 現在、起動例CloudFormationテンプレート https://s3.amazonaws.com/cloudformation-templates-us-east-1/WordPress_Single_Instance_With_RDS.template Wikiの概要で説明されているように。

しかし、デフォルトのVPCを削除して新しいもの(10.0.0.0/16)を追加し、その中に新しいサブネットを作成する前に-10.0.0.0/24。 AWSのドキュメントによると、自分のVPCをデフォルトとして設定できず、上記のCloudFormationテンプレートを起動できず、そのようなエラーが表示されます。

enter image description here

AWSのページによると https://aws.Amazon.com/premiumsupport/knowledge-center/cloudformation-cloudformer-default-vpc/ 新しいVPCの説明でこの問題を解決できますが、わかりませんなぜこれを正しく行うのか。

多分あなたは私を助けることができますか?

6
ipeacocks

削除したデフォルトのVPCを引き続き使用する場合は、AWSサポートに連絡して再度作成する必要があります。使用しているテンプレートのAWSリソースは、それに依存しています。

それ以外の場合は、デフォルト以外のVPCで使用できるように少しカスタマイズする必要があります。提案された変更があります:

0)VPC IDとサブネットIDをCloudFormationパラメーターとして渡します。

    "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内に作成する必要があります。

"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)VPCサブネット1を使用するようにEC2インスタンスを変更します。

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

3)RDS専用のVPCサブネットでRDS DBサブネットグループを作成します(VPCが存在するリージョンの少なくとも2つのアベイラビリティーゾーンのVPCにサブネットを作成する必要があります)。

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

4)VDSサブネットとセキュリティグループを使用するようにRDSインスタンスを変更します(DBSecurityGroupsパラメーターをVPCSecurityGroupsに置き換えます):

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

使用されているパラメーターの詳細については、AWSドキュメントをご覧ください。

9
dsmsk80