通过AWS Lambda Python下载/发送文件
我试图通过AWS Lambda发送一个文件,但返回了错误(通过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'
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网关集成,