在AWS Lambda中接收和发送多部分/表单数据文件

问题描述 投票:1回答:1

[我正在尝试将包含pdf文件的multipart/form-data POST发送到AWS lambda函数,对文件进行一些检查,然后将文件POST到外部API。

我正在使用无服务器框架以及node.js和aws-lambda-multipart-parser插件来接收文件。

从客户端上传到lambda的文件有效,我可以将缓冲区内容打印到控制台。无效的部分是将文件转发到外部API。

这是我当前的axios设置,用于向外部API发出POST请求:

const formData = new FormData();
formData.append("file", file.content, file.filename);

const res = await axios.post(`https://external-api.com`, formData, {
  headers: { ...formData.getHeaders(), "Access-Control-Allow-Origin": "*" },
  params: {
    someParams: foo
  }
});

[file.content实际上包含一个包含文件内容的缓冲区,但是当我发出请求时,外部API返回错误并且请求失败...

有趣的是,当我使用sls offline在本地运行无服务器功能时,整个设置工作正常。这可能表明API网关设置存在问题。

一些其他信息:

基于多部分插件的instructions,我在API网关设置中添加了二进制数据类型:

enter image description here

这是AWS Gateway中终端的配置:

enter image description here

我也尝试过此SO questionAWS documentation,但它们仅介绍如何接收二进制文件,而不涉及如何发送二进制文件。

是否可以在lambda中接收然后发送文件,还是应该以其他方式解决?

amazon-web-services aws-lambda aws-api-gateway serverless-framework serverless
1个回答
0
投票

我对该库有同样的问题。因此,我尝试使用-https://developer.aliyun.com/mirror/npm/package/aws-multipart-parser-还描述了在serverless.yml文件中写入的内容。现在正在像魅力一样工作!

© www.soinside.com 2019 - 2024. All rights reserved.