Я новичок в сервисах Amazon и особенно в CloudFormation.
Итак, я начал читать «Начало работы с CloudFormation» с сайта Amazon. 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 как описано во введении в вики.
Но прежде я удалил VPC по умолчанию и добавил новый (10.0.0.0/16) и создал в нем новую подсеть - 10.0.0.0/24. Согласно документам AWS, я не могу установить свой собственный VPC по умолчанию, и теперь шаблон CloudFormation, описанный выше, не может быть запущен, и я вижу такую ошибку:
Согласно странице AWS https://aws.amazon.com/premiumsupport/knowledge-center/cloudformation-cloudformer-default-vpc/ Я могу исправить эту проблему, описав мой новый VPC, но я не знаю, почему это нужно делать правильно.
Возможно ты можешь помочь мне?
Если вы хотите продолжить использование удаленного VPC по умолчанию, вам придется обратиться в службу поддержки AWS, чтобы создать его снова. Ресурсы AWS из используемого вами шаблона зависят от него.
В противном случае вам придется немного настроить его, чтобы его можно было использовать с нестандартными VPC. Предлагаются изменения:
0) Передайте свой идентификатор VPC и идентификаторы подсети в качестве параметров 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, идентифицированном по идентификатору 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) измените свой экземпляр EC2 на использование вашей подсети VPC 1:
"WebServer": {
"Type": "AWS::EC2::Instance",
...
"Properties": {
"SubnetId": { "Ref": "MySubnet1" },
...
3) Создайте группу подсети БД RDS с вашими подсетями VPC, выделенными для RDS (вам необходимо создать подсеть в VPC как минимум в двух Зонах доступности региона, в котором существует VPC):
"MyDBSubnetGroup" : {
"Type" : "AWS::RDS::DBSubnetGroup",
"Properties" : {
"DBSubnetGroupDescription" : "Subnets available for the RDS DB Instance",
"SubnetIds" : { "Ref" : "RDSSubnets" },
}
},
4) измените свой экземпляр RDS, чтобы использовать вашу подсеть VPC и группу безопасности (замените DBSecurityGroups
параметр с VPCSecurityGroups
):
"DBInstance" : {
"Type": "AWS::RDS::DBInstance",
"Properties": {
"DBSubnetGroupName" : { "Ref" : "MyDBSubnetGroup" },
"VPCSecurityGroups" : [ { "Ref" : "DBSecurityGroup" } ],
...
Более подробную информацию об используемых параметрах можно найти в документации AWS: