共用方式為


從 URL 複製 Blob

Copy Blob From URL 作業會同步將 Blob 複製到記憶體帳戶內的目的地,來源 Blob 大小上限為 256 mebibytes (MiB) 。 此 API 可從 2018-03-28 版開始提供。

作業的來源 Copy Blob From URL 可以是任何 Azure 記憶體帳戶中任何已認可的區塊 Blob,該帳戶是公用或已獲授權且具有共用存取簽章。

要求

您可以依照下列方式建構 Copy Blob From URL 要求。 我們建議使用 HTTPS。 將 myaccount 取代為您的記憶體帳戶名稱、 mycontainer 取代為您的容器名稱,並將 myblob 取代為目的地 Blob 的名稱。

PUT 方法要求 URI HTTP 版本
https://myaccount.blob.core.windows.net/mycontainer/myblob HTTP/1.1

模擬記憶體服務的 URI

當您對仿真的記憶體服務提出要求時,請將模擬器主機名和 Azure Blob 儲存體 埠指定為 127.0.0.1:10000,後面接著仿真的記憶體帳戶名稱:

PUT 方法要求 URI HTTP 版本
http://127.0.0.1:10000/devstoreaccount1/mycontainer/myblob HTTP/1.1

如需詳細資訊,請參閱使用 Azure 模擬器進行本機 Azure 儲存體開發

URI 參數

您可以在要求 URI 上指定下列其他參數:

參數 描述
timeout 選擇性。 timeout 參數以秒為單位。 如需詳細資訊,請參閱 設定 Blob 記憶體作業的逾時

要求標頭

下表描述必要和選擇性的要求標頭:

要求標頭 描述
Authorization 必要。 指定授權配置、帳戶名稱和簽章。 如需詳細資訊,請參閱授權對 Azure 儲存體提出要求
Datex-ms-date 必要。 指定要求的「國際標準時間」(UTC)。 如需詳細資訊,請參閱授權對 Azure 儲存體提出要求
x-ms-version 所有授權要求都需要。 如需詳細資訊,請參閱 Azure 儲存體服務的版本
x-ms-meta-name:value 選擇性。 指定與 Blob 相關聯的使用者定義名稱/值組。 如果未指定名稱/值組,作業會將元數據從來源 Blob 或檔案複製到目的地 Blob。 如果指定了一或多個名稱/值組,則會使用指定的元數據建立目的地 Blob,而且元數據不會從來源 Blob 或檔案複製。

從 2009-09-19 版開始,元數據名稱必須遵守 C# 識別碼的命名規則。 如需詳細資訊,請參閱 命名和參考容器、Blob 和元數據
x-ms-encryption-scope 選擇性。 指出加密要求內容的加密範圍。 2020-12-06 版和更新版本支援此標頭。
x-ms-tags 選擇性。 在 Blob 上設定查詢字串編碼標記。 標籤不會從複製來源複製。 如需詳細資訊,請參閱。 2019-12-12 版和更新版本支援。
x-ms-copy-source-tag-option 選擇性。 可能的值為 REPLACECOPY (區分大小寫) 。 預設值是 REPLACE

如果 COPY 已指定,來源 Blob 中的標記將會複製到目的地 Blob。 來源 Blob 必須是私用的,而且要求必須具有來源 Blob 上取得 Blob 標記 作業的許可權,以及在目的地 Blob 上設定 Blob 標記 作業的許可權。 這會產生對來源帳戶上作業的額外呼叫 Get Blob Tags

REPLACE 會設定標頭在目的地 Blob 上指定的標記 x-ms-tags 。 如果 x-ms-tags 指定 REPLACE 且沒有標記,則目的地 Blob 上不會設定任何標記。 指定 COPYx-ms-tags 會導致 409 (衝突) 錯誤。

