如何使用Lambda / API Gateway将大于10MB的csv文件上传到S3

5 浏览
0 Comments

如何使用Lambda / API Gateway将大于10MB的csv文件上传到S3

你好,我是AWS的新用户。我尝试将一个大于10MB的CSV文件上传到我的S3存储桶上,但是当文件大于10MB时,返回的错误信息是“{\"message\":\"Request Entity Too Large\"}\"。我使用Postman来进行操作。下面是我目前创建的代码,但是将来我会添加一些验证来更改正在上传的文件的名称为我要求的格式。有没有办法用这种代码来实现,或者你有什么建议可以帮助我解决遇到的问题?

0
0 Comments

问题的原因是上传大于10MB的csv文件到S3时,通过Lambda和API Gateway进行传输存在一些困难。解决方法是直接将文件发送到S3,而不是通过API Gateway发送到Lambda。使用S3的签名URL功能可以确保安全地上传文件到受保护的存储桶。

具体的解决方法如下:

1. 前端发送请求到API Gateway;

2. API Gateway将请求转发给Lambda函数;

3. Lambda函数生成一个带有权限的签名URL,用于将对象上传到特定的S3存储桶;

4. API Gateway将Lambda函数的响应发送回前端,前端使用签名URL上传文件。

生成签名URL需要在Lambda函数中使用aws-sdk库的getSignedUrl方法。更多关于签名URL的信息可以在这里找到:https://docs.aws.amazon.com/AmazonS3/latest/dev/PresignedUrlUploadObject.html

在Lambda函数中使用Node.js时,可以参考以下链接中的示例代码:stackoverflow.com/questions/38831829/…

如果在Postman中测试时出现"Request Entity Too Large"错误,请确保将文件发送到签名URL而不是API Gateway。如果需要,可以在GitHub Gist或者其他地方分享Lambda函数的代码以便进行更详细的排查。

0