我目前正在使用以下命名方案:
/#{bucket_name}/#{customer_name}/fi/le/na/filename.jpg
因此,客户dsca007.jpg
名为bent
的文件的图片将存储在此处:
/images/bent/ds/ca/00/dsca007.jpg
但我可以理解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
然后他在youtube视频中显示了这张幻灯片:
这是否意味着我的第一种方法很好?
我真的很喜欢第一个结构,因为我能够获得一个客户拥有的文件列表,有没有办法用最后提到的命名方案列出客户下的所有文件?
通过运行此命令,可以很容易地确定每个客户使用的存储空间:
s3cmd du s3://images/#{customer_name}
我如何使用新的命名方案呢?
答案 0 :(得分:4)
如果您在构建密钥时不会使用某些唯一字符串,则很快就会遇到密钥覆盖问题。
dsca007.jpg不是很独特。将具有相同名称的文件上传到您的s3存储桶的可能性很大。 在这种情况下,您将丢失旧文件或收到错误,具体取决于您的配置。
e.g。这就是我们正在使用的: https://s3.amazonaws.com/bucket_name/user_media/videos/screenshots/cmXRyLRQxe9R139023426817_vid001.jpeg
其中前缀:cmXRyLRQxe9R139023426817_是我们构建的自生成字符串,并在上传到s3之前连接到原始文件名:vid001.jpg。