本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用簽署的網址

已簽章的 URL 包含附加資訊,例如到期日期和時間,以便您更有效地控制對內容的存取。此附加資訊顯示在政策聲明中,該政策聲明基於標準政策或自訂政策。標準和自訂政策之間的差異將在接下來的兩節中說明。

注意

您可使用標準政策建立一些簽章的 URL,並使用自訂政策為相同的分佈建立一些簽章的 URL。

決定針對已簽署的 URL 使用固定或自訂原則

當您建立已簽章的 URL 時,您將編寫一個 JSON 格式的政策聲明來指定對已簽章的 URL 的限制,例如 URL 的有效時間。您可以使用標準政策或自訂政策。以下是標準和自訂政策的比較:

描述 標準政策 自訂政策

您可以重複使用多個檔案的政策聲明。要重複使用政策聲明,您必須在 Resource 物件中使用萬用字元。如需詳細資訊,請參閱 您在使用自訂政策的已簽署 URL 政策陳述式中指定的值)。

您可以指定使用者可以開始存取您的內容的日期和時間。

是 (選用)

您可以指定使用者無法再存取您的內容的日期和時間。

您可以指定可以存取您的內容的使用者的 IP 地址或 IP 地址範圍。

是 (選用)

該已簽章的 URL 包含該政策的 base64 編碼版本,這會導致較長的 URL。

如需使用標準政策建立已簽署的 URL 的詳細資訊,請參閱 使用固定原則建立已簽署的 URL

如需使用自訂政策建立已簽署的 URL 的詳細資訊,請參閱 使用自訂原則建立已簽署的 URL

已簽署 URL 的工作方式

以下概述如何針對已簽署的 URL 設定 CloudFront 和 Amazon S3,以及使用者使用已簽署的 URL 要求檔案時如何 CloudFront 回應。

  1. 在您的 CloudFront 散發中,指定一或多個受信任的金鑰群組,其中包含 CloudFront 可用來驗證 URL 簽章的公開金鑰。您可以使用對應的私有金鑰來簽署 URL。

    如需詳細資訊,請參閱 指定可以建立已簽署網址和已簽署 Cookie 的簽署者

  2. 開發應用程式以判斷使用者是否應該有權存取您的內容,並為您所要限制存取的應用程式的檔案或某些部分建立的簽署 URL。如需詳細資訊,請參閱下列主題:

  3. 使用者請求檔案用於所要請求的簽章 URL。

  4. 您的應用程式會驗證使用者是否有權存取檔案:他們已經登入,他們已經支付存取內容的費用,或者他們已經滿足其他一些存取要求。

  5. 您的應用程式會建立和傳回已簽章的 URL 給使用者。

  6. 已簽章的 URL 允許使用者下載或串流內容。

    這個步驟是自動的;使用者通常不需要執行任何額外操作來存取內容。例如,如果使用者在 Web 瀏覽器l中存取您的內容時,則應用程式會將已簽章的 URL 傳回到瀏覽器。瀏覽器會立即使用已簽署的 URL 存取 CloudFront Edge 快取中的檔案,而無需使用者進行任何操作。

  7. CloudFront 使用公開金鑰來驗證簽章,並確認 URL 沒有遭到竄改。如果簽章無效,請求會遭到拒絕。

    如果簽名有效,請查 CloudFront 看 URL 中的策略語句(如果您使用固定策略,則構建一個策略)以確認請求仍然有效。例如,如果您指定 URL 的開始和結束日期和時間,請 CloudFront 確認使用者在您要允許存取的期間內嘗試存取您的內容。

    如果要求符合原則陳述式中的需求, CloudFront 會執行標準作業:判斷檔案是否已在 Edge 快取中,視需要將要求轉送至原始位置,然後將檔案傳回給使用者。

注意

如果不帶正負號的 URL 包含查詢字串參數,請務必將這些參數包含在您已簽署 URL 部分中。如果在簽署已簽署 URL 之後,將查詢字串新增此 URL,則 URL 會傳回 HTTP 403 狀態。

決定已簽署網址的有效時間

您可以分配私有內容以僅在短時間內使用已簽章的有效 URL (可能只有區區幾分鐘)。在短時間內有效的簽署網址適合用於on-the-fly 將內容發佈給使用者特定用途,例如依需求將電影租借或音樂下載內容發佈給客戶。如果已簽章的 URL 僅在短時間內有效,您可能會希望使用您開發的應用程式自動產生他們。當使用者開始下載檔案或開始播放媒體檔案時,請 CloudFront 比較 URL 中的到期時間與目前時間,以判斷 URL 是否仍然有效。

您還可以使用有效期較長的 (可能會持續數年) 已簽章的 URL 分配私有內容。有效期較長的已簽章的 URL 對於向已知使用者分佈私有內容非常有用,例如向投資者分佈業務計畫或向員工分佈培訓教材。您可以開發應用程式,為您產生這些長期簽署的 URL。

在簽署的 URL 中 CloudFront 檢查到期日期和時間時

CloudFront 在發出 HTTP 要求時,檢查已簽署 URL 中的到期日期和時間。如果用戶端在到期前一刻才開始下載大型檔案,則即使在下載期間過期了,下載也應該要完成。如果 TCP 連線中斷並且用戶端在到期時間過後嘗試重新啟動下載,則下載將失敗。

如果用戶端使用範圍 GET 以取得較小型的檔案,則到期時間過後發生的任何 GET 請求都將失敗。如需範圍 GET 的詳細資訊,請參閱 如何 CloudFront 處理對象的部分請求(範圍 GET)

範例程式碼和第三方工具

如需建立已簽署 URL 的雜湊和已簽署部分的範例程式碼,請參閱下列主題: