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
相关产品推荐
相关产品推荐

