Ошибка Python при форматировании лямбда-запроса AWS - PullRequest
0 голосов
/ 18 сентября 2018

Я должен позвонить с помощью boto3 лямбда AWS.Я делаю:

client = boto3.client("lambda")

dtime1 = str(datetime.datetime.now())
#After some computations
dtime2 = str(datetime.datetime.now())

elapsed =  time.time() - start_time

payload = {"key_id":"1",
        "data_start":dtime1,
        "data_stop":dtime2,
        "elapsed_t": int(elapsed)}

r = client.invoke(
            FunctionName='mylambda',
            InvocationType='RequestResponse',
            Payload=bytes(str(payload), 'utf-8')
        )

print(r.read())

, но когда я запускаю его, возникает ошибка:

"Произошла ошибка (InvalidRequestContentException) при вызове операции Invoke: Не удалось проанализировать тело запроса в json: Неожиданный символ ('' '(код 39)): ожидал, что двойная кавычка начнет имя поля \ n в [Источник: [B @ 4cb02e4e; строка: 1, столбец: 3] "

Как мне решить мою проблему?

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 18 сентября 2018

Вся официальная документация, которую я видел при передаче полезных данных в Lambda-вызове, отсутствует или неверна.Вот что сработало для меня:

# Construct a dict object
payload = {"key": "value"}

# Invoke the Lambda function, passing the payload
lambda_client.invoke(FunctionName='myFunctionName',
                     InvocationType='RequestResponse',
                     Payload=json.dumps(payload))
0 голосов
/ 18 сентября 2018

Если вы хотите передать объект JSON в виде строки, вы можете использовать json.dumps (payload), как описано в https://docs.python.org/3/library/json.html.

...