我有一个 SNS
主题,定义如下
SlmExceedenceTopic:
Type: AWS::SNS::Topic
Properties:
TopicName:
Fn::Sub: ${AWS::StackName}-slm-exceedence-topic
Tags:
- Key: Environment
Value: !Ref Environment
我希望在 SNS
中收到通知后执行 lambda 函数 ExceedenceProcessor
。因此我添加了以下订阅
ExceedenceProcessorSubscription:
Type: AWS::SNS::Subscription
Properties:
Endpoint:
Fn::GetAtt: ExceedenceProcessor.Arn
Protocol: lambda
TopicArn: !Ref SlmExceedenceTopic
这正确地添加了订阅,我什至可以从 SNS
订阅中看到它。但是,我的函数从未被执行。只有当我手动向针对 SNS
的 Lambda 函数添加触发器时,我才能让它执行。
仅添加订阅
还不够吗?
最佳答案
“用户”不调用 Lambda 函数。相反,Amazon SNS 服务调用 Lambda 函数。这就是为什么错误显示 User: sns.amazonaws.com is notauthorized
您应该在 Lambda 函数中添加权限以允许 Amazon SNS 调用它:
如果您的 CloudFormation 模板正在创建 AWS Lambda 函数,它可以使用 AWS::Lambda::Permission - AWS CloudFormation 添加这些权限。 .
关于amazon-web-services - 使用 AWS::SNS::Subscription 后是否还需要添加触发器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76166845/