Как вызвать лямбду при публикации сообщений в SQS? - PullRequest
1 голос
/ 26 марта 2019

Я пытаюсь реализовать lambda1, который будет срабатывать при публикации сообщений в SQS. Я могу отправлять сообщения в очередь SQS и получать сообщения. Я создал лямбда-шаблон SQS следующим образом:

  GetPatientStatusSQS:
    Type: AWS::SQS::Queue
    Properties:
      MaximumMessageSize: 1024
      QueueName: !Sub "${EnvironmentName}-GetPatientStatusSQS"
      VisibilityTimeout: 30

Я проверил документацию по aws, но не смог найти ни одного примера, показывающего, как запускать лямбду при публикации сообщений в очереди SQS.

Я нашел эту ссылку Может ли функция AWS Lambda вызвать другую , но не уверен, что это полезно.

Как мне обновить шаблон SQS выше, чтобы он запускал lambda1?

1 Ответ

4 голосов
/ 26 марта 2019

По состоянию на 28 июня 2018 г. Лямбда-функции могут запускаться событиями SQS .

Все, что вам нужно сделать, это подписать вашу лямбда-функцию на нужную очередь SQS.

Перейдите в консоль SQS, щелкните по своей очереди -> Действия с очередями -> Настроить триггер для функции Lambda

enter image description here

Установите лямбда-ARN, на который вы хотите отправлять сообщения, и все, ваша функция теперь будет запускаться SQS.

Сохранить впомните, что ваша функция будет обрабатывать не более 10 пакетов одновременно.

Если вы считаете, что можете столкнуться с проблемами параллелизма, вы можете ограничить параллелизм своей функции до 1.

Вот пример шаблона, который можно использовать для соединения SQS и Lambda.

AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: Example of processing messages on an SQS queue with Lambda
Resources:
  MySQSQueueFunction:
    Type: AWS::Serverless::Function
    Properties:
      Handler: index.handler
      Runtime: node8.10
      Events:
        MySQSEvent:
          Type: SQS
          Properties:
            Queue: !GetAtt MySqsQueue.Arn
            BatchSize: 10
  MySqsQueue:
    Type: AWS::SQS::Queue

Из документов

...