共用方式為


在 Azure Logic Apps 中,從工作流程連線至 Azure Blob 儲存體

適用於:Azure Logic Apps (使用量 + 標準)

本指南說明如何使用 Azure Blob 記憶體連接器,從 Azure Logic Apps 中的工作流程存取 Azure Blob 記憶體帳戶和容器。 此連接器提供您的工作流程可用於 Blob 作業的觸發程序和動作。 您接著可以建立自動化工作流程以在儲存體容器或其他系統中的事件觸發時執行,並執行動作來處理儲存體容器中的資料。 例如,您可以存取和管理儲存為 Azure 儲存體帳戶中 Blob 的檔案。

您可以從多租用戶取用邏輯應用程式或單一租用戶標準邏輯應用程式中的工作流程連線到 Azure Blob 儲存體。 雖然取用工作流程只提供受控連接器版本,但標準工作流程同時提供內建連接器和受控連接器版本。

連接器技術參考

根據邏輯應用程式類型和主機環境,Azure Blob 儲存體連接器會有不同的版本。

邏輯應用程式 環境 連接器版本
使用量 多租用戶 Azure Logic Apps 受控連接器,其會出現在 [共用] 下的連接器資源庫中。 如需詳細資訊,請參閱下列文件:

- Azure Blob 儲存體受控連接器參考
- Azure Logic Apps 的受控連接器
標準 單一租用戶 Azure Logic Apps 和 App Service 環境 v3 (僅限 Windows 方案) 受控連接器 (Azure 裝載),其會出現在 [ 共用] 下的連接器資源庫中,而內建連接器則是 服務提供者型連接器,並出現在 [內 ] 下的連接器資源庫中。 內建版本在以下方面有相異之處:

- 內建版本會直接連線至您只需要連接字串的 Azure 儲存體帳戶。

- 內建版本可以直接存取 Azure 虛擬網路。

如需詳細資訊,請參閱下列文件:

- Azure Blob 儲存體受控連接器參考
- Azure Blob 內建連接器參考
- Azure Logic Apps 中的內建連接器

限制

  • Azure Blob 儲存體受控連接器動作可讀取或寫入 50 MB 或更小的檔案。 若要處理大於 50 MB 但最多 1,024 MB 的檔案,Azure Blob 記憶體動作支援 訊息區塊化。 名為取得 Blob 內容的 Blob 儲存體動作會隱含地使用區塊化。

  • 雖然 Azure Blob 儲存體的受控內建觸發程序不支援區塊化,但內建觸發程序可處理 50 MB 以上的檔案。 不過,當受控觸發程序要求檔案內容時,觸發程序只會選取 50 MB 或更小的檔案。 若要取得大於 50 MB 的檔案,請依照下列模式:

    1. 使用可傳回檔案屬性的觸發程序,例如 [新增或修改 Blob 時 (僅限屬性)]

    2. 遵循 Azure Blob 儲存體受控連接器動作名稱為取得 Blob 內容的觸發程序,其會讀取完整檔案,並隱含地使用區塊化。

  • Azure Blob 儲存體觸發程序限制

    • 受控連接器觸發程序在輪詢虛擬資料夾中限制為 30,000 個 Blob。
    • 內建連接器觸發程序在整個輪詢容器中限制為 10,000 個 Blob。

    如果超過限制,新的 Blob 可能無法觸發工作流程,因此會略過觸發程序。

先決條件

新增 Blob 觸發程序

在消費工作流程中,只有 Azure Blob 儲存受控連接器可供使用。 在標準工作流程中,可以使用 Azure Blob 記憶體受控連接器和內建連接器。 雖然每個連接器版本只提供一個 Azure Blob Storage 觸發程式,但觸發程式名稱會依據工作流程類型(消費型或標準)而有所不同:

邏輯應用程式 連接器版本 觸發程序名稱 描述
使用量 僅限受控連接器 新增或修改 Blob 時 (僅限屬性) 觸發程序是在儲存體容器的根資料夾中新增或更新 Blob 屬性時所引發。 當您設定受控觸發程序時,受控版本會忽略儲存體容器中的現有 Blob。
標準 內建連接器


受控連接器
內建:新增或更新 Blob 時

