1

我是 AWS 世界的新手,目前正在开发一种 Alexa 技能,该技能只需向 AWS IoT Core 代理发布一条 mqtt 消息,与之前创建的“事物”和主题进行交互。目前我正在使用 boto3,但我不确定这是正确的路径。这是代码,但在部署 Lambda 并从 Alexa 调用意图时它不起作用。

import boto3
import json

payload = json.dumps(
{'state': 
    { 
        'desired': { 'irrigation': 'on' } 
    }
})

client = boto3.client('iot-data', region_name='us-west-2')

response = client.publish(
    topic='$aws/things/gateway/shadow/update',
    qos=1,
    payload=payload
)

CloudWatch 没有显示任何异常,如果订阅应该触发发布的同一主题,我只是从 Alexa 收到错误响应并且没有收到任何消息。

我正在使用“影子”,也许这不是正确的做法?尝试了正常的主题,但效果不佳。另外,我很想在发布之前调试代码。有没有不使用 CloudWatch 的简单方法来做到这一点?

TL;TR 只在网上找到了很多这样的指南:iot core -> aws lambda。但我实际上正在寻找相反的结果:aws lambda -> 发布到 iot core

4

1 回答 1

1

此外,您可能需要这样的内联策略:

> {
>     "Version": "2012-10-17",
>     "Statement": [
>         {
>             "Effect": "Allow",
>             "Action": [
>                 "iot:Publish"
>             ],
>             "Resource": [
>                 "*"
>             ]
>         }
>     ] }

几个月前我第一次实现 lambda 发布时,我根据另一篇 stackoverflow 帖子添加了这一点。直到几天前它运行良好。

于 2020-12-18T14:39:30.907 回答