我们是否需要目录结构逻辑来在Amazon S3/Cloudfront上存储数百万个图像?

gor*_*dyr 8 amazon-s3 amazon-web-services amazon-cloudfront

为了支持数以百万计的潜在图像,我们之前遵循了这种目录结构:

/profile/avatars/44/f2/47/48px/44f247d4e3f646c66d4d0337c6d415eb.jpg

文件名是md5哈希,然后我们提取字符串中的前6个字符并从中构建文件夹结构.

所以在上面的例子中文件名:

44f247d4e3f646c66d4d0337c6d415eb.jpg

生成一个目录结构:

/44/f2/47/
Run Code Online (Sandbox Code Playgroud)

我们总是这样做是为了最小化任何单个目录中的照片数量,最终有助于文件系统性能.

但是,我们的新应用程序正在使用Amazon S3和Cloudfront

我的理解是,您在Amazon S3上创建的任何文件夹实际上只是引用,而不是文件系统上的目录.

如果这是正确的,仍然建议拆分成上面的文件夹/目录,或类似的方法?或者我们可以简单地删除应用程序代码中的这种复杂性,并提供如下图像链接:

/profile/avatars/48px/filename.jpg
Run Code Online (Sandbox Code Playgroud)

请注意,此应用程序旨在为数百万张照片提供服务.

任何指导将不胜感激.

j0n*_*nes 9

虽然S3文件夹是基本上可以写一键名(如@EJBrennan在他的回答已经说过),只有另一种方式,还有考虑你的"文件夹"的命名结构的原因.

根据您当前的照片数量以及可能的访问模式,考虑加速S3键名查找的方法可能是有意义的,确保照片上的操作分散在多个分区上.AWS博客上有一篇很好的文章解释了所有细节.