【发布时间】:2021-02-15 13:04:10
【问题描述】:
我正在通过 API Gateway 调用此 Lambda 函数。我的问题是图像文件格式错误,这意味着它无法打开。
import boto3
import json
def lambda_handler(event, context):
print(event)
# removing all the data around the packet
# this also results in a malformed png
start = '<?xpacket end="r"?>'
end = '\r\n------'
content = str(event['body'])
content = content[content.index(start) + len(start):content.index(end)].encode('utf-8')
bucket_name = "bucket-name"
file_name = "hello1.png"
lambda_path = "/tmp/" + file_name
s3_path = file_name
s3 = boto3.resource("s3")
s3.Bucket(bucket_name).put_object(Key=s3_path, Body=content)
return {
'statusCode': 200,
'headers': {
'Access-Control-Allow-Origin': '*',
},
'body': json.dumps(event)
}
【问题讨论】:
-
我在格式错误的图像上也遇到过类似的问题,在我的情况下,这是因为 API Gateway 默认使用 base64 编码作为 multipart/form-data。因为我需要在上传图像时处理图像,所以预签名 URL 不适合我的用例。这个答案帮助我指出了正确的方向:stackoverflow.com/a/41770688/12992963您能否分享您的 lambda 生成的日志输出(来自上传小图像)?
标签: python amazon-web-services aws-lambda boto3 multipartform-data