SubnetIds в CloudFormation - PullRequest
       55

SubnetIds в CloudFormation

0 голосов
/ 03 августа 2020

В стеке CloudFormation я создаю интерфейс типа VP C Endpoint, и для этого требуется SubnetIds в качестве одного из параметров. Я хочу настроить конечную точку VP C в том же стеке CloudFormation, где я инициализирую VP C и подсети.

Вопрос в том, как мне указать SubnetIds для подсетей, созданных в том же стеке? Встроенная функция c GetAtt для Su bnet не поддерживает получение идентификаторов su bnet.

Ответы [ 2 ]

0 голосов
/ 04 августа 2020

требует SubnetIds в качестве одного из параметров.

Если вы предоставляете идентификаторы подсетей как часть параметров вашего шаблона , вы можете использовать параметр с List<AWS::EC2::Subnet::Id> type:

Parameters:

  Subnets:
    Type: List<AWS::EC2::Subnet::Id>

Затем в остальной части кода можно ссылаться на весь список или отдельные подсети следующим образом:

!Ref Subnets # entire list 

!Select [0, !Ref Subnets] # first subnet provided in the list

Если вы создаете подсети в своем шаблоне :

Resources: 
   
   MySubnet1:
     Type: AWS::EC2::Subnet
     Properties:
       # properties 

   MySubnet2:
     Type: AWS::EC2::Subnet
     Properties:
       # properties other subnet

Затем для обращения к их идентификаторам вы можете использовать Ref, который возвращает su bnet id:

!Ref MySubnet1

!Ref MySubnet2

Однако, если Если вы хотите использовать существующие подсети, определенные вне CloudFormation, в своих шаблонах, вы можете импортировать существующие подсети в свой стек:

Но это не автоматический c процесс. Чтобы это сработало, вам нужно сначала вручную изменить свой шаблон.

0 голосов
/ 03 августа 2020

Вы можете использовать Ref intrinsi c функцию на вашем ресурсе Su bnet, как в примере ниже.

Помимо атрибутов, каждый ресурс CloudFormation также может поддерживать a Ref значение, для su bnet это su bnet id.

Resources: 
  mySubnet:
    Type: AWS::EC2::Subnet
    Properties:
      VpcId:
        Ref: myVPC
      CidrBlock: 10.0.0.0/24
      AvailabilityZone: "us-east-1a"
  Ec2Instance: 
    Type: AWS::EC2::Instance
    Properties:
      SubnetId:
        Ref: mySubnet

Просто используйте функцию Ref в шаблоне на дополнительных ресурсах, это также создаст отношения зависимости, предотвращающие создание ресурсов, если они полагаются на su bnet.

...