受控:新增或修改 Blob 時 (僅限屬性)
內建:觸發程式會在記憶體容器中新增或更新 Blob 時引發,並針對記憶體容器中的任何巢狀資料夾引發,而不只是根資料夾。 當您設定內建觸發程序時,內建版本會處理儲存體容器中的所有現有 Blob。

受控:觸發程序是在儲存體容器的根資料夾中新增或更新 Blob 屬性時所引發。 當您設定受控觸發程序時,受控版本會忽略儲存體容器中的現有 Blob。

下列步驟會使用 Azure 入口網站進行,但若搭配適當的 Azure Logic Apps 延伸模組,則也可以使用下列工具來建立邏輯應用程式工作流程:

  1. Azure 入口網站中,開啟您的使用量邏輯應用程式資源。

  2. 在 [資源側邊欄] 的 [ 開發工具] 下,選取設計工具以開啟空白工作流程。

  3. 遵循將觸發程序新增至工作流程的一般步驟,為您的案例新增 Azure Blob 儲存體受控觸發程序。

    此範例會繼續執行名為 [新增或修改 Blob 時 (僅限屬性)] 的 Azure Blob 儲存體觸發程序。

  4. 如果出現提示,則請針對儲存體帳戶連線提供下列資訊。 當您完成時,選取 [建立]

    屬性 必要 描述
    連線名稱 是的 您的連線名稱。
    驗證類型 是的 儲存體帳戶的驗證類型。 如需詳細資訊,請檢閱 支援驗證的觸發程式和動作的驗證類型

    例如,此聯機會使用 存取密鑰 驗證,並提供記憶體帳戶的存取金鑰值,以及下列屬性值:

    屬性 必要 描述
    Azure 儲存體帳戶名稱或 Blob 端點 是,但僅適用於存取金鑰驗證 < 儲存帳戶名稱> Blob 容器所在的 Azure 記憶體帳戶名稱。

    注意:若要尋找儲存體帳戶名稱,請在 Azure 入口網站中開啟您的儲存體帳戶資源。 在資源功能表中,於 [安全性 + 網路] 下,選取 [存取金鑰]。 在 [儲存體帳戶名稱] 下,複製並儲存名稱。
    Azure 儲存體帳戶存取金鑰 是,但僅適用於存取金鑰驗證 < 儲存帳戶存取金鑰> Azure 儲存體帳戶的存取金鑰。

    注意:若要尋找存取金鑰,請在 Azure 入口網站中開啟您的儲存體帳戶資源。 在資源功能表中,於 [安全性 + 網路] 下,選取 [存取金鑰] > [金鑰 1] > [顯示]。 複製並儲存主索引鍵值。

    顯示取用工作流程、Azure Blob 記憶體觸發程式和範例連線資訊的螢幕快照。

  5. 出現觸發程序資訊方塊之後,請提供必要的資訊。

    針對 [容器] 屬性值,選取資料夾圖示以瀏覽 Blob 容器。 或者,使用 /<container-name> 語法來手動輸入路徑,例如:

    此螢幕擷取畫面顯示具有 Azure Blob 儲存體觸發程序的使用量工作流程,以及範例觸發程序資訊。

  6. 如果觸發程式存在任何其他參數,請開啟 [ 進階參數 ] 列表,然後選取您想要的參數。

    如需詳細資訊,請檢閱 Azure Blob 儲存體受控連接器觸發程序屬性

  7. 新增您工作流程所需的任何其他動作。

  8. 完成後,請儲存您的工作流程。 在設計工具的工具列上,選取 [儲存]

新增 Blob 動作

在消費工作流程中,只有 Azure Blob 儲存受控連接器可供使用。 在標準工作流程中,可以使用 Azure Blob 記憶體受控連接器和內建連接器。 每個版本都提供多種以不同名稱命名的操作,這取決於您是使用使用量型工作流程還是標準型工作流程。 例如,受控和內建連接器版本都有自己的動作來取得檔案中繼資料以及取得檔案內容。

  • 受控連接器動作可在取用或標準工作流程中使用。

  • 內建連接器動作僅適用於標準工作流程。

