【发布时间】:2016-07-02 17:45:00
【问题描述】:
根据此处的 boto3 文档:https://boto3.readthedocs.org/en/latest/reference/services/iot-data.html#client update_thing_shadow 方法将 thingName 和 JSON 有效负载作为参数。目前是这样写的:
client = boto3.client('iot-data', region_name='us-east-1')
data = {"state" : { "desired" : { "switch" : "on" }}}
mypayload = json.dumps(data)
response = client.update_thing_shadow(
thingName = 'MyDevice',
payload = b'mypayload'
)
当我使用命令行时没有问题,但似乎无法从 lamba 函数中正确获取它。我已经用许多版本的代码(json.JSONEncoder、bytearray() 等)调用了它,但没有任何运气。调用 UpdateThingShadow 操作时出现的错误范围从语法到 (ForbiddenException):错误请求:ClientError。有没有人从 AWS lambda 函数中成功调用此方法或类似方法?谢谢。
【问题讨论】:
-
payload = b'mypayload'究竟应该在这里做什么? -
用所需状态更新“MyDevice”,在这种情况下,将开关设置为“打开”位置
-
但这只是一个包含
"mypayload"的字符串常量。这不是您存储在名为mypayload的变量中的实际有效负载。这就是我感到困惑的原因。 -
为了澄清,请参见上面的初始帖子“我已经用许多版本的代码调用它......没有任何运气。”由于之前的所有尝试都失败了,因此当前的内容是最新的。
-
好吧,您上面显示的示例似乎不正确。如上所述,您应该传递 JSON 有效负载,但传递的是字符串常量
"mypayload"。我建议解决该问题,然后使用新代码和您从服务中获得的确切响应更新问题。
标签: json amazon-web-services aws-lambda boto3 aws-iot