Как создать очередь AWS SQS с бессерверной системой

Предполагается, что вы знакомы с AWS и Serverless Framework.

Это покажет только соответствующие параметры конфигурации для развертывания новой очереди SQS с использованием Serverless. Внизу вы можете найти ссылку на то, как отправить сообщение SQS с помощью Node.

Ожидаемый результат

  1. Очередь AWS SQS, запускающая лямбду (триггер необязательный, вы все равно можете создать очередь без триггера).
  2. URL-адрес очереди SQS сохраняется как переменная среды, которую мы можем использовать в остальной части приложения.

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

serverless.yml

...
provider:
  name: aws
  runtime: nodejs12.x
  region: us-east-1
  stage: prod
  environment:
    ...
    SQS_QUEUE_URL: { Ref: NewSQSQueue }
  iamRoleStatements:
    - Effect: Allow
      Action:
        - sqs:*
      Resource:
        Fn::GetAtt: [ NewSQSQueue, Arn ]

...

resources:
  Resources:
    NewSQSQueue:
      Type: "AWS::SQS::Queue"
      Properties:
        QueueName: sqs-queue-${opt:stage, self:provider.stage}.fifo
        FifoQueue: true

Это создаст одну новую очередь SQS с обслуживанием в порядке очереди (FIFO) и соответствующие роли IAM, необходимые для ее использования.

Имя очереди будет sqs-queue-prod.fifo (все очереди FIFO должны заканчиваться суффиксом .fifo), а URL-адрес SQS будет использоваться в остальной части вашего приложения в качестве переменной среды с использованием process.env.SQS_QUEUE_URL.

Лямбда-триггер (необязательно)

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

eventRouter:
  handler: src/handlers/event_router.handler
  events:
    - sqs:
        arn:
          Fn::GetAtt:
            - NewSQSQueue
            - Arn

Он будет вызываться каждый раз, когда сообщение отправляется в только что созданную очередь.

Хотите вернуть свои console.logs при бессерверной разработке? Оформить заказ Twig…