2021-04-10 版和更新版本支援。
x-ms-source-if-modified-since 選擇性。 DateTime 值。 只有在指定日期/時間修改來源 Blob 時,才能指定此條件式標頭以複製 Blob。 如果來源 Blob 尚未修改,Blob 記憶體會傳回狀態代碼 412 (前置條件失敗) 。 如果來源是 Azure 檔案,則無法指定此標頭。
x-ms-source-if-unmodified-since 選擇性。 DateTime 值。 只有在非指定日期/時間修改來源 Blob 時,才能指定此條件式標頭以複製 Blob。 如果已修改來源 Blob,Blob 記憶體會傳回狀態代碼 412 (前置條件失敗) 。 如果來源是 Azure 檔案,則無法指定此標頭。
x-ms-source-if-match 選擇性。 ETag 值。 只有在來源 Blob 的值符合指定的值時 ETag ,才指定這個條件式標頭來複製來源 Blob。 如果值不符合,Blob 記憶體會傳回狀態代碼 412 (前置條件失敗) 。 如果來源是 Azure 檔案,則無法指定此標頭。
x-ms-source-if-none-match 選擇性。 ETag 值。 指定此條件式標頭,只有當 Blob ETag 的值不符合指定的值時,才複製 Blob。 如果值相同,Blob 記憶體會傳回狀態代碼 412 (前置條件失敗) 。 如果來源是 Azure 檔案,則無法指定此標頭。
If-Modified-Since 選擇性。 DateTime 值。 只有在指定日期/時間修改目的地 Blob 時,才能指定此條件式標頭以複製 Blob。 如果目的地 Blob 尚未修改,Blob 記憶體會傳回狀態代碼 412 (前置條件失敗) 。
If-Unmodified-Since 選擇性。 DateTime 值。 只有在非指定日期/時間修改目的地 Blob 時,才能指定此條件式標頭以複製 Blob。 如果目的地 Blob 已修改,Blob 記憶體會傳回狀態代碼 412 (前置條件失敗) 。
If-Match 選擇性。 ETag 值。 ETag指定這個條件式標頭的值,只有在指定的ETag值符合ETag現有目的地 Blob 的值時,才複製 Blob。 如果值不符合,Blob 記憶體會傳回狀態代碼 412 (前置條件失敗) 。
If-None-Match 選擇性。 ETag值,或通配符 (*) 。

ETag指定這個條件式標頭的值,只有在指定的ETag值不符合ETag目的地 Blob 的值時,才複製 Blob。

指定通配符 (*) ,只有在目的地 Blob 不存在時才執行作業。

如果不符合指定的條件,Blob 記憶體會傳回狀態代碼 412 (前置條件失敗) 。
x-ms-copy-source:name 必要。 指定來源 Blob 的 URL。 此值可以是最多 2 個 kibibytes 的 URL, (KiB) 長度指定 Blob。 此值應該像出現在要求 URI 中一樣以 URL 編碼。 來源 Blob 必須是公用,或透過共用存取簽章獲得授權。 如果來源 Blob 是公用的,則不需要授權才能執行作業。 如果來源 Blob 的大小大於 256 MiB,要求會失敗,並出現 409 (衝突) 錯誤。 來源 Blob 的 Blob 類型必須是區塊 Blob。 以下是來源物件 URL 的一些範例:

- https://myaccount.blob.core.windows.net/mycontainer/myblob
- https://myaccount.blob.core.windows.net/mycontainer/myblob?snapshot=<DateTime>
- https://myaccount.blob.core.windows.net/mycontainer/myblob?versionid=<DateTime>
x-ms-copy-source-authorization: <scheme> <signature> 選擇性。 指定複製來源的授權配置和簽章。 如需詳細資訊,請參閱授權對 Azure 儲存體提出要求
只有配置持有人支援 Microsoft Entra。
2020-10-02 版和更新版本支援此標頭。
x-ms-requires-sync:true 必要。 表示這是同步 Copy Blob From URL 作業,而不是異步 Copy Blob 操作。
x-ms-source-content-md5 選擇性。 指定 URI 中 Blob 內容的 MD5 哈希。 此哈希是用來在從 URI 傳輸數據期間驗證 Blob 的完整性。 指定此標頭時,記憶體服務會比較從複製來源到達的內容哈希,以及這個標頭值。

MD5 哈希不會與 Blob 一起儲存。

如果兩個哈希不相符,作業會失敗,錯誤碼為 400 (不正確的要求) 。
x-ms-lease-id:<ID> 如果目的地 Blob 為作用中租用,則為必要項目。 為此標頭指定的租用識別碼必須符合目的地 Blob 的租用識別碼。 如果要求不包含租用標識碼或無效,作業會失敗,狀態代碼為 412 (前置條件失敗) 。

如果指定此標頭,且目的地 Blob 目前沒有作用中的租用,作業就會失敗,狀態代碼為 412 (前置條件失敗) 。

