如何在调用AWS Lambda函数期间在有效负载中传递字节数据

时间:2018-10-07 08:24:54

标签: python aws-lambda

我在Lambda函数上输入的是

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是字节类型变量

我正在从其他Lambda函数调用此Lambda函数,但无法传递此有效载荷

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 :(得分:2)

使用此示例,您可以encodedecode个字节。这可能会对您有所帮助。

编码方式:

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

您可以通过以下方式进行解码:

let imageBytes = base64.b85decode(event['imageBytes']);
let imageName = event['imageName'];

答案 1 :(得分:1)

由于数据是二进制或字节,因此您需要先将其转换为字符串,然后再发送。

  

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

应该修复它。

转换回来时,将其更改为字节,然后将其传递给base64解码器。

  

input_base64 =字节(input_base64str,'utf-8')

希望有帮助。