我需要了解Instagram上传文件到Amazon S3时的工程细节。 我刚开始使用S3,认为Instagram是一个好的模型,因为每天上传数千张图片。我的应用程序有些相似。用户上传图像,可以删除自己的图像,所有图像都是公开的。
在我的项目中,我正在创建带有文件夹前缀的对象,以便为每个用户组织上传。例如:用户名/文件名
我的对象URL看起来像这样:
https://s3.amazonaws.com/my_bucket/username/28c3d2c6ec098bd077d6b9cb5f13869d.jpg
但是 Instagram:
http://distilleryimage7.s3.amazonaws.com/f4947c1004ca11e2a0c81231380ff428_7.jpg
我猜测
distilleryimage7
是存储桶名称。我不确定这种类型的URL有什么优势。我还猜想Instagram不使用“文件”存储桶,而是将所有图像存储在一个存储桶中。请分享S3的任何最佳实践。
distilleryimage7
,但如果那不是一个用户名,那我撤回我的编辑。他们每个用户使用一个存储桶似乎非常奇怪。我处理视频的方式是将S3 URL存储在数据库行中,这给了我获取S3对象URL的方法。 - Sammayedistilleryimage7
是我认为的存储桶名称。他们不能为每个用户都有一个存储桶,因为只允许100个。存储桶名称中的数字会有所不同。我也将对象数据存储在数据库表中,例如名称、大小、类型、添加日期等。这样我就可以减少 API 请求并直接使用我的数据库。 - CyberJunkie