如何在 python 中从 AWS API 网关下载 PDF 文件



我正在创建AWS API终端节点(GET(以获取PDF文件并面临可序列化的问题。

AWS Lambda 已映射为从 s3 访问文件。

import boto3
import base64

def lambda_handler(event, context):
response = client.get_object(
Bucket='test-bucket',
Key=file_path,
)
data = response['Body'].read()
return {
'statusCode': 200,
'isBase64Encoded': True,
'body': data,
'headers': {
'content-type': 'application/pdf',
'content-disposition': 'attachment; filename=test.pdf'
}
}

[错误] 运行时元帅错误:无法封送响应:字节不可 JSON 序列化。

如果我return str(data, "utf-8")将下载PDF文件并在打开时出现问题。

请向我建议我落后的地方。

谢谢。

您需要先启动客户端变量,然后对从 s3 返回的数据进行编码,如下所示:

import json
import boto3
import base64
client = boto3.client('s3')
def lambda_handler(event, context):
bucket_name ='bucket-name'
file_name='file-name.pdf'

fileObject = client.get_object(Bucket=bucket_name, Key=file_name)

file_content = fileObject["Body"].read()

print(bucket_name, file_name)

return base64.b64encode(file_content)

最新更新