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

Serverless Lambda执行SNS:Publish发送SMS未授权报错求助

解决步骤

1. 修正SNS权限配置错误

你当前权限不生效的核心原因是:使用SNS直接发送短信(未通过SNS主题推送)时,对应的资源ARN并不是SNS主题的arn:aws:sns:*:*:*格式,而是arn:aws:sns:{区域}:{账号ID}:{目标手机号}格式,你配置的通配规则仅匹配SNS主题,无法覆盖短信发送场景。
正确的权限配置如下,注意缩进位置必须在serverless.yml的provider层级下:

provider:
  name: aws
  runtime: nodejs16.x
  region: us-east-1
  # iamRoleStatements与provider下其他配置平级,不要写错层级
  iamRoleStatements:
    - Effect: Allow
      Action:
        - sns:Publish
      # 可以直接用*适配所有短信发送场景,也可以按号段限制,比如arn:aws:sns:us-east-1:XXXXXXXXXX:+57*
      Resource: "*"

2. 确认角色配置生效

如果你找不到对应的Lambda执行角色,不需要在IAM控制台搜索,直接操作:

  • 打开AWS Lambda控制台,找到你部署的对应函数
  • 进入配置 > 权限标签页,直接点击执行角色的ARN链接,即可跳转到对应角色的配置页
  • 给该角色手动添加允许sns:Publish的权限策略,保存后等待2分钟生效即可

3. 本地测试正常的原因说明

本地测试时调用SNS用的是你本地配置的AWS账号凭证(一般存放在~/.aws/credentials路径下),该账号本身拥有SNS发布权限,所以运行正常;线上Lambda默认使用独立的执行角色,权限单独管控,所以会出现本地正常线上报错的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 09:27:03