【问题标题】:read file from s3 bucket从 s3 存储桶读取文件
【发布时间】:2022-01-01 18:43:59
【问题描述】:

我正在尝试使用 golang 从 s3 存储桶中获取文件。我的请求的特别之处在于我需要从 s3 的根目录中获取一个文件。即,在我的情况下,我有一个 buckets 文件夹,它是 s3 的根目录,里面有文件夹和文件。我需要从 buckets 文件夹中获取文件。这意味着我没有存储桶文件夹,因为我只能访问根目录。 我尝试的代码是:

numBytes, err := downloader.Download(file, &s3.GetObjectInput{
  Bucket: aws.String("/"),
  Key:   aws.String("some_image.jpeg"),
})

问题是我收到一个错误,说该对象不存在。 是否可以从 s3 的根目录读取文件?我需要在桶中写什么?密钥写好了吗?

非常感谢您的帮助!

【问题讨论】:

  • 您必须指定存储桶名称才能读取对象。关键是允许文件夹像寻址的部分。
  • 我试图在 Bucket 上设置“buckets”的值,我想如果我给根文件夹它会起作用,但我仍然遇到同样的错误......你的意思是我只能阅读来自存储桶文件夹而不是根目录的文件?
  • 示例:桶:“mybucket”,键:“dogs/snoopy.png”。

标签: amazon-web-services go amazon-s3


【解决方案1】:

S3 中的所有文件都存储在存储桶中。您无法在 s3 的根目录中存储文件。

每个存储桶都有自己独特的命名空间。您的 Amazon 账户中可以有多个存储桶,每个文件必须属于其中一个存储桶。

您可以使用 AWS Web 界面、命令行工具或 API 创建存储桶。 (或 Cyber​​duck 等第三方软件)。

您可以在此处阅读有关 S3 中存储桶的更多信息:https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingBucket.html

【讨论】:

  • 我在 seaweedFS 上使用它允许我将文件上传到根文件夹。问题是我可以读取我上传到根文件夹的文件吗?
  • 是的,您可以读取上传到存储桶根目录的文件。在这种情况下,您需要调整代码以包含正确的存储桶名称。 (顺便说一句,S3 实际上并没有传统意义上的文件夹 - 每个文件都有自己不同的名称。斜杠“/”用作模拟目录结构的分隔符主要只是一种约定)
  • 我试图在存储桶名称上加上值“buckets”,这意味着存储的根,但它没有工作。你知道我需要哪种约定才能使其在代码中的桶值和键值的含义中起作用吗?
  • 您需要添加存储桶的实际名称。没有名称的存储桶是不可能的。您可以登录 AWS Web 控制台,也可以使用 Cyber​​duck 等程序查看您的存储桶。这应该告诉您您创建的存储桶的名称。 (或者,如果您还没有创建一个,您也可以在那里创建一个)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-05-14
  • 1970-01-01
  • 2018-11-07
  • 1970-01-01
  • 2019-09-19
  • 2020-07-04
  • 2017-09-29
相关资源
最近更新 更多