在this AWS documentation之后,我能够在我的API网关上创建一个能够操纵S3存储库上的文件的新端点。我遇到的问题是文件大小(AWS having a payload limitation of 10MB)。
我想知道,如果不使用lambda解决方法(this link would help with that),是否可以上传并获取大于10MB的文件(如果需要的话,甚至是二进制文件),因为这是使用S3服务作为代理 - 或者是限制吗?
我已尝试PUT
ting和GET
大于10MB的文件,每个回复都是典型的"message": "Timeout waiting for endpoint response"
。
看起来Lambda
是唯一的方法,只是想知道是否还有其他人使用S3作为代理。
谢谢
答案 0 :(得分:5)
您可以创建一个Lambda代理函数,该函数将返回带有S3预签名URL的重定向链接。
生成预签名S3网址的示例JavaScript代码:
var s3Params = {
Bucket: test-bucket,
Key: file_name,
ContentType: 'application/octet-stream',
Expires: 10000
};
s3.getSignedUrl('putObject', s3Params, function(err, data){
...
}
然后,您的Lambda函数会向您的客户端返回重定向响应,例如
{
"statusCode": 302,
"headers": { "Location": "url" }
}
您可以从此documentation找到所需的更多信息。
答案 1 :(得分:2)
如果您有大文件,请考虑直接从客户端上传到S3。您可以创建一个API端点,为客户端返回signed URL,以用于上传(实施访问控制)您的私人内容。
此外,您可以考虑将multi-part uploads用于更大的文件,以加快上传速度。