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

Serverless Framework未应用IAM语句,Lambda无法发布MQTT消息

问题定位与解决方法

核心配置错误

你在Serverless配置里用了statements字段,但Serverless Framework中给Lambda函数附加IAM权限的正确字段是iamRoleStatements——这就是控制台里看不到权限的根本原因:配置字段名不正确,框架无法识别并生成对应的IAM角色策略。

修正后的配置示例

把statements替换为iamRoleStatements,修正后的配置如下:

functions:
  receiver:
    handler: app/receiver/handle.handler
    iamRoleStatements:  # 此处为正确字段名
      - Effect: Allow
        Action:
          - iot:Publish
        Resource:
          - arn:aws:iot:us-east-1:295119111913:topic/sdk/test/js
    events:
      - iot:
          sql: "SELECT encode(*, 'base64') AS data FROM 'sdk/test/python'"
          sqlVersion: '2016-03-23'

额外验证步骤

  • 重新部署:修改配置后执行serverless deploy,确保新的IAM策略被应用到Lambda执行角色。
  • 检查权限:部署完成后,在AWS控制台进入Lambda函数配置页,查看「执行角色」的权限策略,确认iot:Publish权限已成功添加。
  • 校验ARN:确认目标主题的ARN完全正确,包括区域、账号ID和主题路径,避免拼写错误导致权限不匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 14:02:00