Jes*_*est 7 amazon-web-services aws-lambda aws-api-gateway serverless-framework serverless
我正在尝试对multipart/form-dataAWS lambda 函数执行包含 pdf 文件的 POST,对文件进行一些检查,然后将文件 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
}
});
Run Code Online (Sandbox Code Playgroud)
file.content实际上包含一个包含文件内容的 Buffer,但是当我发出请求时,外部 API 返回错误并且请求失败...
有趣的是,当我在本地运行无服务器功能时,整个设置有效sls offline。这可能表明 API 网关设置存在问题。
一些附加信息:
根据多部分插件的说明,我在 API 网关设置中添加了二进制数据类型:
这是 AWS Gateway 中终端节点的配置:
我也尝试了这个SO问题和AWS文档,但它们只介绍了如何接收二进制文件,而不是如何发送二进制文件。
是否可以在 lambda 中接收然后发送文件,或者应该以不同的方式解决这个问题?
小智 1
我对该库也有同样的问题。所以我尝试了 - https://www.npmjs.com/package/aws-multipart-parser - 还有关于在serverless.yml 文件中写入内容的描述。现在它就像魅力一样发挥作用!
| 归档时间: |
|
| 查看次数: |
9254 次 |
| 最近记录: |