如何使用 CloudFront 提供託管在 Amazon S3 上的靜態網站?

3 分的閱讀內容
0

我想在 Amazon Simple Storage Service (Amazon S3) 儲存貯體上託管靜態網站。然後,我想透過 Amazon CloudFront 分佈提供我的網站。

簡短描述

若要提供託管在 Amazon S3 上的靜態網站,請使用下列任一組態部署 CloudFront 分佈:

  • 將 REST API 端點作為來源使用,然後透過原始存取控制 (OAC) 或原始存取身分 (OAI) 限制存取 **注意:**最佳實務是使用原始存取控制 (OAC) 限制存取。原始存取身分 (OAI) 是此流程的舊版方法。
  • 將網站端點作為來源使用,然後允許匿名 (公開) 存取
  • 將網站端點作為來源使用,然後透過參照頁標頭限制存取
  • 使用 AWS CloudFormation 將靜態網站端點部署為來源,然後自訂指向 CloudFront 的網域

如需兩種端點類型的詳細資訊,請參閱網站端點和 REST API 端點之間的主要差異

解決方法

若要透過您要作為來源使用的 S3 端點類型設定 CloudFront 分佈,請完成下列步驟:

將 REST API 端點作為來源使用,然後透過 OAC 或 OAI (舊版) 限制存取

1.    使用 Amazon S3 主控台建立儲存貯體,然後上傳您的網站檔案

**注意:**您不需要為此組態開啟託管在儲存貯體上的靜態網站。此組態使用儲存貯體的 REST API 端點,而不是靜態網站託管功能中的網站端點。

2.    建立 CloudFront Web 分佈。除了您的使用案例分佈設定之外,請完成下列任一章節中的步驟,以限制 Amazon S3 來源的存取。最佳實務是使用 OAC,因為 OAI 是舊版設定。

OAC

建立分佈時,請在來源網域欄位中輸入您的 Amazon S3 儲存貯體名稱。

原始存取下,選取原始存取控制設定 (建議)

原始存取控制下拉式清單中,選取 OAC 名稱並選擇建立控制設定

在對話方塊中,命名您的控制設定**。**最佳實務是保留預設設定簽署請求 (建議)。然後,選擇建立

CloudFront 為您提供政策聲明,讓您在建立分佈後授予 OAC 存取 Amazon S3 儲存貯體的權限。選取複製政策,然後將該政策貼到您的 S3 儲存貯體政策組態。

OAI

建立分佈時,請在來源網域欄位中輸入您的 Amazon S3 儲存貯體名稱。

原始存取下,選取舊版存取身分

原始存取身分下拉式清單中,選取原始存取身分名稱。然後,選擇建立新的 OAI

在對話方塊中,命名新的原始存取身分,然後選擇建立

儲存貯體政策下,選取是,更新儲存貯體政策

3.    當您建立分佈時,最佳實務是為您的網站使用 SSL (HTTPS)。若要使用自訂網域和 HTTPS,請選取自訂 SSL 憑證。選擇請求憑證以請求新的憑證。如果不使用自訂網域,您仍然可以將 HTTPS 用於分佈的 cloudfront.net 網域名稱。
**重要:**如果您為分佈輸入備用網域名稱 (CNAME),則 CNAME 必須符合您選取的 SSL 憑證。若要對您的 SSL 憑證問題進行疑難排解,請參閱如何對我在 CloudFront 分佈上使用自訂 SSL 憑證的問題進行疑難排解?

4.    更新您網域的 DNS 記錄,將網站的網域指向 CloudFront。在 CloudFront 主控台中找到您分佈的網域名稱。網域名稱看起來類似下列範例:d1234abcd.cloudfront.net

5.    等待您的 DNS 變更傳播生效,以及先前的 DNS 項目到期。
**注意:**先前 DNS 值的到期時間長度取決於在您託管區域上設定的 TTL 值。這也取決於您的本機解析程式是否使用那些 TTL 值。

將網站端點作為來源使用,然後允許匿名 (公開) 存取

此組態允許公開讀取您網站的儲存貯體。如需詳細資訊,請參閱設定網站存取的權限
**注意:**當您使用 Amazon S3 靜態網站端點時,只能透過 HTTP 使用 CloudFront 和 Amazon S3 之間的連線。若要將 HTTPS 用於 CloudFront 和 Amazon S3 之間的連線,請為您的來源設定 S3 REST API 端點。

  1. 使用 Amazon S3 主控台建立儲存貯體,然後開啟託管在儲存貯體上的靜態網站
  2. 靜態網站託管對話方塊中,複製儲存貯體的端點,但不複製開頭的 http://。格式類似 DOC-EXAMPLE-BUCKET.s3-website-region.amazonaws.com。稍後的步驟需要此格式中的端點。
  3. 新增儲存貯體政策,允許公開讀取存取至您建立的儲存貯體。
    **注意:**對於此組態,您必須關閉 S3 儲存貯體的封鎖公開存取設定。如果您的使用案例要求開啟封鎖公開存取設定,請將 REST API 端點用作來源。然後,透過原始存取控制 (OAC) 或原始存取身分 (OAI) 限制存取。
  4. 建立 CloudFront Web 分佈。除了您的使用案例分佈設定之外,請完成下列步驟:
    來源網域中,輸入您在上一步驟中複製的端點。
    **注意:**請勿從下拉式清單中選取儲存貯體。下拉式清單僅包括您並未用於此組態的 S3 儲存貯體 REST API 端點。
  5. 當您建立分佈時,最佳實務是為您的網站使用 SSL (HTTPS)。若要使用自訂網域和 HTTPS,請選取自訂 SSL 憑證。選擇請求憑證以請求新的憑證。如果您不使用自訂網域,還是可以將 HTTPS 用於分佈的 cloudfront.net 網域名稱。
    **重要:**如果您為分佈輸入備用網域名稱 (CNAME),則 CNAME 必須符合您選取的 SSL 憑證。若要對您的 SSL 憑證問題進行疑難排解,請參閱如何對我在 CloudFront 分佈上使用自訂 SSL 憑證的問題進行疑難排解?
  6. 更新您網域的 DNS 記錄,將網站的網域指向 CloudFront。在 CloudFront 主控台中找到您分佈的網域名稱。網域名稱格式類似下列範例:d1234abcd.cloudfront.net
  7. 等待您的 DNS 變更傳播生效,以及先前的 DNS 項目到期。
    **注意:**先前 DNS 值的到期時間長度取決於在您託管區域上設定的 TTL 值。這也取決於您的本機解析程式是否使用那些 TTL 值。

