Url to get a file from Amazon S3

こ雲淡風輕ζ 提交于 2019-11-27 01:45:21

问题


I am having some trouble figuring out how to access a file from Amazon S3. Lets say that the bucket that the file lives in is BUCKET_NAME, the file is FILE_NAME, etc. I have tried the following two urls:

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

But this gives me the following error: NoSuchKey The specified key does not exist.

and I have also tried

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

but this returns a webpage with a list of all of the files in the given bucket (including FILE_NAME), instead of the specific file I want. I have also tried throwing in "Action=GetObject" into the url as well but that doesn't seem to change anything.

It would be helpful to find out which (if any) is the proper method and what I am doing wrong. I have been digging through amazon documentation for a while now but I can't seem to sort it out.

Thanks.


回答1:


Its actually formulated more like:

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

See here




回答2:


Documentation here, and I'll use the Frankfurt region as an example.

2 different URL styles:

  • Virtual host style: https://BUCKET.s3.amazonaws.com/FILE
  • Path style: https://s3-eu-central-1.amazonaws.com/BUCKET/FILE

But this url does not work:

  • https://s3.amazonaws.com/BUCKET/FILE

The message is explicit: The bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint.

I may be talking about another problem because I'm not getting NoSuchKey error but I suspect the error message has been made clearer over time...




回答3:


Perhaps not what the OP was after, but for those searching the URL to simply access a readable object on S3 is more like:

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

Where <region> is something like s3-ap-southeast-2.

Click on the item in the S3 GUI to get the link for your bucket.




回答4:


As @stevebot said, do this:

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

The one important thing I would like to add is that you either have to make your bucket objects all publicly accessible OR you can add a custom policy to your bucket policy. That custom policy could allow traffic from your network IP range or a different credential.



来源:https://stackoverflow.com/questions/7933458/url-to-get-a-file-from-amazon-s3

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!