我正在尝试使用AWS S3 REST API检索存储桶的对象(我没有使用SDK),但不幸的是我遇到了以下问题:当我调用API时,我不知道它的区域.
这是我做的:
因此,这是我的问题:
有没有办法在不知道其区域的情况下获取桶的对象列表?或者有没有简单的方法来获得桶的区域?
信息:我读过有两种方式可以调用存储桶,"路径式"和"虚拟托管式",但每当我将请求发送到" https://s3.amazonaws.com/ [bucketname]时"相反,它给了我一个重定向的错误......
假设我有以下存储桶名称long.bucket.name。使用 CLI 时aws s3 presign,我得到的 URL 的形式为:
https://s3.amazonaws.com/long.bucket.name/path/to/key?AWSAccessKeyId=123&...
Run Code Online (Sandbox Code Playgroud)
然而,当使用GeneratePresignedUrlRequestJava 库时,我得到的 URL 的形式为
https://long.bucket.name.s3.amazonaws.com/path/to/key?AWSAccessKeyId=123&...
Run Code Online (Sandbox Code Playgroud)
此 URL 的问题是 SSL 认证由于通配符而失败(请参阅http://docs.aws.amazon.com/AmazonS3/latest/dev/VirtualHosting.html)。如果我尝试使用相同格式的 URL,https://s3.amazonaws.com/long.bucket.namae...签名验证将失败
The request signature we calculated does not match the signature you provided. Check your key and signing method
Run Code Online (Sandbox Code Playgroud)
我唯一能做的就是使用http不理想的东西。如何正确生成 Presign URL?