android-Amazon S3异常:“指定的键不存在”

我在Android应用程序中使用AmazonS3Client,使用getObject请求从我的Amazon S3存储桶下载图像。

目前,我收到此异常:

com.amazonaws.services.s3.model.AmazonS3Exception: 
The specified key does not exist.
 (Service: Amazon S3; Status Code: 404; Error Code: NoSuchKey;

即使我可以在S3存储桶中看到具有指定键的对象。

6个解决方案
36 votes

好吧,这个错误实际上很简单。 这仅表示您的文件不在S3存储桶中。 有几件事情可能是错误的:

  1. 您可能正在尝试引用错误的文件。 仔细检查您尝试检索的路径。

  2. 无论何时上传文件,它都一定会失败。 检查S3Sync进程的日志,以查看是否可以找到任何相关的输出

资源

Fahim answered 2020-01-23T22:21:01Z
20 votes

对我来说,该对象肯定存在并且已正确上传,但是,其s3 url仍然引发相同的错误:

<Code>NoSuchKey</Code>
<Message>The specified key does not exist.</Message>

我发现原因是因为我的文件名包含#符号,并且我猜某些字符或符号也会导致此错误。

删除此字符并生成新的s3 url解决了我的问题。

Truchainz answered 2020-01-23T22:21:31Z
5 votes

请注意,由于s3的最终一致性模型,即使文件路径正确也可能会发生这种情况。 基本上,在写入对象之后,读取对象可能会有些延迟。 有关更多信息,请参见本文档。

Nick Resnick answered 2020-01-23T22:21:51Z
2 votes

就我而言,出现错误是因为我已将包含网站文件的整个文件夹上载到了容器中。

我通过将所有文件移出文件夹,直接移入容器来解决了该问题。

Darush answered 2020-01-23T22:22:15Z
0 votes

问题的原因是“存储桶/密钥”名称错误或错字。 请检查您提供的存储桶或密钥名称是否存在。

Gaurav Sharma answered 2020-01-23T22:22:35Z
0 votes

不要忘记,存储桶是特定于区域的。 那可能是个问题。

另外,尝试使用S3控制台导航到实际对象,然后单击Copy Path,您将获得类似以下内容的信息:

s3://<bucket-name>/<path>/object.txt

只要将它传递给正确解析的文件,我都会发现这是最安全的事情。

P Burke answered 2020-01-23T22:23:09Z
translate from https://stackoverflow.com:/questions/28653249/amazon-s3-exception-the-specified-key-does-not-exist