使用已簽署的 URLs - Amazon CloudFront

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

使用已簽署的 URLs

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

注意

您可以使用URLs固定政策建立部分簽署,並使用相同分發的URLs自訂政策建立部分簽署。

決定使用已簽章的固定或自訂政策 URLs

當您建立已簽署的 時URL,您會以指定已簽署 限制的JSON格式撰寫政策陳述式URL,例如, URL 的有效期限。您可以使用標準政策或自訂政策。以下是標準和自訂政策的比較:

描述 標準政策 自訂政策

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

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

是 (選用)

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

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

是 (選用)

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

如需URLs使用固定政策建立簽署的相關資訊,請參閱 URL 使用固定政策建立已簽章

如需URLs使用自訂政策建立簽署的相關資訊,請參閱 URL 使用自訂政策建立已簽署的

已簽署URLs的運作方式

以下是您如何設定 CloudFront 和 Amazon S3 簽署的概觀,URLs以及使用者使用已簽署 URL 請求檔案時的 CloudFront 回應方式。

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

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

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

  3. 使用者請求您要為其簽署 的檔案URLs。

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

  5. 您的應用程式會建立已簽署 並將其傳回URL給使用者。

  6. 簽章URL可讓使用者下載或串流內容。

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

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

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

    如果請求符合政策陳述式中的要求, CloudFront 會執行標準操作: 會判斷檔案是否已在邊緣快取中,並視需要將請求轉送至原始伺服器,並將檔案傳回給使用者。

注意

如果未簽署的 URL包含查詢字串參數,請務必將其包含在URL您簽署的 部分中。如果您在簽署URL後將查詢字串新增至已簽署的 , 會URL傳回 HTTP 403 狀態。

決定簽署URLs的有效期

您可以使用僅短時間內有效的已簽署 URL 來分發私有內容,可能只需幾分鐘的時間。簽署URLs的有效期很短,對於將內容分發on-the-fly 給使用者用於特定目的很有幫助,例如隨需分發電影租賃或音樂下載給客戶。如果您簽署URLs的 僅在短時間內有效,則可能想要使用您開發的應用程式自動產生它們。當使用者開始下載檔案或開始播放媒體檔案時, 會將 中的過期時間URL與目前時間 CloudFront 進行比較,以判斷 URL 是否仍然有效。

您也可以使用有效時間較長URL的已簽署 分發私有內容,可能長達 年。簽署URLs的有效期較長,有助於將私有內容分發給已知使用者,例如將商業計劃分發給投資人或分發訓練材料給員工。您可以開發應用程式來產生這些URLs為您簽署的長期應用程式。

當 CloudFront 檢查已簽署 中的過期日期和時間時 URL

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

如果用戶端使用 Range GETs取得較小的檔案,過期時間過後發生的任何GET請求都會失敗。如需範圍 的詳細資訊GETs,請參閱 如何 CloudFront 處理物件 (範圍GETs) 的部分要求

範例程式碼和第三方工具

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