JC2*_*C23 3 json amazon-web-services boto3 aws-lambda aws-iot
根据此处的 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'
)
Run Code Online (Sandbox Code Playgroud)
当我使用命令行时没有问题,但似乎无法从巴函数中得到它。我用许多版本的代码(json.JSONEncoder、bytearray() 等)调用它,但没有任何运气。调用 UpdateThingShadow 操作时,错误范围从语法到 (ForbiddenException):Bad Request: ClientError。有没有人成功地从 AWS lambda 函数中调用此方法或类似方法?谢谢。
这段代码对我来说工作得很好:
def set_thing_state(thingName, state):
# Change topic, qos and payload
payload = json.dumps({'state': { 'desired': { 'property': state } }})
logger.info("IOT update, thingName:"+thingName+", payload:"+payload)
#payload = {'state': { 'desired': { 'property': state } }}
response = client.update_thing_shadow(
thingName = thingName,
payload = payload
)
logger.info("IOT response: " + str(response))
logger.info("Body:"+response['payload'].read())
def get_thing_state(thingName):
response = client.get_thing_shadow(thingName=thingName)
streamingBody = response["payload"]
jsonState = json.loads(streamingBody.read())
print jsonState
#print jsonState["state"]["reported"]
Run Code Online (Sandbox Code Playgroud)
祝你好运
| 归档时间: |
|
| 查看次数: |
4395 次 |
| 最近记录: |