为了账号安全,请及时绑定邮箱和手机立即绑定

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 关注
  • 190 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信