【问题标题】:django-storges support for CloudFront signed URLdjango-storges 对 CloudFront 签名 URL 的支持
【发布时间】:2020-01-17 06:40:00
【问题描述】:

我想使用 CloudFront's signed URLs 而不是普通的未签名 URL。

django-storages 提供AWS_S3_CUSTOM_DOMAIN 选项,但随后它会从 CloudFront 的子域生成未签名的 URL。默认情况下,AWS_QUERYSTRING_AUTHTrue,它会为 S3 生成签名 URL。为 CloudFront 生成签名 URL 的任何方式。

这是我希望打开的设置,但由于未签名的 URL,我将其禁用。
Settings I am looking to turn on for My distribution

【问题讨论】:

  • 您找到解决方案了吗?
  • 直到现在。你可以试试赏金。
  • 我想通了,你能检查我的答案吗?

标签: django amazon-web-services boto3 amazon-cloudfront python-django-storages


【解决方案1】:

好的,现在 django-storages 开发版本自 this commit 起支持签名 URL(参见 thread for more info

该版本尚未在 pip 上发布,因此您可以将其添加到您的需求中,如下所示:

-e git+git://github.com/jschneier/django-storages.git@b116e3a235323144cda6d3cc5a5cb27baf076ee2#egg=django-storages-dev

那么你必须更新你的选项:

AWS_S3_CUSTOM_DOMAIN = "Your cloudfront domain" # something like xxxxx.cloudfront.net
AWS_CLOUDFRONT_KEY_ID = "YOUR_CLOUDFRONT_KEY_ID"
with open(os.path.join(BASE_DIR, "cert.pem")) as aws_cert:
    AWS_CLOUDFRONT_KEY = aws_cert.read().encode('ascii')

就是这样。默认过期超时是24小时,不知道怎么改。

请注意,CloudFront 密钥与您用于其他 AWS 服务的密钥不同。您必须使用您的根 AWS 账户(不是 IAM 用户)生成它。见documentation

【讨论】:

    猜你喜欢
    • 2012-07-14
    • 2013-07-01
    • 2015-10-10
    • 2021-03-22
    • 2016-12-11
    • 2017-09-28
    • 1970-01-01
    • 2018-12-25
    • 2011-02-04
    相关资源
    最近更新 更多