Ошибка при вызове лямбды AWS с использованием pyhton. Ошибка: позиционные аргументы, но 2 были даны - PullRequest
0 голосов
/ 08 апреля 2019

Я использую лямбду, чтобы вызвать другую с этим фрагментом кода:

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 Ответ

0 голосов
/ 08 апреля 2019

Если water_types является обработчиком функции (что в соответствии с вашим кодом), вам необходимо следовать инструкциям AWS по созданию лямбда-функций с Python

Лямбдаобработчик должен иметь структуру, аналогичную

def handler_name(event, context): 
    ...
    return some_value

. Лямбда-среда выполнения будет предоставлять значения для event и context при вызове обработчика.

Итак, TL; DR, ваша функциядолжен выглядеть так

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

Вам не нужно ничего делать с этими параметрами, но они должны быть там.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...