Шаблон CloudFormation (JSON) для EC2 с выбором VPC, подсети и группы безопасности - PullRequest
1 голос
/ 12 июня 2019

Я пытаюсь настроить шаблон CloudFormation в JSON, который поддерживает экземпляр EC2, только начинается, но возникают проблемы с выбором VPC и подсети. В конце концов, это будет шаблон, используемый несколькими учетными записями, каждая с несколькими VCP и подсетями. Ни в одном из аккаунтов нет VPC по умолчанию.

Я хотел бы получить шаблонное приглашение для VPC, а затем выполнить итерации действительных подсетей на основе VPC. Я работал с этим постом в блоге Amazon: Поиск информации о параметрах стека AWS CloudFormation с помощью AWS Lambda | Блог инструментов управления AWS

Однако я не могу заставить это работать. У меня есть настройка функции Lambda с правильной ролью, описанной в статье, но я получаю сообщение об ошибке «Нет VPC по умолчанию для этого пользователя». Я также открыт для более простого способа заставить это работать.

{
   "AWSTemplateFormatVersion":"2010-09-09",
   "Description":"EC2 CloudFormation Template - Version 1.0",
   "Metadata":{},
   "Parameters":{
      "InstanceType":{
         "Description":"EC2 instance type",
         "Type":"String",
         "Default":"t2.small",
         "AllowedValues":[
            "t1.micro",
            "t2.nano",
            "t2.micro",
            "t2.small",
            "t2.medium",
            "t2.large"
         ],
         "ConstraintDescription":"must be a valid EC2 instance type."
      },
      "VpcName" : {
        "Type" : "AWS::EC2::VPC::Id",
        "Description" : "Select the VPC for this EC2 Instances"
      },
      "SubnetName" : {
        "Type" : "AWS::EC2::Subnet::Id",
        "Description" : "The list of SubnetIds"
      }
    },
   "Mappings":{},
   "Conditions":{},
   "Resources":{
     "VcpInfo" : {
       "Type" : "Custom::VcpInfo",
       "Properties" : {
         "ServiceToken" : "arn:aws:lambda:us-east-1:206765214992:function:Test_GetAtt",
         "NameFilter" : { "Ref": "VpcName" }
       }
     },
     "SubnetInfo" : {
       "Type" : "Custom::SubnetInfo",
       "Properties" : {
         "ServiceToken" : "arn:aws:lambda:us-east-1:206765214992:function:Test_GetAtt",
         "NameFilter" : { "Ref": "SubnetName" }
       }
      },
      "EOTSSEC2":{
         "Type":"AWS::EC2::Instance",
         "Properties":{
            "DisableApiTermination":"false",
            "ImageId":"ami-06bee8e1000e44ca4",
            "InstanceType":{ "Ref":"InstanceType"  },
            "Monitoring":"true"
         }
      }
    },
    "Outputs":{
     "VCPCidrBlock" : {
       "Description" : "VCP CidrBlock",
       "Value" : "!GetAtt VcpInfo.CidrBlock"
     },
     "SubnetAvailabilityZon" : {
       "Description" : "Subnet AvailabilityZone",
       "Value" : "!GetAtt SubnetInfo.AvailabilityZone"
     },
     "SubnetCidrBlock" : {
       "Description" : "Subnet CidrBlock",
       "Value" : "!GetAtt SubnetInfo.CidrBlock"
     },
     "SubnetVpcId" : {
       "Description" : "Subnet VpcId",
       "Value" : "!GetAtt SubnetInfo.VpcId"
     }
   }
}

Я хотел бы, чтобы мне предложили ввести VPC, а затем представить действительный список подсетей.

1 Ответ

1 голос
/ 13 июня 2019

В этом сообщении блога показано, как получить информацию об атрибутах определенного ресурса (например, подсети), а затем использовать эти атрибуты в другом месте шаблона, например в разделе «Выходы», чтобы показать больше информации о выбранных ресурсах.ресурс.

Однако невозможно вызвать пользовательский ресурс для манипулирования разделом Parameters.Это происходит потому, что параметры собираются за до стека.

Итак, если вы хотите запросить VPC, а затем заполнить параметр Subnet только списком подсетей, которыепринадлежите к этому VPC, тогда извините - это невозможно.

Вы можете создать свой собственный "front-end" , который запрашивает у пользователей информацию, включая вышеуказанную возможность, а затемвызовите CloudFormation для создания стека с требуемыми параметрами, но невозможно добавить пользовательскую логику к параметрам в консоли управления CloudFormation.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...