【问题标题】:Error when I'm invoking an AWS lambda, using python. Error: positional arguments but 2 were given使用 python 调用 AWS lambda 时出错。错误:位置参数,但给出了 2 个
【发布时间】:2019-08-30 00:32:21
【问题描述】:

我正在使用 lambda 通过这段代码调用另一个:

import boto3
import json

# Lambda Handler
def lambla_handler(event,context):

    lam = boto3.client('lambda', region_name='sa-east-1')

    try:
        response = lam.invoke(FunctionName='water_types', InvocationType='RequestResponse') 
    except Exception as e:
        print(e)
        raise e
    print(response)

一切正常,但是当 lambda 'water_types' 收到此错误时:

water_types() takes 0 positional arguments but 2 were given: TypeError
Traceback (most recent call last):
File "/var/runtime/awslambda/bootstrap.py", line 250, in handle_event_request
result = request_handler(json_input, context)
TypeError: water_types() takes 0 positional arguments but 2 were given

如我所见,我没有发送任何参数。知道如何解决吗?

def water_types(): 
   return print("water updated: 90")

【问题讨论】:

  • 你能告诉water_types的处理程序吗?我认为您缺少强制性的 (event, context) 参数
  • 是的。我总是需要使用它们吗?

标签: python-3.x aws-lambda


【解决方案1】:

如果water_types 是函数的处理程序(根据您的代码是),您需要遵循AWS guidelines on how to create lambda functions with Python

lambda 处理程序需要具有类似于

的结构
def handler_name(event, context): 
    ...
    return some_value

lambda 运行时将在调用处理程序时提供 eventcontext 的值。

所以 TL;DR,你的函数需要看起来像这样

def water_types(event, context): 
   return print("water updated: 90")

您不需要对这些参数执行任何操作,但它们必须存在。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-06
    • 2022-10-06
    • 2023-03-15
    相关资源
    最近更新 更多