在 2012-02-12 版和更新版本中,此值必須指定租用 Blob 的作用中無限租用。 有限持續時間租用標識碼失敗,狀態代碼為412 (前置條件失敗) 。
x-ms-client-request-id 選擇性。 提供客戶端產生的不透明值,其中包含設定記錄時記錄在記錄中的 1-KiB 字元限制。 強烈建議您使用此標頭,將用戶端活動與伺服器接收的要求相互關聯。
x-ms-access-tier 選擇性。 指定要在目標 Blob 上設定的階層。 此標頭僅適用於進階帳戶上的分頁 Blob,只有 2017-04-17 版和更新版本。 如需支援層的完整清單,請參閱 VM 的高效能進階記憶體和受控磁碟。 區塊 Blob 版本 2018-11-09 和更新版本支援此標頭。 Blob 記憶體或 常規用途 v2 帳戶支援區塊 Blob 階層處理。 有效值為 HotCoolColdArchive注意:Cold 2021-12-02 版和更新版本支持階層。 如需區塊 Blob 階層處理的詳細資訊,請參閱 經常性存取、非經常性存取和封存儲存層

要求本文

無。

回應

回應包括 HTTP 狀態碼和一組回應標頭。

狀態碼

成功的作業會傳回狀態碼「202 (已接受)」。

如需狀態代碼的相關信息,請參閱 狀態和錯誤碼

回應標頭

這項作業的回應包括下列標頭。 回應也可能包含額外的標準 HTTP 標頭。 所有標準標頭都符合 HTTP/1.1 通訊協議規格

回應標頭 描述
ETag 如果復本完成,則包含 ETag 目的地 Blob 的值。 如果複本未完成,則包含 ETag 複製開始時所建立之空白 Blob 的值。

此值 ETag 以引弧括住。
Last-Modified 傳回復制作業至目的地 Blob 完成的日期/時間。
x-ms-request-id 可唯一識別提出的要求。 您可以使用它對要求進行疑難解答。 如需詳細資訊,請參閱 針對 API 作業進行疑難解答
x-ms-version 指出用來執行要求的 Blob 記憶體版本。
Date UTC 日期/時間值,指出服務傳送響應的時間。
x-ms-copy-id: <id> 此複製作業的字串識別碼。
x-ms-copy-status: <success> 表示複製作業的狀態。 的值 success 表示作業已順利完成。
x-ms-client-request-id 可用來針對要求和對應的回應進行疑難解答。 如果此標頭存在於要求中,且此值最多為1,024個可見的ASCII字元,則此標頭的值等於標頭的值 x-ms-client-request-idx-ms-client-request-id如果要求中沒有標頭,此標頭將不會出現在回應中。
x-ms-request-server-encrypted: true/false 如果要求的內容是透過指定的演算法成功加密,則設定為 true 。 否則,這個值便為 false
x-ms-encryption-scope 如果要求使用加密範圍,則傳回 ,因此客戶端可以確保透過加密範圍成功加密要求的內容。

回應本文

無。

範例回應

以下是要求複製 Blob 的範例回應:

Response Status:  
HTTP/1.1 202 Accepted  
  
Response Headers:   
Last-Modified: <date>   
ETag: "0x8CEB669D794AFE2"  
Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0  
x-ms-request-id: cc6b209a-b593-4be1-a38a-dde7c106f402  
x-ms-version: 2018-03-28  
x-ms-copy-id: 1f812371-a41d-49e6-b123-f4b542e851c5  
x-ms-copy-status: success  
Date: <date>  
  

授權

在 Azure 記憶體中呼叫任何數據存取作業時,需要授權。 下表描述如何授權作業的 Copy Blob From URL 目的地和來源物件:

物件型別 Microsoft Entra ID 授權 共用存取簽章 (SAS) 授權 共用金鑰授權 (或共用金鑰 Lite)
目的地區塊 Blob Yes Yes Yes
相同記憶體帳戶中的來源區塊 Blob Yes Yes Yes
另一個記憶體帳戶中的來源區塊 Blob No No

如果要求在要求標頭中 x-ms-tags 指定標記,呼叫端必須符合 設定 Blob 標記 作業的授權需求。

您可以授權 Copy Blob From URL 作業,如下所述。 請注意,不同記憶體帳戶中的來源 Blob 必須透過具有 讀取 (r) 許可權的 SAS 令牌個別授權。 如需來源 Blob 授權的詳細資訊,請參閱要求標頭 x-ms-copy-source的詳細數據。

重要

Microsoft 建議搭配受控識別使用 Microsoft Entra ID 來授權對 Azure 記憶體的要求。 相較於共用密鑰授權,Microsoft Entra ID 提供更高的安全性和易於使用性。

