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

时间:2014-01-30 16:09:04

标签: file amazon-web-services amazon-s3 naming-conventions naming

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

/#{bucket_name}/#{customer_name}/fi/le/na/filename.jpg

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

/images/bent/ds/ca/00/dsca007.jpg

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

enter image description here

来源: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

然后他在youtube视频中显示了这张幻灯片:

enter image description here

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

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

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

s3cmd du s3://images/#{customer_name}

我如何使用新的命名方案呢?

1 个答案:

答案 0 :(得分:4)

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

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

e.g。这就是我们正在使用的: https://s3.amazonaws.com/bucket_name/user_media/videos/screenshots/cmXRyLRQxe9R139023426817_vid001.jpeg

其中前缀:cmXRyLRQxe9R139023426817_是我们构建的自生成字符串,并在上传到s3之前连接到原始文件名:vid001.jpg。