亚马逊S3:使用符号访问URL被拒绝

6

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

目前,我的所有存储桶及其中的文件都是公共的,因此我可以下载我想要的内容。 不幸的是,我无法访问使用特殊字符的文件,例如空格或"&"...

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

http://s3-eu-west-1.amazonaws.com/custom.bucket/mods/b&b.jar

by

http://s3-eu-west-1.amazonaws.com/custom.bucket/mods/b%26b.jar

但我总是遇到同样的错误:
<Error>
    <Code>AccessDenied</Code>
    <Message>Access Denied</Message>
    <RequestId>3E987FCE07075166</RequestId>
    <HostId>
        O2EIujdbiAeYg44rsezQlargfT7qVSL8SpqbTxkd/1UwxQrwZ3SJ+R3NlHyGF7rI
    </HostId>
</Error>

有人可以解决这个问题吗?
我无法重命名它们,因为它们被其他应用程序使用。
3个回答

5

我可以使用curl下载名称中包含'&'的公共文件,没有任何问题:

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

请使用AWS控制台重新检查您文件的权限。确保文件具有“Grantee: Everyone”,并点击“打开/下载”权限,如此屏幕截图所示:

AWS Console Screenshot

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


“Access Denied”错误,而不是“未找到”,可能意味着您的URL没问题,但您没有权限获取该文件。本答案中的说明应该可以解决这个问题。 - Charles Engelke
2
@CharlesEngelke 不一定。除非存储桶具有适当的权限,否则对于不存在的对象它将返回403,因为未经授权的用户在技术上没有权限知道对象是否存在。即使存储桶中的所有内容都将是公共的,我也只在对象级别上授予公共读取权限,并且我的“未找到”事件始终返回403...因此,在不了解整体配置的情况下,403与404之间的区别并不能可靠地指示对象是否存在。 - Michael - sqlbot
我的错,我没有正确创建权限。这是因为我尝试为我的服务器生成类似于S3存储桶的XML文件,但在我的服务器上无法正常工作 :/ - jbltx

0

请注意问题的时间戳。 - Treycos
它可以帮助面临类似问题的程序员。鼓励知识共享。 - Nitish Raj
如果这个答案不仅仅是一个链接,并且没有给出其他更好的答案,那就太好了。 - Treycos

0

我能够下载带有特殊字符的文件:

# wget --no-check-certificate https://s3-us-west-2.amazonaws.com/bucket1234/b%26b.jar
--2013-12-01 14:15:20--  https://s3-us-west-2.amazonaws.com/bucket1234/b%26b.jar
Resolving s3-us-west-2.amazonaws.com... 54.240.252.26
Connecting to s3-us-west-2.amazonaws.com|54.240.252.26|:443... connected.
WARNING: certificate common name `*.s3-us-west-2.amazonaws.com' doesn't match requested host name `s3-us-west-2.amazonaws.com'.
HTTP request sent, awaiting response... 200 OK
Length: 0 [application/x-java-archive]
Saving to: `b&b.jar'

    [ <=>                                                                             ] 0           --.-K/s   in 0s      

2013-12-01 14:15:22 (0.00 B/s) - `b&b.jar' saved [0/0]

您确定这个文件是“公开可见”的吗?能否再次检查一下该文件的权限?这绝对不是特殊字符引起的问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接