Как передать байтовые данные в полезную нагрузку при вызове функции AWS Lambda - PullRequest
0 голосов
/ 07 октября 2018

У меня есть лямбда-функция, вход которой

input_str = "<html><body><h1>Title</h1><Hello World></body></html>"
input_base64 = base64.b64encode(bytes(input_str, 'utf-8'))
payload = {"html_base64" : input_base64} 

здесь input_base64 - переменная типа байтов

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

invoke_response = lambda_client.invoke(FunctionName="vivek_05",
                                       InvocationType='RequestResponse',
                                       Payload=payload
                                       )

Получение следующего исключения:

  "errorMessage": "Parameter validation failed:\nInvalid type for parameter Payload, value: {'html_base64': b'PGh0bWw+PGJvZHk+PGgxPlRpdGxlPC9oMT48SGVsbG8gV29ybGQ+PC9ib2R5PjwvaHRtbD4='}, type: <class 'dict'>, valid types: <class 'bytes'>, <class 'bytearray'>, file-like object",

Можете ли вы мне помочь?

Ответы [ 2 ]

0 голосов
/ 08 октября 2018

Вы можете encode и decode байт, используя этот пример.Это может вам помочь.

Кодировать с помощью:

Payload=json.dumps({
            'imageName': image_name,
            'imageBytes': base64.b85encode(image_bytes).decode('utf-8'),
    })

Вы можете декодировать с помощью:

let imageBytes = base64.b85decode(event['imageBytes']);
let imageName = event['imageName'];
0 голосов
/ 07 октября 2018

Поскольку данные являются двоичными или байтовыми, перед отправкой их необходимо преобразовать в строку.

input_base64str = str (input_base64, 'utf-8')

Должно это исправить.

Когда вы преобразуете обратно, измените его на байты и передайте в декодер base64.

input_base64 = bytes (input_base64str, 'utf-8')

Надеюсь, это поможет.

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