Как вызвать одну и ту же функцию Lambda из двух разных сервисов AWS (SQS и SNS)? - PullRequest
0 голосов
/ 14 мая 2019

Следующий код вызывает SNS, но я хочу, чтобы SQS также вызывал его.Можем ли мы использовать несколько Основных и Исходных Арн?Я тоже пробовал это, но не сработало -

LambdaPermissionMainSNS:
    Type: AWS::Lambda::Permission
    Properties:
      Action: lambda:InvokeFunction
      FunctionName: !GetAtt LambdaFunctionMain.Arn
      Principal: sns.amazonaws.com
      SourceArn: !Ref SNSTopic
LambdaPermissionMainSQS:
   Type: AWS::Lambda::Permission
   Properties:
     Action: lambda:InvokeFunction
     FunctionName: !GetAtt LambdaFunctionMain.Arn
     Principal: sqs.amazonaws.com
     SourceArn: !Ref SQSQueue

1 Ответ

0 голосов
/ 23 мая 2019

Вам нужен ресурс AWS::Lambda::EventSourceMapping для SQS:

SQSEventSource:
  Type: AWS::Lambda::EventSourceMapping
  Properties: 
    BatchSize: 10 # this is the default
    Enabled: true
    EventSourceArn: !Ref SQSQueue
    FunctionName: !GetAtt LambdaFunctionMain.Arn

Ресурс AWS :: Lambda :: EventSourceMapping создает отображение между источником события и функцией AWS Lambda. Лямбда читает элементы из источника события и вызывает функцию.

После этого SNS и SQS могут «запускать» вашу лямбда-функцию. Вам нужно будет реализовать свою собственную логику внутри функции, чтобы иметь дело с различными форматами событий.

См. Также Использование AWS Lambda с Amazon SQS .

...