以下代码调用SNS,但我也希望SQS也调用它。我们可以使用多个Principal和Source Arn吗?我也尝试过此方法,但是没有用-
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
答案 0 :(得分:0)
您需要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函数之间创建映射。 Lambda从事件源读取项目并触发功能。
然后,您可以让SNS和SQS“触发”您的Lambda函数。您必须在函数内部实现自己的逻辑以处理不同的事件格式。