下列步驟會使用 Azure 入口網站進行,但若搭配適當的 Azure Logic Apps 延伸模組,則也可以使用下列工具來建置邏輯應用程式工作流程:

  1. Azure 入口網站中,開啟您的使用量邏輯應用程式資源。

  2. 在 [資源提要] 功能表的 [ 開發工具] 底下,選取設計工具以開啟工作流程。

    這些步驟假設您的工作流程已經有觸發程序。

    此範例使用週期性觸發程序

  3. 遵循將動作新增至工作流程的一般步驟,為您的案例新增 Azure Blob 儲存體受控動作。

    此範例會繼續使用名為 [取得 Blob 內容] 的動作。

  4. 如果出現提示,請針對您的連線提供下列資訊。 當您完成時,選取 [建立]

    屬性 必要 描述
    連線名稱 是的 您連線的名稱
    驗證類型 是的 儲存體帳戶的驗證類型。 如需詳細資訊,請檢閱 支援驗證的觸發程式和動作的驗證類型

    例如,此聯機會使用 存取密鑰 驗證,並提供記憶體帳戶的存取金鑰值,以及下列屬性值:

    屬性 必要 描述
    Azure 儲存體帳戶名稱或 Blob 端點 是,但僅適用於存取金鑰驗證 < 儲存帳戶名稱> Blob 容器所在 Azure 儲存體帳戶的名稱。

    注意:若要尋找儲存體帳戶名稱,請在 Azure 入口網站中開啟您的儲存體帳戶資源。 在資源功能表中,於 [安全性 + 網路] 下,選取 [存取金鑰]。 在 [儲存體帳戶名稱] 下,複製並儲存名稱。
    Azure 儲存體帳戶存取金鑰 是,但僅適用於存取金鑰驗證 < 儲存帳戶存取金鑰> Azure 儲存體帳戶的存取金鑰。

    注意:若要尋找存取金鑰,請在 Azure 入口網站中開啟您的儲存體帳戶資源。 在資源功能表中,於 [安全性 + 網路] 下,選取 [存取金鑰] > [金鑰 1] > [顯示]。 複製並儲存主索引鍵值。

    螢幕快照顯示消耗工作流程、Azure Blob 動作和範例連線資訊。

  5. 在動作資訊方塊中,提供必要資訊。

    例如,在 [取得 Blob 內容] 動作中,提供您的儲存體帳戶名稱。 針對 [Blob] 屬性值,選取資料夾圖示以瀏覽儲存體容器或資料夾。 或者,手動輸入路徑。

    任務 Blob 路徑語法
    從根資料夾中,取得特定 Blob 的內容。 /<container-name>/<blob-name>
    從子資料夾中,取得特定 Blob 的內容。 /<container-name>/<subfolder>/<blob-name>

    下列範例顯示可從根資料夾中取得 Blob 內容的動作設定:

    此螢幕擷取畫面顯示已為根資料夾設定 Blob 動作的使用量工作流程。

    下列範例顯示可從子資料夾中取得 Blob 內容的動作設定:

    此螢幕擷取畫面顯示已為子資料夾設定 Blob 動作的使用量工作流程。

  6. 新增您工作流程所需的任何其他動作。

  7. 完成後,請儲存您的工作流程。 在設計工具的工具列上,選取 [儲存]

存取防火牆後方的儲存體帳戶

您可以使用防火牆和防火牆規則限制存取,藉此為 Azure 儲存體帳戶增添一層網路安全保障。 不過,這個設定會對 Azure 和其他需要儲存體帳戶存取權的 Microsoft 服務建立挑戰。 資料中心內的本機通訊會抽象化內部 IP 位址,因此只允許透過 IP 位址的流量可能不足以成功允許跨防火牆進行通訊。 根據您使用的 Azure Blob 儲存體連接器,可以使用下列選項:

請存取其他區域中的儲存體帳戶

如果您未使用受控身分識別驗證,則邏輯應用程式資源和儲存體帳戶同時存在於相同區域中時,邏輯應用程式工作流程無法直接存取防火牆後方的儲存體帳戶。 因應措施是將您的邏輯應用程式資源放在與儲存體帳戶不同的區域中。 然後,提供區域中受控連接器的輸出 IP 位址的存取權。

附註

