Cloudformation SubnetList получить CidrBlock - PullRequest
1 голос
/ 25 марта 2019

Я работаю над новой инфраструктурой, предоставляемой CloudFormation.Мне нужно получить cidrblock подсети для групп безопасности.

Я пробовал какой-то метод для извлечения блоков Cidr подсети, но я получаю следующую ошибку:

YAML not well-formed

Мой шаблон:

 SubnetList:
    Description: 'Gateway Subnet Id'
    Type: List<AWS::EC2::Subnet::Id>

.....
..
....

ElastiCacheSecurityGroupIngressGateway: ##SubnetLists
  Type: AWS::EC2::SecurityGroupIngress
  Properties:
    GroupId: !GetAtt SecGroup.GroupId
    IpProtocol: tcp
    FromPort: '6379'
    ToPort: '6379'
    CidrIp: Fn::GetAtt: [ Fn::Select: [ 0, !Ref SubnetList ], CidrBlock ]

Iнужен блок извлечения cidr из SubnetList.

Как я могу справиться с этим?

1 Ответ

2 голосов
/ 25 марта 2019

Я не думаю, что вы можете сделать это, если вы не создали подсети в этом же шаблоне.При использовании GetAtt вам необходимо указать имя ресурса в пределах шаблона CloudFormation.Вы просто предоставляете список параметров идентификаторов подсетей - это строки, а не ресурсы, управляемые CloudFormation.

Вы можете просто передать CIDR подсети в качестве параметров или, что еще лучше, сослаться на них как на выходы из стека.который сначала создал VPC и подсети, используя Fn :: ImportValue .

Также см. это предлагаемое решение к той же самой проблеме.Предостережение: это не тривиально.

...