Azure 記憶體支援使用 Microsoft Entra ID 來授權 Blob 數據的要求。 使用 Microsoft Entra ID,您可以使用 Azure 角色型存取控制 (Azure RBAC) 授與安全性主體的許可權。 安全性主體可能是使用者、群組、應用程式服務主體或 Azure 受控識別。 安全性主體是由 Microsoft Entra ID 驗證,以傳回 OAuth 2.0 令牌。 權杖接著可以用來授權對 Blob 服務的要求。

若要深入瞭解使用 Microsoft Entra ID 授權,請參閱使用 Microsoft Entra ID 授權 Blob 的存取權。

權限

以下是 Microsoft Entra 使用者、群組、受控識別或服務主體呼叫Copy Blob From URL作業所需的 RBAC 動作,以及包含此動作的最低特殊許可權內建 Azure RBAC 角色:

目的地 Blob

相同記憶體帳戶中的來源 Blob

若要深入瞭解如何使用 Azure RBAC 指派角色,請參閱 指派 Azure 角色以存取 Blob 數據

備註

作業的來源和目的地 Blob Copy Blob From URL 必須是區塊 Blob。

在 2020-10-02 版和更新版本中,複製作業的來源支援 Microsoft Entra 授權。

作業 Copy Blob From URL 一律會複製整個來源 Blob。 不支援複製特定範圍的位元組或一組區塊。

您可以將來源 Blob 複製到具有不同名稱的目的地 Blob。 目的地 Blob 可以是現有的區塊 Blob,也可以是複製作業所建立的新 Blob。

當您從區塊 Blob 複製時,會複製所有認可的區塊及其區塊標識碼。 未認可的區塊不會複製。 在複製作業結束時,目的地 Blob 會擁有與來源相同的認可區塊計數。

ETag 作業開始時和作業完成時 Copy Blob From URL ,區塊 Blob 的值會變更。

複製 Blob 屬性和元數據

複製區塊 Blob 時,下列系統屬性會複製到具有相同值的目的地 Blob:

  • Content-Type

  • Content-Encoding

  • Content-Language

  • Content-Length

  • Cache-Control

  • Content-MD5

  • Content-Disposition

來源 Blob 的認可區塊清單也會複製到目的地 Blob。 系統不會複製任何未認可的區塊。

目的地 Blob 的大小一律與來源 Blob 相同,因此目的地 Blob 的標頭值 Content-Length 符合來源 Blob 的該標頭值。

x-ms-tags如果標頭提供目的地 Blob 的標籤,則必須進行查詢字串編碼。 卷標索引鍵和值必須符合 設定 Blob 標記 作業中指定的命名和長度需求。

x-ms-tags標頭最多可以包含 2 KB 的標籤。 如果您需要更多標籤,請使用 Set Blob Tags 作業。

x-ms-tags如果標頭未提供標籤,則不會從來源 Blob 複製標籤。

複製租用的 Blob

作業 Copy Blob From URL 只會從來源 Blob 讀取,因此來源 Blob 的租用狀態並不重要。

計費

定價要求可能源自使用 Blob 記憶體 API 的用戶端,無論是直接透過 Blob 記憶體 REST API,還是來自 Azure 記憶體用戶端連結庫。 這些要求會累算每個交易的費用。 交易類型會影響帳戶的收費方式。 例如,讀取交易會累算到與寫入交易不同的計費類別。 下表顯示根據記憶體帳戶類型的要求計費類別 Copy Blob From URL

作業 儲存體帳戶類型 計費類別
從 URL 複製 Blob (目的地帳戶1) 進階區塊 Blob
標準一般用途 v2
標準一般用途 v1
寫入作業
從 URL 複製 Blob (來源帳戶2) 進階區塊 Blob
標準一般用途 v2
標準一般用途 v1
讀取作業

1目的地帳戶會支付一筆交易來起始寫入的費用。
2來源帳戶會對來源物件的每個讀取要求產生一筆交易。

若要瞭解指定計費類別的定價,請參閱 Azure Blob 儲存體 定價

此外,如果來源和目的地帳戶位於不同區域 (,例如美國北部和美國南部) ,則您用來傳輸要求的頻寬會以輸出方式向來源記憶體帳戶收費。 相同地區的帳戶之間其輸出為免費。

當您將來源 Blob 複製到相同帳戶內具有不同名稱的目的地 Blob 時,您會針對新的 Blob 使用其他記憶體資源。 然後,複製作業會針對這些額外資源的記憶體帳戶容量使用量產生費用。

另請參閱

授權對 Azure 記憶體的要求
狀態和錯誤碼
Blob 記憶體錯誤碼
瞭解快照集如何累算費用