此解決方案不適用於 Azure 資料表儲存體連接器和 Azure 佇列儲存體連接器。 若要改為存取資料表儲存體或佇列儲存體,請使用內建 HTTP 觸發程序和動作

若要將輸出 IP 位址新增至儲存體帳戶防火牆,請遵循下列步驟:

  1. 請記下邏輯應用程式資源區域的受控連接器輸出 IP 位址

  2. Azure 入口網站中,尋找並開啟您的儲存體帳戶資源。

  3. 在 [資源提要] 功能表的 [安全性 + 網络] 底下,選取 [網络]。

    1. [公用網络存取] 底下, 選取 [從選取的虛擬網络和IP 位址啟用]。

    2. 在 [防火牆] 下,新增需要存取權的 IP 位址或範圍。 如果您需要從您的電腦存取儲存體帳戶,則請選取 [新增您的用戶端 IP 位址]

      Azure 入口網站中 Blob 記憶體帳戶網路頁面的螢幕快照,其中顯示將 IP 位址和範圍新增至允許清單的防火牆設定。

    3. 完成時,選取 [儲存]

透過受信任的虛擬網路來存取儲存體帳戶

  • 如果您的邏輯應用程式與記憶體帳戶存在於 相同的 區域中:

    您可以建立私人端點,以將您的儲存體帳戶放入 Azure 虛擬網路,然後將該虛擬網路新增至受信任的虛擬網路清單。 若要讓邏輯應用程式透過受信任的虛擬網路來存取儲存體帳戶,您需要建立標準邏輯應用程式,而此環境可以連線至虛擬網路中的資源。

  • 如果您的邏輯應用程式與記憶體帳戶存在於 不同的 區域中:

    在您的儲存體帳戶上建立私人端點以供存取。

透過虛擬網路整合來存取儲存體帳戶

  • 如果您的邏輯應用程式與記憶體帳戶存在於 相同的 區域中:

    您可以建立私人端點,以將儲存體帳戶放入 Azure 虛擬網路,然後將該虛擬網路新增至受信任的虛擬網路清單。 若要讓您的邏輯應用程式存取儲存體帳戶,您必須使用虛擬網路整合來設定輸出流量,以啟用連線至虛擬網路中的資源。 您接著可以將虛擬網路新增至儲存體帳戶的受信任虛擬網路清單。

  • 如果您的邏輯應用程式與記憶體帳戶存在於 不同的 區域中:

    在您的儲存體帳戶上建立私人端點以供存取。

存取具有系統受控身分識別之相同區域中的 Blob 儲存體

若要在任何區域中連線至 Azure Blob 儲存體,您可以使用受控身分識別進行驗證。 您可以建立例外狀況,以提供 Azure 信任的服務,例如受控識別、透過防火牆存取記憶體帳戶。

附註

此解決方案不適用於標準邏輯應用程式。 即使您將系統指派的受控識別用於標準邏輯應用程式,Azure Blob 儲存體受控連接器也無法連線至相同區域中的儲存體帳戶。

若要在邏輯應用程式中使用受控身分識別來存取 Blob 儲存體,請遵循下列步驟:

  1. 設定記憶體帳戶的存取權

  2. 為您的邏輯應用程式建立角色指派

  3. 啟用邏輯應用程式中受控識別的支援

附註

此解決方案具有下列限制:

若要驗證您的儲存體帳戶連線,您必須設定系統指派的受控身分識別。 使用者指派的受控身分識別將不會運作。

設定儲存體帳戶存取權

若要設定例外狀況和受控身分識別支援,請先設定適當的儲存體帳戶存取權:

  1. Azure 入口網站中,尋找並開啟您的儲存體帳戶資源。

  2. 在儲存體帳戶導覽功能表上,於 [安全性 + 網路] 下,選取 [網路]

    1. [公用網络存取] 底下, 選取 [從選取的虛擬網络和IP 位址啟用]。

    2. 如果您需要從您的電腦存取儲存體帳戶,則請在 [防火牆] 下選取 [新增您的用戶端 IP 位址]

    3. 在 [例外狀況] 底下,選取 [允許受信任服務清單上的 Azure 服務以存取此儲存體帳戶]

      此螢幕擷取畫面顯示具有允許設定的 Azure 入口網站和 Blob 儲存體帳戶網路窗格。

    4. 完成時,選取 [儲存]

