创建 CloudFront 分配,仅接受无服务器签名 URL

Posted

技术标签:

【中文标题】创建 CloudFront 分配,仅接受无服务器签名 URL【英文标题】:Create CloudFront distribution that accepts only signed URL’s with serverless 【发布时间】:2019-10-03 20:03:39 【问题描述】:

我想创建一个只能使用签名 URL 访问的 Web CloudFront 分配。

在手动创建分发时,默认缓存行为设置下有一个限制查看者访问的选项。

我想使用无服务器框架创建分发,但我找不到 Restrict Viewer Access 属性的 CloudFormation 属性。

【问题讨论】:

【参考方案1】:

这个文档完全不清楚。如果签名密钥在您部署 CloudFront 分配的同一账户中,您只需要:

    TrustedSigners:
      - self

注意,在 2020 年末的某个时候,CloudFront 提供了一种创建签名密钥的方法,该方法不涉及使用 AWS 账户根用户。有关更多信息,请参阅这些文档。 https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-trusted-signers.html#choosing-key-groups-or-AWS-accounts

【讨论】:

【参考方案2】:

这件事有点晚了。添加到上述答案。

通过 CloudFromation 有两种方法。

    TrustedKeyGroups - CloudFront 可用于验证签名 URL 或签名 cookie 的密钥组列表。

    TrustedSigners - AWS 账户 ID 的列表,其公钥 CloudFront 可用于验证签名 URL 或签名 cookie。

当缓存行为包含 TrustedSigners 或 TrustedKeyGroups 属性时,CloudFront 需要签名 URL 或签名 cookie 用于匹配缓存行为的所有请求。 CloudFront 已通过这些设置假定了这一点,因此您无需需要指定任何其他属性(限制 UI 上的查看器访问)。

根据 AWS,他们建议使用 TrustedKeyGroups 而不是 TrustedSigners。

AWS 网址:https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-cachebehavior.html#cfn-cloudfront-distribution-cachebehavior-trustedsigners

【讨论】:

以上是关于创建 CloudFront 分配,仅接受无服务器签名 URL的主要内容,如果未能解决你的问题,请参考以下文章

创建 CloudFront 分配时出现神秘的 CloudFormation 失败

CloudFormation 使用日志存储桶创建 CloudFront 分配

将 CloudFront 分配与 Route 53 域相关联时出现问题

在 cloudformation 创建 cloudfront 后创建失效的最佳方法是啥?

同一 CloudFront 分配中的多个 S3 存储桶

Amazon S3 和 Cloudfront 上的 Node.js 服务器