我有一个AWS Lambda函数,用户可以对其进行GET request
并返回预签名的URL。然后,用户通过向该URL发出PUT请求来上传图像。由于AWS S3 PUT requests
将每个URL的对象上传限制为一个,所以
如何发送多张图像?我是否应该在当前图像数量上使用循环,例如:
说用户要上传5张图片。
for(...5 images...){
Make GET request to generate URL
In the callback method,
Make a PUT request to the generated URL to upload image
}
我不确定是否应该以这种方式使用该服务。而且,这还会引起另一个问题,例如,如果我希望将所有图像上传并保存到我的数据库中,或者不保存任何图像,该怎么办。因为在PUT request's
后处理Lambda函数中,我想将该S3图像URL保存到我的数据库中,所以如果网络出现故障,如何确保所有图像都被上传,而不仅仅是3/5?
答案 0 :(得分:2)
您是对的。预先生成的url专门用于上传单个文件。
如果要在所有文件上传或不上传的情况下实现这种原子行为,则需要自己实现这种逻辑。
例如,将所有文件上传到其他S3位置。然后,一旦上传了所有文件,您应该具有将文件移动到实际位置的服务或功能。