Публикация в SNS от Lambda в VPC - PullRequest
1 голос
/ 02 марта 2020

Я пытаюсь опубликовать sh в SNS от лямбды в VP C, но моя лямбда зависает и время от времени истекает через минуту или около того.

На основе Защита опубликованных сообщений в Amazon SNS с AWS PrivateLink | AWS Блог безопасности и аналогичные статьи Я создал конечную точку VP C примерно так:

      Type: AWS::EC2::VPCEndpoint
      Properties:
        PrivateDnsEnabled: true
        SecurityGroupIds:
          - security-group-id
        ServiceName: com.amazonaws.ap-southeast-2.sns
        SubnetIds:
          - subnet1-id
          - subnet2-id
        VpcEndpointType: Interface
        VpcId: vpc-blahblah

Это все еще приводит к зависанию Lambda при публикации в SNS. Как опубликовать sh в SNS из Lambda в VP C с использованием VP C Конечная точка? рекомендует AWS :: EC2 :: SecurityGroupIngress, который разрешает все TCP-трафики c из VP CIDR C также работает, но это тоже не работает.

Моя Lambda и конечная точка VP C находятся в одной группе безопасности, и существуют правила входа, разрешающие входящие соединения только с MySQL из некоторых мест и всех траффиков c от VP C (как уже упоминалось ранее).

Чего мне не хватает, чтобы моя Lambda могла публиковать sh в топике SNS c * * 1014

1 Ответ

1 голос
/ 02 марта 2020

Чтобы воспроизвести вашу ситуацию, я создал:

  • An Amazon VP C (с одним su bnet и без Inte rnet Gateway )
  • A VP C Конечная точка для Amazon SNS , с:
    • Политика доступа, разрешающая все входящие трафики c
    • A группа безопасности , разрешающая весь входящий доступ из CIDR VP C
  • Amazon SNS topi c с подпиской SMS на мой телефон
  • Роль IAM для использования функцией Lambda, которая разрешает использование Amazon SNS
  • AWS Функция Lambda :
    • С вышеуказанной ролью IAM
    • С группой безопасности, разрешающей все исходящие трафики c
    • Прикреплено к частному su bnet в VP C

Моя функция Lambda:

def lambda_handler(event, context):
    # Send message to SNS
    MY_SNS_TOPIC_ARN = 'arn:aws:sns:ap-southeast-2:111111111111:foo'
    sns_client = boto3.client('sns')
    sns_client.publish(
        TopicArn = MY_SNS_TOPIC_ARN,
        Subject = 'From lambda',
        Message = 'Hello'
    )

Затем я проверил ее вручную, запустив функцию Lambda с консоли Lambda.

I успешно Получил тестовое сообщение на мой телефон.

Поэтому я предлагаю вам сравнить вашу конфигурацию с приведенным выше и попытаться обнаружить любые различия.

Я заметил, что вы развертываете через CloudFormation , чтобы вы могли либо запустить стек, а затем сравнить свои ресурсы с тем, что описано, или вы можете попробовать вручную создать вышеописанное, чтобы убедиться, что он работает для вас, а затем сравнить эти ресурсы с вашим шаблоном CloudFormation.

...