將網站端點作為來源使用,然後透過參照頁標頭限制存取

**重要:**檢閱此設定允許的存取是否符合您使用案例的要求。

此組態會設定分佈上的參照頁標頭以限制存取。然後,它會使用儲存貯體政策僅允許存取具有自訂參照頁標頭的請求。

**注意:**當您使用 Amazon S3 靜態網站端點時,只能透過 HTTP 使用 CloudFront 和 Amazon S3 之間的連線。若要將 HTTPS 用於 CloudFront 和 Amazon S3 之間的連線,請為您的來源設定 S3 REST API 端點。

  1. 使用 Amazon S3 主控台建立儲存貯體,然後開啟託管在儲存貯體上的靜態網站
  2. 靜態網站託管對話方塊中,複製儲存貯體的端點,但不複製開頭的 http://。格式類似 DOC-EXAMPLE-BUCKET.s3-website-region.amazonaws.com。稍後的步驟需要此格式中的端點。
  3. 建立 CloudFront Web 分佈。除了您的使用案例分佈設定之外,請完成下列步驟:
    來源網域中,輸入您在上一步驟中複製的端點。
    注意:請勿從下拉式清單中選取儲存貯體。下拉式清單僅包括此組態不使用的 S3 儲存貯體 REST API 端點。
    新增自訂標頭
    下,選擇新增標頭
    標頭名稱中,輸入參照頁
    中,輸入您想轉送至來源 (S3 儲存貯體) 的自訂標頭值。若要限制來源的存取,請輸入隨機值或只有您知道的機密值。
  4. 當您建立分佈時,最佳實務是為您的網站使用 SSL (HTTPS)。若要使用自訂網域和 HTTPS,請選取自訂 SSL 憑證。選擇請求憑證以請求新的憑證。如果不使用自訂網域,您仍然可以將 HTTPS 用於分佈的 cloudfront.net 網域名稱。
    **重要:**如果您為分佈輸入備用網域名稱 (CNAME),則 CNAME 必須符合您選取的 SSL 憑證。若要對您的 SSL 憑證問題進行疑難排解,請參閱如何對我在 CloudFront 分佈上使用自訂 SSL 憑證的問題進行疑難排解?
  5. Amazon S3 主控台開啟您網站的儲存貯體。然後,新增儲存貯體政策在請求包括您在步驟 3 中指定之自訂參照頁標頭的情況下允許 s3:GetObject。對於此組態,您必須關閉 S3 儲存貯體的封鎖公開存取設定。Amazon S3 會考慮授予參照頁限制之匿名存取為公開的儲存貯體政策。如果您的使用案例要求開啟封鎖公開存取設定,請將 REST API 端點作為來源使用。然後,透過原始存取控制 (OAC) 或原始存取身分 (OAI) 限制存取。
    **注意:**若要封鎖任何不包括自訂參照頁標頭之請求的存取,請使用儲存貯體政策中的明確拒絕陳述。
  6. 更新您網域的 DNS 記錄,將網站的網域指向 CloudFront。在 CloudFront 主控台中找到您分佈的網域名稱。網域名稱類似下列範例:d1234abcd.cloudfront.net
  7. 等待您的 DNS 變更傳播生效,以及先前的 DNS 項目到期。
    **注意:**先前 DNS 值的到期時間長度取決於在您託管區域上設定的 TTL 值。這也取決於您的本機解析程式是否使用那些 TTL 值。

使用 CloudFormation 將靜態網站端點部署為來源,然後自訂指向 CloudFront 的網域

此解決方案為您的網站使用下列組態:

  • 使用 CloudFormation 部署您的網站
  • 在 Amazon S3 上託管您的網站
  • 使用 CloudFront 分佈您的網站
  • 從 AWS Certificate Manager (ACM) 使用 SSL/TLS 憑證
  • 使用 CloudFront 回應標頭政策將安全標頭新增至每個伺服器回應

如需如何部署此解決方案的指示,請參閱 GitHub 網站上的 Amazon CloudFront 安全靜態網站

相關資訊

開始使用安全靜態網站

電子郵件驗證

DNS 驗證

使用備用網域名稱和 HTTPS

AWS 官方
AWS 官方已更新 7 個月前