Amazon S3:使用符号拒绝访问 URL

mic*_*b91 6 url amazon-s3 special-characters access-denied amazon-web-services

我想下载一些上传到我的 S3 服务器上的文件。

目前,我所有的存储桶和其中的文件都是公开的,所以我可以下载我想要的。不幸的是,我无法使用空格或“&”等特殊字符访问文件...

我尝试通过 HTML 代码更改 URL 中的特殊字符:

http://s3-eu-west-1.amazonaws.com/custom.bucket/mods/b&b.jar
Run Code Online (Sandbox Code Playgroud)

经过

http://s3-eu-west-1.amazonaws.com/custom.bucket/mods/b%26b.jar
Run Code Online (Sandbox Code Playgroud)

但我总是有同样的错误:

<Error>
    <Code>AccessDenied</Code>
    <Message>Access Denied</Message>
    <RequestId>3E987FCE07075166</RequestId>
    <HostId>
        O2EIujdbiAeYg44rsezQlargfT7qVSL8SpqbTxkd/1UwxQrwZ3SJ+R3NlHyGF7rI
    </HostId>
</Error>
Run Code Online (Sandbox Code Playgroud)

任何人都可以解决这个问题?

我无法重命名它们,因为它们已被其他应用程序使用。

lre*_*der 5

我可以使用 curl 下载名称中带有“&”的公共文件,而不会出现任何问题:

curl https://s3.amazonaws.com/mybucket/test/b%26b.jar

使用 AWS 控制台重新检查您的文件的权限。确保文件具有“受赠者:所有人”,并单击打开/下载权限,如下面的屏幕截图所示:

AWS 控制台屏幕截图

添加这些凭据后,请务必单击“保存”按钮。或者,尝试使用您的安全凭证。

  • @CharlesEngelke 不一定。除非存储桶具有适当的权限,否则它将在不存在的对象上返回 403,因为未经授权的用户在技术上没有权限知道对象是否存在。我只在对象级别授予公开读取权限,即使存储桶中的所有内容都将是公开的,并且我的“未找到”事件总是返回 403 ......所以 403 与 404 不是对象存在的可靠指标而不知道整体配置。 (2认同)