#python-3.x #aws-lambda
#python-3.x #aws-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)
Все работает нормально, однако, когда лямбда ‘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")
Комментарии:
1. Не могли бы вы показать обработчик
water_types
? Я думаю, вам не хватает обязательных(event, context)
аргументов2. Да, это так. Всегда ли мне нужно их использовать?
Ответ №1:
Если water_types
это обработчик функции (который, согласно вашему коду, является), вам необходимо следовать рекомендациям AWS о том, как создавать лямбда-функции с помощью Python
Обработчик lambda должен иметь структуру, аналогичную
def handler_name(event, context):
...
return some_value
Среда выполнения lambda предоставит значения для event
и context
при вызове обработчика.
Итак, TL; DR, ваша функция должна выглядеть так
def water_types(event, context):
return print("water updated: 90")
Вам не нужно ничего делать с этими параметрами, но они должны быть там.