AWS IoT Core无法将MQTT数据写入DynamoDB求助
排查AWS IoT Core规则写入DynamoDB失败的步骤
1. 验证IAM角色权限
确保IoT规则关联的IAM角色拥有写入DynamoDB表的权限,最少需要包含以下权限策略:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "dynamodb:PutItem" ], "Resource": "arn:aws:dynamodb:<你的区域>:<你的账号ID>:table/vopak_data" } ] }
注意替换<你的区域>和<你的账号ID>为实际值。如果使用dynamodbv2的批量写入功能,还需添加dynamodb:BatchWriteItem权限。
2. 检查DynamoDB主键匹配
你的DynamoDB表主键为time(字符串类型),需确认:
- 表中
time字段的类型为字符串,与消息中time字段的格式完全匹配 - 避免重复的
time值:若两条消息time完全一致,选择INSERT操作会报错,选择PUT则会覆盖原有条目,可检查表中是否已有相同time的记录
3. 核对IoT规则的DynamoDBv2配置
结合你的配置截图,需确认:
- 表名准确填写为
vopak_data - 操作类型符合需求:插入新数据选
INSERT,允许覆盖选PUT - 分区键名称填写为
time(你的表无排序键,无需填写排序键相关配置)
4. 查看IoT规则执行日志
开启IoT Core日志记录,定位具体报错:
- 进入AWS IoT控制台 → 设置 → 日志
- 开启日志,设置日志级别为
ERROR或DEBUG - 前往CloudWatch日志组,查看规则执行时的错误详情(如权限不足、字段不匹配、主键冲突等)
5. 测试规则SQL语句
在IoT控制台的规则测试功能中验证SQL有效性:
- 进入规则详情页 → 测试SQL
- 粘贴你的测试消息,确认输出包含所有字段(包括
time)
6. 确认消息格式合法性
你的测试消息为有效JSON格式,但需确保实际发送的消息:
- 无JSON语法错误
- 字段格式与测试消息一致,没有特殊字符导致解析失败
内容的提问来源于stack exchange,提问作者UwUs
相关产品推荐
相关产品推荐

