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):
添加回答
舉報