You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

仅配置AWS::SNS::Subscription后Lambda未触发,需加触发器吗?

问题解答

仅添加SNS订阅不够,你还需要为Lambda函数配置允许SNS主题调用它的权限。

核心原因

手动给Lambda添加SNS触发器时,AWS会自动帮你创建对应的权限规则,允许指定SNS主题调用Lambda的lambda:InvokeFunction接口。但通过CloudFormation仅定义SNS订阅时,不会自动生成这个权限,导致SNS发送的通知被Lambda的访问控制策略拦截,函数无法执行。

解决方法

在你的CloudFormation模板中添加AWS::Lambda::Permission资源,示例如下:

ExceedenceProcessorSnsPermission:
  Type: AWS::Lambda::Permission
  Properties:
    FunctionName: !Ref ExceedenceProcessor
    Action: "lambda:InvokeFunction"
    Principal: "sns.amazonaws.com"
    SourceArn: !Ref SlmExceedenceTopic

配置说明

  • FunctionName: 指定需要授权的Lambda函数(此处为你已定义的ExceedenceProcessor)
  • Action: 授权SNS执行的Lambda动作,固定为lambda:InvokeFunction
  • Principal: 指定允许调用Lambda的服务,SNS对应的主体是sns.amazonaws.com
  • SourceArn: 仅限指定的SNS主题(你的SlmExceedenceTopic)能调用Lambda,避免权限范围过大

添加这个权限资源后重新部署CloudFormation栈,SNS的通知就能正常触发Lambda函数执行了。

内容的提问来源于stack exchange,提问作者E_K

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 16:42:06