django-storges 支持 CloudFront 签名 URL

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

我想用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

最佳答案

好的,从 this commit 开始,django-storages 开发版本现在支持签名 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 key 与您用于其他 AWS 服务的 key 不同。您必须使用您的根 AWS 账户(而不是 IAM 用户)生成它。见 documentation

关于django-storges 支持 CloudFront 签名 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57956626/

相关文章:

python - 资源,客户端和 session 之间的boto3差异?

python-2.7 - 获取使用云形成模板创建的EC2实例信息

javascript - 如何打开包含用 javascript 编写的图形的弹出窗口?

jquery - 如何将 JQGrid 与 Django/Python 集成

amazon-web-services - 检查 Redshift 中用户的 "CONNECTION LIMIT"

java - 使用适用于 Java 的 AWS 开发工具包版本 2 从 URL 下载文件并将其上传到 AWS S3,而无需将其保存到内存中

python - 我无法将 MySQL 版本 8 连接到 Django 2.2 项目

django - Django REST Framework-将额外的参数传递给 Action

amazon-web-services - AWS CloudFormation 模板 - 必需值

python - pip install boto3 出错