2 回答
TA贡献1880条经验 获得超4个赞
您的处理程序函数应定义为:
def lambda_handler(event, context):
lightID = event
...
来自Python 中的 AWS Lambda 函数处理程序 - AWS Lambda:
event– AWS Lambda 使用此参数将事件数据传递给处理程序。该参数通常是 Python dict 类型。它也可以是 list、str、int、float 或 NoneType 类型。
当你调用你的函数时,你决定了事件的内容和结构。当 AWS 服务调用您的函数时,事件结构因服务而异。
context– AWS Lambda 使用此参数向您的处理程序提供运行时信息。
您很可能event仅包含代码所示的 Light ID,但最好调用它event以识别它是传递给 Lambda 函数的值,但您的代码随后选择将其解释为lightID.
此外,您的代码不应调用该lambda_handler函数。AWS Lambda 服务将在调用该函数时执行此操作。
最后,您可能想要利用 Python 3.x f-strings,它可以生成更漂亮的格式字符串:
import requests
import json
bridgeIP = "PublicIPAddress:999"
userID = "someone"
def lambda_handler(event, context):
lightID = event
url = f"http://{bridgeIP}/api/{userID}/lights/{lightID}"
r = requests.get(url)
data = json.loads(r.text)
r = requests.put(f"{url}/state", json.dumps({'on': not data["state"]["on"]}))
TA贡献1780条经验 获得超5个赞
错误消息告诉您,为您的函数提供了两个位置参数 lambda_handler
,但该函数被定义为只接受一个。
Lambda 自动为处理函数提供两个参数,因此您需要定义函数以接受两个参数。
您可以通过将函数定义更改为:
def lambda_handler(lightID, lambda_context):
添加回答
举报