前言
AWS CloudFront 是一项快速可靠的全球内容分发服务,用于将内容分发到全球各地的用户。如果您正在使用 AWS CloudFront 来分发敏感的内容,完全可控的访问权限就很重要了。对于这种情况,AWS 允许你通过分配若干个私有的原点(Origin),从而充分掌控访问权限。
本文将介绍一个 npm 包——cloudfront-signer,这个包提供了一种方便的方法来为 CloudFront 创建一个 URL 签名,这样访问 CloudFront 的客户端就可以获取特定文件或者目录的授权 URL。
目录
- 安装 cloudfront-signer
- 使用 cloudfront-signer 签名 CloudFront URL
- CloudFront 配置
- 总结
1. 安装 cloudfront-signer
首先,安装 cloudfront-signer 包。可以在命令行中使用以下命令进行安装:
npm install cloudfront-signer --save
2. 使用 cloudfront-signer 签名 CloudFront URL
在下面的代码示例中,我们将使用 cloudfront-signer 包来创建一个签名 URL。要创建签名 URL,需要以下几个参数:
- 私有内容 URL: 这是您要分发的私有内容的 URL
- key pair ID: AWS 签名的 key ID
- 私有私钥文件路径:下载后的 AWS 签名的私有密钥设置的路径
- local date and time: 本地的日期和时间
-- -------------------- ---- ------- ----- ---------------- - ----------------------------- ----- ---- - ---------------- -- -------- --- ----- ----------- - --------------------------------------------- -- --- --- --- -- ----- --------- - --------------------- -- --- ------------ ----- -------------- - -------------------- -------------- -- ------- ----- ------- - ---------------------- - -- - -- - ----- - ------ -- - ----- -- ---- --- ----- --------- - ------------------------------------------ - ---------- ---------- --------------- --------------- -------- ------- --- -----------------------
这段代码将帮助我们生成一个预签名的 URL,它将包括以下内容:
https://<your>.cloudfront.net/private/file?Expires=1438543597&Signature=QsQJ10HAWrCeEelmz7kA8phaeinc2RoJPv3fN-JrwEzebPdroLfy7VwzxF58bbp7rTObTFOuMMmgyUFU6kBuo~LlZU6iZp6YwDoeNDys0Q0yK1FFyU5teKvXloWFMdFY22x5HWfhuYzKFvMW8XRhDyJuNV5fBlpfsiRvX8kkp4E4tH4-jtQYHQv3q-BfSntSfzItcHmFvRjLIhJ4NGaZkdA4TFYVkYkJJ3kxl-beN49yGKVdS9Cj5~G0W0dYSRLQP1SpERk1Piw8MZdkbF5yBpJoNMivum6djM9XUWj6MnC6UODQE6Dw8oeFpdJQk-qH1en-vfQsBNq3sJgHfg__&Key-Pair-Id=<your_key_pair_id>
3. CloudFront 配置
以下是简要的 AWS CloudFront 配置步骤:
创建 Amazon S3 bucket
创建 Amazon S3 bucket 以存储您要分发的内容。
将你的内容分配给云原点。
登录到您的 AWS 控制台,打开 CloudFront,配置您的新分配的私有云资源。
创建一个 CloudFront key pair
创建新的 CloudFront key pair,并在 CloudFront 中输入 key pair ID。您应该将私有密钥下载到一个安全的位置。
配置 CloudFront 用户权限
通过 AWS Identity and Access Management(IAM),配置 CloudFront 用户权限。IAM 是一项基于 Web 的服务,您可以使用它来安全地控制对 Amazon S3 存储桶和 CloudFront 区域的访问。
在 IAM 中,为 CloudFront 用户创建以下策略:
-- -------------------- ---- ------- - ---------- ------------- ------------ - - --------- -------- --------- - ------------------ ------------------- --------------------- --------------------- ------------------ --------------------- ------------------------ -- ----------- --------------------------------------------------------------------------------------- - - -
根据您的情况更改:ACCOUNT_ID
和 YOUR_DISTRIBUTION_ID
部分。
4. 总结
本文中,我们介绍了如何使用 npm 包 cloudfront-signer 来创建有过期时间的签名 URL。这种方法非常适合用于 AWS CloudFront 分发私人资产的场景。需要注意的是,此方法默认只能给到符合访问条件的用户一次 URL 访问机会。此外,还介绍了 AWS CloudFront 配置的必要步骤,提供了一个完整且详细的方案。相信读者可以在实际应用场景中,凭借此方法轻松轻轻松实现 AWS CloudFront 的私有文件访问与授权。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60055fbe81e8991b448dd086