AWS S3 - 在404 NoSuchKey中获取对象结果
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AWS S3 - 在404 NoSuchKey中获取对象结果相关的知识,希望对你有一定的参考价值。
我正在使用AWS SDK将图像放入我的S3实例。我可以通过以下方式成功完成此操作:
AmazonS3 s3client = new AmazonS3Client(new ProfileCredentialsProvider());
s3client.putObject(new PutObjectRequest(bucketName, key, file));
如果我在控制台页面上浏览S3系统,我也可以看到上传的文件。但是,当我尝试通过SDK检索相同的文件时,我收到404“NoSuchKey”错误:
AmazonS3 s3client = new AmazonS3Client(new ProfileCredentialsProvider());
S3Object result = s3client.getObject(new GetObjectRequest(bucketName, key));
这是确切的错误:
com.amazonaws.services.s3.model.AmazonS3Exception:指定的密钥不存在。 (服务:Amazon S3;状态代码:404;错误代码:NoSuchKey;
谁知道为什么?
确保您的密钥名称不包含任何将被URL解码的特殊字符。一种常见的情况是,如果您的密钥名称包含“+”,则在使用S3ObjectSummary类的getKey()API检索密钥名称时,它将被解码为空白空间。
可能需要特殊处理的字符
密钥名称中的以下字符可能需要额外的代码处理,并且可能需要进行URL编码或引用为HEX。其中一些是不可打印的字符,您的浏览器可能无法处理它们,这也需要特殊处理:
&符号(“&”)
美元(“$”)
ASCII字符范围00-1F十六进制(十进制0-31)和7F(十进制127)
'at'符号(“@”)
等于(“=”)
分号(“;”)
冒号(“:”)
加(“+”)
空间 - 在某些用途(特别是多个空间)中可能会丢失重要的空间序列
段落(“,”)
问号(“?”)
https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html
以上是关于AWS S3 - 在404 NoSuchKey中获取对象结果的主要内容,如果未能解决你的问题,请参考以下文章
AWS CLI S3:使用终端在本地复制文件:致命错误:调用 HeadObject 操作时发生错误(404)