AWS SAM: использовать существующую очередь SQS в шаблоне - PullRequest
0 голосов
/ 06 апреля 2020

У меня есть лямбда-функция, которая должна срабатывать при поступлении сообщения в мою очередь. Я разрабатываю и внедряю эту функцию через SAM cli. Но очередь SQS уже существует, и я не могу создать ее вместе с лямбда-функцией из-за ограничения в моем случае использования. Итак, у меня есть для использования этой существующей очереди.

Следующее - мой template.yml

AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: >
  Serverless functions for foobar


Globals:
  Function:
    Timeout: 60 # 60 seconds timeout for each lambda function

Resources:

  # Lambda function #1; foobar SQS trigger
  OrderDrop:
    Type: AWS::Serverless::Function 
    Properties:
      CodeUri: sqs_trigger/foobar
      Handler: app.lambda_handler
      Runtime: python3.8
      Description: foobar SQS trigger
      Events:
        FooBarSQS:
          Type: SQS
          Properties:
            Queue: !GetAtt FooBarSQS.Arn
            BatchSize: 1

  # Foobar SQS
  FooBarSQS:
    Type: SQS
    Properties:
      Queue: arn:aws:sqs:us-east-1:1234567890:foobar_queue.fifo
      Enabled: true

Я получаю следующую ошибку:

Ошибка: не удалось создать набор изменений для стека: gitlabpo c, например: Ошибка Waiter ChangeSetCreateComplete: Официант обнаружил состояние сбоя терминала. Статус: СБОЙ. Причина: ошибка формата шаблона: нераспознанные типы ресурсов: [SQS]

Я следил за этим документом:

https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-property-function-sqs.html

Там также этот документ:

https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-queues.html

Но я ничего не могу сказать, где я могу указать арн моей существующей очереди

Как можно Я достиг этого?

1 Ответ

1 голос
/ 06 апреля 2020

Я понял это, так как для свойства Queue: !GetAtt FooBarSQS.Arn в Event моего *1003* требуется Аргумент очереди, я просто присвоил ему арн существующей очереди.

OrderDrop:
    Type: AWS::Serverless::Function 
    Properties:
      CodeUri: sqs_trigger/foobar
      Handler: app.lambda_handler
      Runtime: python3.8
      Description: foobar SQS trigger
      Events:
        FooBarSQS:
          Type: SQS
          Properties:
            Queue: arn:aws:sqs:us-east-1:1234567890:foobar_queue.fifo
            BatchSize: 1

Это сделал свое дело!

...