Yoh*_*han 7 amazon-s3 amazon-web-services amazon-cloudfront pre-signed-url aws-sdk
以下是我正在做的事情。我正在使用自定义域为我的非公开 s3 存储桶资源生成预签名 URL。
https://files.customdomain.com/file123?AWSAccessKeyId=XXX&Expires=1541220685&Signature=XXXX
另外,为了添加证书,我为具有以下原始设置的存储桶创建了一个 Cloudfront 发行版
源域名:bucket-name.s3.amazonaws.com 源 ID:s3.bucket-name 限制存储桶访问:否
但我无法访问我的资源。抛出访问被拒绝错误。任何帮助,将不胜感激。
小智 8
有两种情况:
在这种情况下,您应该使用 CloudFront 访问您的存储桶。就像上面提到的,URL 在这个答案中看起来像这样:
https://cloudfront-url/file123?AWSAccessKeyId=XXX&Expires=1541220685&Signature=XXXX
在这种情况下,您的存储桶名称类似于 files.customdomain.com,您可以为此存储桶生成预签名的 url:
https://files.customdomain.com/file123?AWSAccessKeyId=XXX&Expires=1541220685&Signature=XXXX
在您的 DNS 中,您将有CNAME files.customdomain.com指向files.customdomain.com.s3.[bucket-region].amazonaws.com。
注意
当我通过 aws-cli 生成预签名 URL 时:
aws s3 presign s3://files.customdomain.com/file123 --endpoint-url https://files.customdomain.com
Run Code Online (Sandbox Code Playgroud)
我在路径中获得具有重复存储桶名称的 URL: https: //files.customdomain.com/files.customdomain.com/file123 ?AWSAccessKeyId=XXX&Expires=1541220685&Signature=XXXX
代替:
https://files.customdomain.com/file123?AWSAccessKeyId=XXX&Expires=1541220685&Signature=XXXX
我不知道它是否通过 SDK 具有相同的行为。
我找到了这个问题的解决方案。需要从 s3 存储桶为 cloudfront url 端点生成签名 url。因此,
它需要是
https://cloudfront-url/file123?AWSAccessKeyId=XXX&Expires=1541220685&Signature=XXXX,而不是
https://files.customdomain.com/file123?AWSAccessKeyId=XXX&Expires=1541220685&Signature=XXXX
DNS 记录必须将自定义域解析为 cloudfront url。
| 归档时间: |
|
| 查看次数: |
15784 次 |
| 最近记录: |