Url从Amazon S3获取文件

时间:2011-10-28 18:44:09

标签: get amazon-s3

我在确定如何从Amazon S3访问文件时遇到一些麻烦。可以说文件所在的存储桶是BUCKET_NAME,文件是FILE_NAME等。我尝试了以下两个网址:

https://s3.amazonaws.com/BUCKET_NAME/FILE_NAME/
?Expires=EXPIRATION
&Signature=SIGNATURE
&SignatureVersion=2
&SignatureMethod=HmacSHA1
&AWSAccessKeyId=KEYID

但是这给了我以下错误: NoSuchKey 指定的密钥不存在。

我也试过

https://s3.amazonaws.com/BUCKET_NAME/
?Key=FILE_NAME
&Expires=EXPIRATION
&Signature=SIGNATURE
&SignatureVersion=2
&SignatureMethod=HmacSHA1
&AWSAccessKeyId=KEYID

但是这将返回一个网页,其中包含给定存储桶(包括FILE_NAME)中所有文件的列表,而不是我想要的特定文件。我也尝试将“Action = GetObject”投入到url中,但这似乎没有改变任何东西。

找出哪种(如果有的话)是正确的方法以及我做错了什么会有所帮助。我一直在挖掘亚马逊文档一段时间,但我似乎无法解决它。

感谢。

5 个答案:

答案 0 :(得分:55)

它的实际配方更像是:

https://<bucket-name>.s3.amazonaws.com/<key>

请参阅here

答案 1 :(得分:20)

文档here,我将以法兰克福地区为例。

2种不同的网址格式:

但是这个网址不起作用:

消息是明确的:The bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint.

我可能正在讨论另一个问题,因为我没有收到NoSuchKey错误,但我怀疑错误信息随着时间的推移变得更加清晰......

答案 2 :(得分:19)

也许不是OP所追求的,但对于那些搜索URL以简单地访问S3上的可读对象的人更像是:

https://<region>.amazonaws.com/<bucket-name>/<key>

其中<region>类似于s3-ap-southeast-2

单击S3 GUI中的项目以获取存储桶的链接。

答案 3 :(得分:0)

按照@stevebot所说,执行以下操作:

https://<bucket-name>.s3.amazonaws.com/<key>

我想补充的一件事是您要么必须使存储桶对象都可以公共访问,要么可以向存储桶策略添加自定义策略。该自定义策略可以允许来自您的网络IP范围或其他凭据的流量。

答案 4 :(得分:0)

请注意,如果您位于不同的 AWS 分区中,例如美国 GovCloud 或中国,那么您的 URL 模式将略有不同。

https://<bucket-name>.s3-<region-name>.amazonaws.com/<key> 适用于 GovCloud。

中国有点像https://<bucket-name>.s3-<region-name>.amazonaws.com.cn/<key>