附註

如果您在嘗試從工作流程連線至儲存體帳戶時收到「403 禁止」錯誤,則存在多個可能的原因。 繼續進行其他步驟之前,請嘗試下列解決方法。 首先,停用設定 允許受信任服務清單上的 Azure 服務來存取此儲存體帳戶 並儲存您的變更。 然後,重新啟用設定,然後再次儲存您的變更。

建立邏輯應用程式的角色指派

接下來,在您的邏輯應用程式資源上啟用受控身分識別支援

下列步驟適用於多租用戶環境中的使用量邏輯應用程式以及單一租用戶環境中的標準邏輯應用程式。

  1. Azure 入口網站中,開啟您的邏輯應用程式資源。

  2. 在邏輯應用程式資源導覽功能表上,於 [設定] 下,選取 [身分識別]

  3. 在 [系統指派] 窗格上,將 [狀態] 設定為 [開啟],如果尚未啟用,則請選取 [儲存],然後確認您的變更。 在 [權限] 下,選取 [Azure 角色指派]

    顯示 Azure 入口網站和邏輯應用程式資源功能表的螢幕快照,其中包含 [身分識別] 設定窗格和 [Azure 角色指派許可權] 按鈕。

  4. 在 [Azure 角色指派] 窗格上,選取 [新增角色指派]

    顯示邏輯應用程式角色指派窗格的螢幕快照,其中包含選取的訂用帳戶和按鈕,以新增角色指派。

  5. 在 [新增角色指派] 窗格上,使用下列值來設定新的角色指派:

    屬性 描述
    範圍 < 資源範圍> 您想要套用角色指派的資源集。 在此範例中,選取 [儲存體]
    訂用帳戶 < Azure 訂用帳戶> 您儲存體帳戶的 Azure 訂用帳戶。
    資源 < 儲存帳戶名稱> 您想要從邏輯應用程式工作流程存取的儲存體帳戶名稱。
    角色 < 要指派的角色> 您的案例針對工作流程所需的角色,才能使用資源。 此範例需要 [儲存體 Blob 資料參與者],以允許讀取、寫入和刪除 Blob 容器和日期的存取權。 如需權限詳細資料,請將滑鼠移至下拉式功能表中角色旁邊的資訊圖示上方。

    角色指派組態窗格的螢幕快照,其中顯示範圍、訂用帳戶、資源和角色的設定。

  6. 完成時,請選取 [儲存] 以完成建立角色指派。

啟用邏輯應用程式上的受控身分識別支援

接下來,完成下列步驟:

  1. 如果您有空白工作流程,則請新增 Azure Blob 儲存體連接器觸發程序。 否則,請新增 Azure Blob 儲存體連接器動作。 請確定您為觸發程序或動作建立新的連線,而不是使用現有連線。

  2. 請確定您已將驗證類型設定為使用受控身分識別

  3. 設定觸發程序或動作之後,您可以儲存工作流程,並測試觸發程序或動作。

針對儲存體帳戶存取問題進行疑難排解

  • 錯誤: 此要求未獲授權執行這項作業。

    下列錯誤是邏輯應用程式和儲存體帳戶存在於相同區域時所發生的常見回報問題。 不過,選項可用來解決此限制,如防火牆後方的存取儲存體帳戶一節所述。

    {
       "status": 403,
       "message": "This request is not authorized to perform this operation.\\r\\nclientRequestId: a3da2269-7120-44b4-9fe5-ede7a9b0fbb8",
       "error": {
          "message": "This request is not authorized to perform this operation."
       },
       "source": "azureblob-ase.azconn-ase.p.azurewebsites.net"
    }
    

Application Insights 錯誤

  • 404409 錯誤:

    如果您的標準工作流程使用將 Blob 新增至儲存體容器的 Azure Blob 內建動作,則您可能會在 Application Insights 中針對失敗的要求收到 404409 錯誤。 預期會發生這些錯誤,因為連接器會先檢查 Blob 檔案是否存在,再新增 Blob。 檔案不存在時,會產生錯誤。 儘管發生這些錯誤,內建動作仍然會成功地新增 Blob。