use*_*690 56 android amazon-s3 amazon-web-services
我在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;
Run Code Online (Sandbox Code Playgroud)
即使我能够在S3存储桶中看到具有指定键的对象.
Fah*_*him 38
那么这个错误实际上是相当直接的.它只是意味着您的文件在S3存储桶中不存在.有些事情可能是错的:
您可能试图引用错误的文件.仔细检查您尝试检索的路径.
无论何时上传文件,它都必须失败.检查S3Sync进程的日志,看看是否可以找到任何相关的输出
Tri*_*mad 20
对我来说,对象肯定存在并且被正确上传,但是,它的s3 url仍然抛出相同的错误:
<Code>NoSuchKey</Code>
<Message>The specified key does not exist.</Message>
Run Code Online (Sandbox Code Playgroud)
我发现原因是因为我的文件名包含一个#
符号,我猜某些字符或符号也会导致此错误.
删除此字符并生成新的s3网址解决了我的问题.
我在 NodeJS Lambda 函数中遇到了这个问题,该函数是由文件上传到 S3 触发的。
我的错误是我没有解码包含冒号的对象密钥。我的代码更正如下:
let key = decodeURIComponent(event.Records[0].s3.object.key);
Run Code Online (Sandbox Code Playgroud)
就我而言,这是因为文件名包含空格。感谢这个文档(与问题无关)解决了这个问题:
from urllib.parse import unquote_plus
key_name = unquote_plus(event['Records'][0]['s3']['object']['key'])
Run Code Online (Sandbox Code Playgroud)
您还需要将 urllib 作为具有相应版本的层上传(如果您的 lambda 是 Python 3.7,则必须在 python 3.7 环境中打包 urllib)。
原因是 AWS 将 ' ' 转换为 '+'(为什么...),这确实是有问题的...
归档时间: |
|
查看次数: |
88883 次 |
最近记录: |