Aws lambda 部署后,无服务器I映像上载到S3已损坏,仅本地可用
我试图将图像上传到S3时使用了Aws lambda 部署后,无服务器I映像上载到S3已损坏,仅本地可用,aws-lambda,serverless,image-upload,Aws Lambda,Serverless,Image Upload,我试图将图像上传到S3时使用了serverless和NodeJS,但上传后出现了一些问题。在本地使用serverless-offline时,一切都像champ一样工作,但在部署之后,我遇到了这个错误。然后我尝试拦截并检测发生了什么,并看到了这个结果: 图像正文中出现了一些奇怪的字符,如0x010x04 我还尝试使用无服务器apigw二进制文件,但没有使用运气。自我回答 很幸运,我刚刚找到了解决方案 将此添加到serverless.yml provider: # others apiG
serverless
和NodeJS,但上传后出现了一些问题。在本地使用serverless-offline
时,一切都像champ一样工作,但在部署之后,我遇到了这个错误。然后我尝试拦截并检测发生了什么,并看到了这个结果:
图像正文中出现了一些奇怪的字符,如
0x01
0x04
我还尝试使用无服务器apigw二进制文件,但没有使用运气。自我回答 很幸运,我刚刚找到了解决方案 将此添加到
serverless.yml
provider:
# others
apiGateway:
binaryMediaTypes:
- '*/*'
无需无服务器apigw二进制文件
也不需要这个
const binaryMimeTypes = [
'image/gif',
'image/png',
'image/jpeg',
'image/jpg',
];
...
return serverless.createServer(expressApp, null, binaryMimeTypes)
下面的方法对我有效 若要通过lambda上传文件,一种方法是打开AWS API网关控制台 去 “API”->{YourAPI}->”设置 在那里你可以找到“二进制媒体类型”部分 添加以下媒体类型: 多部分/表单数据 保存您的更改 然后转到“资源”->“代理方法”(如“任意”)->“方法请求”->“HTTP请求头”,并添加以下头“内容类型”、“接受” 最后部署您的api
有关更多信息,请访问:您是否在AWS Lambda前使用API网关?如何调用无服务器函数?是的,我使用的是NestJS。类似于
返回serverless.proxy(服务器、事件、上下文)代码>否,我的意思是AWS API网关,如果您正在使用它,则需要允许文件类型@AWS API网关。是的,我正在使用AWS API网关。我刚刚找到解决方案。谢谢@xion