我正在尝试使用以下代码在JavaScript代码中创建S3预签名URL:
var params = {Bucket: 'myBucketName', Key: 'key', Expires: 60};
var url = s3.getSignedUrl('getObject', params);
console.log('The URL is ', url);
执行后,我的控制台日志显示:
URL为https://myBucketName.s3.amazonaws.com/myAudioFile.mp3 ...
但是我认为它应该显示:
URL为https://s3.amazonaws.com/myBucketName/myAudioFile.mp3 ...
为什么将S3存储桶名称放在URL中的“ s3.amazonaws.com”之前?
过去,使用此方法可以正常工作。 AWS SDK是否已更改?
答案 0 :(得分:3)
这是AWS s3存储桶的signedURL格式。当AWS为getObject
或putObject
形成签名用户时,此格式保持不变。
AWS签名URL的格式为:
https://
bucketName
。这是Bucket
.s3.amazonaws.com/
fileName
。这是Key
由于我们无法更改AWS提供的编码或URL或函数的格式,因此,更重要的是 URL是否符合您的要求?此URL能够下载s3文件并在60秒后过期吗?
请遵循以下docs over AWS signed URL。
答案 1 :(得分:-2)
他没有问任何关于 CloudFront 的问题。他询问如何像大多数人一样直接从 S3 存储桶访问文件。 CloudFront 不需要使用 S3,它们是不同的服务,但它们可以结合使用。