Pau*_*cas 1 amazon-s3 go aws-sdk
我看到的示例使用AWS Go for SDK从S3下载文件的形式如下:
downloader := s3manager.NewDownloader(session, /* other args */)
s3object := &s3.GetObjectInput{
Bucket: aws.String(myBucket),
Key: aws.String(myKey),
}
bytesDownloaded, err := downloader.Download(myFile, s3object)
Run Code Online (Sandbox Code Playgroud)
也就是说,使用存储桶和密钥来指定文件。但是,如果我已经在S3上拥有文件的完整URI,该怎么办?例如:
https://s3.us-west-2.amazonaws.com/myBucket/myKey
有没有一种方法可以使用SDK指定要直接使用URL下载的文件?
不,存储桶不是公共的。在SDK中,我还要设置访问密钥和秘密密钥(从示例代码中删除)。
最后,如果根本无法通过SDK执行我所要求的操作,那么这是可以接受的(尽管不是期望的)答案。
无法做您想做的事。获取私有对象的唯一方法是:
hhtp.Get(要生成预签名的URL,您需要存储桶和密钥)如果您确实要使用URL,建议您围绕s3.GetObjectInput该URL 创建一个包装,将URL作为参数,对其进行解析,然后创建该s3.GetObjectInput对象。
另外,我不知道您能否做到这一点,取决于您的用例,但是如果您将URL存储在某个地方,这就是为什么要使用它们,则可以考虑以较长的到期时间存储预签名的url,然后,当您要获取对象时,可以使用该URL。