用于性能的Amazon AWS S3文件命名策略

Kas*_*bbe 7 naming file naming-conventions amazon-s3 amazon-web-services

我目前正在使用以下命名方案:

/#{bucket_name}/#{customer_name}/fi/le/na/filename.jpg
Run Code Online (Sandbox Code Playgroud)

因此,dsca007.jpg为客户命名的文件的图像bent将存储在此处:

/images/bent/ds/ca/00/dsca007.jpg
Run Code Online (Sandbox Code Playgroud)

但我可以理解S3想要一个不同的形式:

在此输入图像描述

资料来源:http://docs.aws.amazon.com/AmazonS3/latest/dev/request-rate-perf-considerations.html

来源:https://www.youtube.com/watch?v = uXHw0Xae2ww#t = 535

我知道他们希望我将我的命名方案改为:

/#{bucket_name}/fi/le/na/#{customer_name})filename.jpg
Run Code Online (Sandbox Code Playgroud)

但他在YouTube视频中显示了这张幻灯片:

在此输入图像描述

这是否意味着我的第一种方法很好?

我真的很喜欢第一个结构,因为我能够获得一个客户拥有的文件列表,有没有办法用最后提到的命名方案列出客户下的所有文件?

通过运行此命令,可以很容易地确定每个客户使用的存储量:

s3cmd du s3://images/#{customer_name}
Run Code Online (Sandbox Code Playgroud)

我怎么能用新的命名方案呢?

Ami*_*mor 6

如果在构建密钥时不使用某些唯一的字符串,那么您很快就会遇到密钥覆盖问题。

dsca007.jpg不是很独特。具有相同名称的文件很有可能会被上传到您的s3存储桶。在这种情况下,您将丢失旧文件或出现错误,具体取决于您的配置。

例如,这就是我们正在使用的: https://s3.amazonaws.com/bucket_name/user_media/videos/screenshots/cmXRyLRQxe9R139023426817_vid001.jpeg

其中前缀:cmXRyLRQxe9R139023426817_是我们生成的自生成字符串,并与原始文件名vid001.jpg相连,然后上传到s3。

  • 我联系了亚马逊的克雷格·卡尔,他告诉我你所做的事情是正确的。 (2认同)
  • 实际上,静态前缀被认为很好:http://docs.aws.amazon.com/AmazonS3/latest/dev/request-rate-perf-considerations.html (2认同)