Отправьте сообщение SNS через Cloudformation / lambda для обновления группы безопасности - PullRequest
1 голос
/ 12 марта 2019

Я пытаюсь "заполнить" SG, подключенный к моему ALB, чтобы разрешить трафик из Cloudfront.

Этот ALB / CF dist создается с помощью Cloudformation. В настоящее время у меня есть лямбда-функция, которая обрабатывает сообщения SNS от AmazonIpSpaceChanged. Однако, когда я создаю этот стек CF, то сообщение SNS должно быть запущено, чтобы заполнить SG изначально.

Есть ли способ создать сообщение SNS для запуска этой лямбда-функции? Я посмотрел на пользовательские ресурсы, поддерживаемые SNS, но это не сработало.

Ответы [ 3 ]

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

Я тоже лично сталкивался с этой проблемой.Мне не удалось заставить мою тему SNS работать для запуска лямбда-функции.Однако я смог сделать это с помощью пользовательских ресурсов.

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

Это ссылка на пользовательский ресурсдокументация

0 голосов
/ 13 марта 2019

Один из вариантов, который вы можете использовать, - это функция уведомлений, которую предлагает CloudFormation API: при вызове UpdateStack вы можете предоставить список NotificationARNs, который представляет собой список тем SNS, которые получают уведомления о каждомСвязанные с CloudFormation изменения в вашем стеке.Вы можете установить тему уведомлений SNS на тему SNS, на которую вы подписали свою функцию AWS Lambda.Это, конечно, работает, только если вы не создаете тему SNS как часть вашего стека CloudFormation, вы не полагаетесь на содержимое сообщения SNS и просто нуждаетесь в таком сообщении как триггер, и если вы фильтруете сообщения SNS в своемЛямбда-функция реагирует только на те сообщения, которые важны для вас (например, обновление выполняется только при создании стека, а не при удалении стека).

Использование интерфейса командной строки AWS и его команды deploy с указаниемARN уведомления будет выглядеть так:

aws cloudformation deploy \
  --template-file your-template.yaml \
  --stack-name your-stack \
  --notification-arns arn:aws:sns:us-east-1:1234567890123456:yourtopic
0 голосов
/ 13 марта 2019

Почему бы не добавить правило в группу безопасности непосредственно из CloudFormation с помощью AWS :: EC2 :: SecurityGroupIngress ?

  InboundRule:
    Type: AWS::EC2::SecurityGroupIngress
    Properties:
      IpProtocol: tcp
      FromPort: 0
      ToPort: 65535
      SourceSecurityGroupId:
        Fn::GetAtt:
        - XX_NEW_SECURITY_GROUP_XX
        - GroupId
      GroupId: sg-XX_EXISTING_GROUP_XX
...