在 AWS S3 上创建过时的子目录的简单方法

很多

我正在尝试创建一个能够在 S3 中存储用户上传文件的 Web 服务。问题是我们希望文件存储在“过时的目录”中。

例如,如果用户上传a.txt12/1/2017 at 9:15am,该文件应该是这样的S3:

https://s3-eu-west-1.amazonaws.com/test-bucket/uploaded/2017/12/1/9/a.txt

S3 是否有任何 API 可以帮助我们实现这一目标,还是我们需要手工制作此解决方案?

约翰·罗滕斯坦

S3 中没有这样的 API。将 Amazon S3 视为一种存储服务,而不是应用程序或数据库。

应用程序责任以所需的命名格式存储数据——就像将数据存储在磁盘上一样。

顺便说一句,您的命名格式可以做一些改进:

  • 始终将字段扩展到正确的位数(01用于一月而不是1),以便它们正确排序。
  • 考虑一下您的用例——如果您将按年份扫描文档,那么/2017/12/01/09/a.txt命名格式是有意义的,因为您可以查看 2017 目录(而不是 S3 中真正存在的目录)。如果没有,那么只需将其存储为/2017-12-01-09-a.txt.
  • 明确哪个是月与日——美国是世界上唯一一个将“12/1/2017”视为 12 月 1 日的国家。世界其他地方将其读作“1月12日”。使用 的格式2017-12-01可以清楚地表明它是 1-December-2017。
  • 命名冲突怎么办?只能有一个人在某一天上传具有给定名称的文件吗?您将如何区分上传同名文件的不同用户?
  • 实际情况是,文件名完全无关——您的应用程序应该使用数据库来跟踪用户上传的对象并为每个对象分配一个唯一的名称。当稍后请求文件时,在数据库中查找文件名,然后提供该文件。不要将 S3 文件名用作名称传达特定含义的伪数据库,否则您经常需要重命名文件以添加更多含义!
    • S3 中实际上并不存在目录——它们只是文件名的一部分。因此,您可以通过存储在给定目录中创建文件——无需预先创建目录。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章