亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

AWS Lambda [錯誤] 函數采用 1 個位置參數,但給出了 2 個

AWS Lambda [錯誤] 函數采用 1 個位置參數,但給出了 2 個

神不在的星期二 2022-07-05 17:33:31
我正在創建我的(第一個)Lambda 函數。Lambda 旨在打開/關閉飛利浦 HUE 燈泡。Lambda 函數的觸發器是 AWS IoT (Dash) 按鈕。但是,在觸發我的 Lambda 函數后,我收到以下錯誤消息:[ERROR] TypeError: lambda_handler() takes 1 positional argument but 2 were givenTraceback (most recent call last):  File "/var/runtime/bootstrap.py", line 131, in handle_event_request    response = request_handler(event, lambda_context)任何人都可以提供任何關于我的 Python 代碼有什么問題的見解嗎?謝謝!import requests,jsonbridgeIP = "PublicIPAddress:999"userID = "someone"lightID = "2"def lambda_handler(lightID): url = "http://"+bridgeIP+"/api/"+userID+"/lights/"+lightID r = requests.get(url) data = json.loads(r.text) if data["state"]["on"] == False:     r = requests.put(url+"/state",json.dumps({'on':True})) elif data["state"]["on"] == True:     r = requests.put(url+"/state",json.dumps({'on':False}))lambda_handler(lightID)
查看完整描述

2 回答

?
慕村225694

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"]}))


查看完整回答
反對 回復 2022-07-05
?
翻閱古今

TA貢獻1780條經驗 獲得超5個贊

錯誤消息告訴您,為您的函數提供了兩個位置參數 lambda_handler,但該函數被定義為只接受一個。

Lambda 自動為處理函數提供兩個參數,因此您需要定義函數以接受兩個參數。

您可以通過將函數定義更改為:

def lambda_handler(lightID, lambda_context):


查看完整回答
反對 回復 2022-07-05
  • 2 回答
  • 0 關注
  • 238 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號