通过AWS Lambda Python下载/发送文件

通过AWS Lambda Python下载/发送文件,python,amazon-web-services,aws-lambda,Python,Amazon Web Services,Aws Lambda,我试图通过AWS Lambda发送一个文件,但返回了错误(TypeError(repr(o)+“不是JSON可序列化的”)) 我尝试对一个zip文件进行编码,并将其与响应一起发送。但它返回了一个错误 以下是我的示例代码: import json import base64 import zipfile def lambda_handler(event, context): # TODO implement archive_name = '/tmp/test_file.zip'

我试图通过AWS Lambda发送一个文件,但返回了错误(
TypeError(repr(o)+“不是JSON可序列化的”)

我尝试对一个zip文件进行编码,并将其与响应一起发送。但它返回了一个错误

以下是我的示例代码:

import json
import base64
import zipfile

def lambda_handler(event, context):
    # TODO implement
    archive_name = '/tmp/test_file.zip'

    with zipfile.ZipFile(archive_name, 'w') as zip_file:
        pass
    zip_file.close()

    image_processed = open(archive_name, 'rb')
    image_processed_data = image_processed.read()
    image_processed.close()
    res = base64.encodestring(image_processed_data)

    return{
        'statusCode': 200,
        'body': res,
        'headers': {
            'Content-Type': 'application/octet-stream',
        },
        'isBase64Encoded': True
    }
答复:

{
  "errorMessage": "b'UEsDBBQAAAAAAEhAbU/8RgkRDgAAAA4AAAAJAAAAdG1wL2EudHh0S2FydGhpa2V5YW4gS1JQSwEC\\nFAMUAAAAAABIQG1P/EYJEQ4AAAAOAAAACQAAAAAAAAAAAAAAtIEAAAAAdG1wL2EudHh0UEsFBgAA\\nAAABAAEANwAAADUAAAAAAA==\\n' is not JSON serializable",
  "errorType": "TypeError",
  "stackTrace": [
    [
      "/var/lang/lib/python3.6/json/__init__.py",
      238,
      "dumps",
      "**kw).encode(obj)"
    ],
    [
      "/var/lang/lib/python3.6/json/encoder.py",
      199,
      "encode",
      "chunks = self.iterencode(o, _one_shot=True)"
    ],
    [
      "/var/lang/lib/python3.6/json/encoder.py",
      257,
      "iterencode",
      "return _iterencode(o, 0)"
    ],
    [
      "/var/runtime/awslambda/bootstrap.py",
      134,
      "decimal_serializer",
      "raise TypeError(repr(o) + \" is not JSON serializable\")"
    ]
  ]
}
我附加了我尝试的示例代码,还添加了Lambda的错误响应


提前感谢。

res的类型是
字节
,因此它不可Json序列化

你可以试试:

返回{
“状态代码”:200,
“body”:res.decode(),
“标题”:{
“内容类型”:“应用程序/八位字节流”,
},
“isBase64Encoded”:True
}

谢谢您的回复,但实际上我想将此字节响应保存到一个文件中。@KarthikeyanKR看起来返回的
字节对纯Lambda不可用。但您可以按照这些文档将其与API网关集成,