從 Azure Logic Apps 中的工作流程連線到 FTP 伺服器
適用於:Azure Logic Apps (使用量 + 標準)
本文說明如何使用 FTP 連接器,從 Azure Logic Apps 中的工作流程存取您的檔案傳輸通訊協定 (FTP) 伺服器。 接著,您可以建立自動化工作流程,以在 FTP 伺服器或其他系統中的事件觸發時執行,並執行動作來管理 FTP 伺服器上的檔案。
例如,您的工作流程可以從 FTP 觸發程序開始,監視和回應 FTP 伺服器上的事件。 觸發程序會讓輸出可供工作流程中的後續動作使用。 您的工作流程可以使用下列特定工作,執行透過 FTP 伺服器帳戶建立、傳送、接收和管理檔案的 FTP 動作:
- 監視檔案何時新增或變更。
- 建立、複製、刪除、列出及更新檔案。
- 取得檔案中繼資料和內容。
- 管理資料夾。
若您不熟悉 Azure Logic Apps,請檢閱下列開始使用文件:
連接器技術參考
根據邏輯應用程式類型和主機環境,FTP 連接器會有不同的版本。
邏輯應用程式類型 (計劃) | Environment | 連接器版本 |
---|---|---|
耗用 | 多租用戶 Azure Logic Apps | 受控連接器,其顯示在連接器資源庫的 [執行階段]>[共用] 下。 如需詳細資訊,請參閱下列文件: - FTP 受控連接器參考 - Azure Logic Apps 的受控連接器 |
標準 | 單一租用戶 Azure Logic Apps 和 App Service 環境 v3 (僅限 Windows 方案) | 顯示在連接器資源庫的 [執行階段] > [共用] 下的受控連接器 (Azure 裝載),以及顯示在連接器資源庫的 [執行階段] > [應用程式內] 下並以服務提供者為基礎的內建連接器。 內建連接器可以使用連接字串直接存取 Azure 虛擬網路。 如需詳細資訊,請參閱下列文件: - FTP 受控連接器參考 - FTP 內建連接器作業一節位於本文稍後 - Azure Logic Apps 的受控連接器 - Azure Logic Apps 中的內建連接器 |
限制
容量和輸送量
適用於標準工作流程的內建連接器:
根據預設,FTP 動作可以讀取或寫入 200 MB 或更小的檔案。 目前,FTP 內建連接器不支援區塊化。
適用於使用量和標準工作流程的受控或 Azure 裝載連接器
根據預設,FTP 動作可以讀取或寫入 50 MB 或更小的檔案。 為了處理大於 50 MB 的檔案,FTP 動作支援訊息區塊化。 取得檔案內容動作會隱含地使用區塊化。
保留「上次修改」時間戳記時,FTP 受控或 Azure 裝載連接器的觸發程序可能會遇到遺失、不完整或延遲的結果。 另一方面,標準邏輯應用程式工作流程中的 FTP 內建連接器觸發程序沒有這項限制。 如需詳細資訊,請參閱 FTP 連接器的限制一節。
FTP 受控或 Azure 裝載連接器可以根據邏輯應用程式資源所在的 Azure 區域中的連線容量,對 FTP 伺服器建立數量有限的連線。 如果此限制在取用邏輯應用程式工作流程中造成問題,請考慮建立標準邏輯應用程式工作流程,並改用 FTP 內建連接器。
必要條件
Azure 帳戶和訂用帳戶。 如果您沒有 Azure 訂用帳戶,請先註冊免費的 Azure 帳戶。
您要在其中存取 FTP 帳戶的邏輯應用程式工作流程。 若要使用 FTP 觸發程序啟動工作流程,必須從空白工作流程開始。 若要使用 FTP 動作,請使用其他觸發程序來啟動工作流程,例如週期觸發程序。
如需適用於 FTP 受控連接器和內建連接器的更多需求,請檢閱 FTP 受控連接器參考 - 需求。
已知問題
根據預設,傳回陣列的觸發程序已啟用 [分割開啟] 設定。 啟用此設定後,觸發程序會在內部建立個別的工作流程執行個體來處理每個陣列項目,以自動對陣列進行解除批次。 所有工作流程執行個體都會平行執行,以便同時處理陣列項目。
不過,啟用 [分割] 設定時,受控連接器觸發程序會以清單形式傳回所有陣列項目的輸出。 任何參考這些輸出的後續動作,都必須先將這些輸出當做清單來處理。 若要個別處理每個陣列項目,您可以新增額外的動作。 例如,若要逐一查看這些陣列項目,您可以使用 For each 迴圈。 針對只會傳回中繼資料或屬性的觸發程序,請先使用取得陣列項目中繼資料的動作,然後使用動作來取得項目內容。
您必須只針對受控連接器觸發程序套用此方法,而不是內建連接器觸發程序,這些觸發程序會在啟用 [分割] 設定時一次傳回一個陣列項目的輸出。
例如,假設您有名為 [新增或修改檔案時 (僅限屬性)] 的受控連接器觸發程序,會以陣列形式傳回新的或更新檔案的中繼資料或屬性。 若要個別取得每個檔案的中繼資料,您可以使用逐一查看陣列的 For each 迴圈。 在此迴圈中,以指定的順序使用下列受控連接器動作:
取得檔案中繼資料以取得每個檔案的中繼資料。
取得檔案內容動作以取得每個檔案的內容。
新增 FTP 觸發程序
使用量邏輯應用程式工作流程只能使用 FTP 受控連接器。 不過,標準邏輯應用程式工作流程可以使用 FTP 受控連接器和 FTP 內建連接器。 在標準邏輯應用程式工作流程中,受控連接器也會標示為 Azure 連接器。
FTP 受控連接器和內建連接器各自只有一個可用的觸發程序:
受控連接器觸發程序:名為 [新增或修改檔案時 (僅限屬性)] 的 FTP 觸發程序,在 FTP 伺服器上的資料夾中新增或變更一或多個檔案時,會執行使用量或標準邏輯應用程式工作流程。 此觸發程序只會取得檔案屬性或中繼資料,而不是檔案內容。 不過,若要取得檔案內容,您的工作流程可以遵循此觸發程序與其他 FTP 動作。
如需此觸發程序的詳細資訊,請檢閱新增或修改檔案時 (僅限屬性)。
內建連接器觸發程序:名為 [新增或更新檔案時] 的 FTP 觸發程序,在 FTP 伺服器上的資料夾中新增或變更一或多個檔案時,會執行標準邏輯應用程式工作流程。 此觸發程序只會取得檔案屬性或中繼資料,而不是檔案內容。 不過,若要取得內容,您的工作流程可以遵循此觸發程序與其他 FTP 動作。 如需此觸發程序的詳細資訊,請檢閱新增或更新檔案時。
下列步驟會使用 Azure 入口網站進行,但若搭配適當的 Azure Logic Apps 擴充功能,則也可以使用下列工具來建立及編輯邏輯應用程式工作流程:
取用邏輯應用程式工作流程: Visual Studio Code
標準邏輯應用程式工作流程:Visual Studio Code
在 Azure 入口網站上,於設計工具中開啟您的空白邏輯應用程式工作流程。
在設計工具中的搜尋方塊下,選取 [標準]。 在搜尋方塊中,輸入 ftp。
從觸發程序清單中,選取名為 [新增或修改檔案時 (僅限屬性)] 的觸發程序。
提供您的連線資訊。 完成時,選取建立。
注意
根據預設,此連接器會以文字格式傳送檔案。 若要以二進位格式傳送檔案,例如,使用編碼的位置和時間,請選取二進位傳輸選項。
在觸發程序資訊方塊出現之後,尋找您要監視新檔案或編輯檔案的資料夾。
在 [資料夾] 方塊中,選取資料夾圖示以檢視資料夾目錄。
選取向右箭頭 (>)。 瀏覽至您想要的資料夾,然後選取資料夾。
所選取的資料夾會出現在 [資料夾] 方塊中。
完成後,請儲存您的工作流程。
當您儲存工作流程時,此步驟會自動將您的更新發佈至已部署的邏輯應用程式,在 Azure 中為即時。 只有觸發程序時,您的工作流程只會根據指定的排程檢查 FTP 伺服器。 您必須新增動作以回應觸發程序,並且使用觸發程序輸出執行某些作業。
新增 FTP 動作
使用量邏輯應用程式工作流程只能使用 FTP 受控連接器。 不過,標準邏輯應用程式工作流程可以使用 FTP 受控連接器和 FTP 內建連接器。 每個版本都有多個動作。 例如,受控和內建連接器版本都有自己的動作來取得檔案中繼資料及取得檔案內容。
受控連接器動作:這些動作會在使用量或標準邏輯應用程式工作流程中執行。
內建連接器動作:這些動作只會在標準邏輯應用程式工作流程中執行。
下列步驟使用 Azure 入口網站,但搭配適當的 Azure Logic Apps 擴充功能,您也可以使用下列工具來建置邏輯應用程式工作流程:
- 取用工作流程: Visual Studio Code
- 標準工作流程:Visual Studio Code
使用 FTP 動作之前,您的工作流程必須已經從觸發程序開始,可以是您選擇的任何類型。 例如,您可以使用一般定期內建觸發程序,在特定排程啟動工作流程。
在 Azure 入口網站中,在設計工具中開啟您的邏輯應用程式工作流程。
尋找並選取您想要使用的 FTP 動作。
此範例會繼續執行名為 [取得檔案中繼資料] 的動作,以便取得單一陣列項目的中繼資料。
在設計工具的觸發程序或任何其他動作下,選取 [新增步驟]。
在 [選擇作業] 搜尋方塊底下,選取 [標準]。
在搜尋方塊中,輸入 ftp 取得檔案中繼資料。
從 [動作] 清單中,選取名為 [取得檔案中繼資料] 的動作。
如有必要,請提供您的連線資訊。 完成時,選取建立。
注意
根據預設,此連接器會以文字格式傳送檔案。 若要以二進位格式傳送檔案,例如,使用編碼的位置和時間,請選取二進位傳輸選項。
在 [取得檔案中繼資料] 動作資訊方塊開啟之後,於 [檔案] 方塊內按一下,以開啟動態內容清單。
您現在可以從上述觸發程序選取輸出。
在動態內容清單中,於 [新增或修改檔案時] 底下選取 [檔案識別碼清單]。
檔案屬性現在會參考檔案識別碼清單觸發程序輸出。
在設計工具上,於 [取得檔案中繼資料] 動作底下,選取 [新增步驟]。
在 [選擇作業] 搜尋方塊底下,選取 [標準]。
在搜尋方塊中,輸入 ftp 取得檔案內容。
從 [動作] 清單中,選取名為 [取得檔案內容] 的動作。
在 [取得檔案內容] 動作資訊方塊開啟之後,於 [檔案] 方塊內按一下,以開啟動態內容清單。
您現在可以從上述觸發程序和任何其他動作中選取輸出。
在動態內容清單中的 [取得檔案中繼資料] 底下,選取 [識別碼],以參考已新增或更新的檔案。
檔案屬性現在會參考識別碼動作輸出。
完成後,請儲存您的工作流程。 在設計師工具列上選取儲存。
測試工作流程
若要檢查您的工作流程是否傳回您預期的內容,請新增另一個動作,以從新增或更新檔案傳送內容。 此範例使用名為 [傳送電子郵件] 的 Office 365 Outlook 動作。
在 [取得檔案內容] 動作下,新增名為 [傳送電子郵件] 的 Office 365 Outlook 動作。 如果您有 Outlook.com 帳戶,請新增 Outlook.com [傳送電子郵件] 動作,並據以調整下列步驟。
在設計工具上,於 [取得檔案內容] 動作底下,選取 [新增步驟]。
在 [選擇作業] 搜尋方塊底下,選取 [標準]。
在搜尋方塊中,輸入 office 365 outlook 傳送電子郵件。 從動作清單中,選取名為 [傳送電子郵件] 的 Office 365 Outlook 動作。
如有必要,請登入您的電子郵件帳戶。
在動作資訊方塊中,提供必要值,並包含您想要測試的任何其他參數或屬性。
例如,您可以包含 [取得檔案內容] 動作的 [檔案內容] 輸出。 若要尋找此輸出,請遵循下列步驟:
在 [取得檔案內容] 動作中,於 [本文] 方塊內按一下,以開啟動態內容清單。
在動態內容清單中,選取 [取得檔案內容] 旁的 [查看更多]。
在動態內容清單中,選取 [取得檔案內容] 底下的 [檔案內容]。
[本文] 屬性現在會參考 [檔案內容] 動作輸出。
儲存您的邏輯應用程式工作流程。
若要執行並觸發工作流程,請在設計工具的工具列上,選取 [執行觸發程序] > [執行]。 將檔案新增至工作流程所監視的 FTP 資料夾。
FTP 內建連接器作業
FTP 內建連接器僅適用於標準邏輯應用程式工作流程,並且提供下列作業:
觸發程序 | 描述 |
---|---|
新增或更新檔案時 | 在 FTP 伺服器上的指定資料夾中新增或更新檔案時,啟動邏輯應用程式工作流程。 注意:此觸發程序只會取得檔案中繼資料或屬性,而不是檔案內容。 不過,若要取得檔案內容,您的工作流程可以遵循此觸發程序與取得檔案內容動作。 |
動作 | 描述 |
---|---|
建立檔案 | 建立使用指定檔案路徑和檔案內容的檔案。 |
刪除檔案 | 刪除使用指定檔案路徑的檔案。 |
取得檔案內容 | 取得使用指定檔案路徑之檔案的內容。 |
取得檔案中繼資料 | 取得使用指定檔案路徑之檔案的中繼資料或屬性。 |
列出資料夾中的檔案和子資料夾 | 取得指定資料夾中的檔案和子資料夾清單。 |
更新檔案 | 更新使用指定檔案路徑和檔案內容的檔案。 |
新增或更新檔案時
作業識別碼:whenFtpFilesAreAddedOrModified
此觸發程序會在 FTP 伺服器上的指定資料夾中新增或更新檔案時,啟動邏輯應用程式工作流程執行。 此觸發程序只會取得檔案中繼資料或屬性,而不是任何檔案內容。 不過,若要取得檔案內容,您的工作流程可以遵循此觸發程序與取得檔案內容動作。
參數
名稱 | 索引鍵 | 必填 | 類型 | 描述 |
---|---|---|---|---|
資料夾路徑 | folderPath |
True | string |
相對於根目錄的資料夾路徑。 |
要傳回的檔案數目 | maxFileCount |
False | integer |
要從單一觸發程序執行傳回的檔案數目上限。 有效值的範圍為 1 - 100。 注意:根據預設,會啟用 [分割] 設定,並強制此觸發程序以平行方式處理每個檔案。 |
要忽略舊檔案的截止時間戳記 | oldFileCutOffTimestamp |
False | dateTime |
用來忽略較舊檔案的截止時間。 使用時間戳記格式 YYYY-MM-DDTHH:MM:SS 。 若要停用此功能,請將此屬性保留空白。 |
傳回
啟用觸發程序的 [分割] 設定時,觸發程序會一次傳回一個檔案的中繼資料或屬性。 否則,觸發程序會傳回包含每個檔案中繼資料的陣列。
名稱 | 類型 |
---|---|
檔案清單 | BlobMetadata |
建立檔案
作業識別碼:createFile
此動作會建立使用指定檔案路徑和檔案內容的檔案。 如果檔案已經存在,此動作會覆寫該檔案。
重要
如果您在相同工作流程內建立之後立即刪除或重新命名 FTP 伺服器上的檔案,作業可能會傳回 HTTP 404 錯誤,這是預設行為。 若要避免這個問題,請在刪除或重新命名任何新建立的檔案之前,包含 1 分鐘的延遲。 您可以使用延遲動作,將此延遲新增至您的工作流程。
參數
名稱 | 索引鍵 | 必填 | 類型 | 描述 |
---|---|---|---|---|
檔案路徑 | filePath |
True | string |
檔案路徑,包括相對於根目錄的副檔名 (如果有的話)。 |
檔案內容 | fileContent |
True | string |
檔案內容。 |
傳回
此動作會傳回 BlobMetadata 物件,名稱為 [本文]。
名稱 | 類型 |
---|---|
檔案中繼資料檔案名稱 | string |
檔案中繼資料檔案路徑 | string |
檔案中繼資料檔案大小 | string |
檔案中繼資料 | BlobMetadata |
刪除檔案
作業識別碼:deleteFtpFile
此動作會刪除使用指定檔案路徑的檔案。
參數
名稱 | 索引鍵 | 必填 | 類型 | 描述 |
---|---|---|---|---|
檔案路徑 | filePath |
True | string |
檔案路徑,包括相對於根目錄的副檔名 (如果有的話)。 |
傳回
無
取得檔案內容
作業識別碼:getFtpFileContent
此動作會取得使用指定檔案路徑之檔案的內容。
參數
名稱 | 索引鍵 | 必填 | 類型 | 描述 |
---|---|---|---|---|
檔案路徑 | path |
True | string |
檔案路徑,包括相對於根目錄的副檔名 (如果有的話)。 |
傳回
此動作會將檔案的內容傳回為名為 [檔案內容] 的二進位值。
名稱 | 類型 |
---|---|
檔案內容 | 二進位 |
取得檔案中繼資料
作業識別碼:getFileMetadata
此動作會取得使用指定檔案路徑之檔案的中繼資料或屬性。
參數
名稱 | 索引鍵 | 必填 | 類型 | 描述 |
---|---|---|---|---|
檔案路徑 | path |
True | string |
檔案路徑,包括相對於根目錄的副檔名 (如果有的話)。 |
傳回
此動作會傳回下列輸出:
名稱 | 類型 |
---|---|
檔案名稱 | string |
檔案路徑 | string |
檔案大小 | string |
上次更新時間 | string |
檔案中繼資料 | BlobMetadata |
列出資料夾中的檔案和子資料夾
作業識別碼:listFilesInFolder
此動作會取得指定資料夾中的檔案和子資料夾清單。
參數
名稱 | 索引鍵 | 必填 | 類型 | 描述 |
---|---|---|---|---|
資料夾路徑 | folderPath |
True | string |
相對於根目錄的資料夾路徑。 |
檔案內容 | fileContent |
True | string |
檔案的內容 |
傳回
此動作會傳回名為 [回應] 且包含 BlobMetadata 物件的陣列。
名稱 | 類型 |
---|---|
回應 | 具有 BlobMetadata 物件的陣列 |
更新檔案
作業識別碼:updateFile
此動作會更新使用指定檔案路徑和檔案內容的檔案。
重要
如果您在相同工作流程內建立之後立即刪除或重新命名 FTP 伺服器上的檔案,作業可能會傳回 HTTP 404 錯誤,這是預設行為。 若要避免這個問題,請在刪除或重新命名任何新建立的檔案之前,包含 1 分鐘的延遲。 您可以使用延遲動作,將此延遲新增至您的工作流程。
參數
名稱 | 索引鍵 | 必填 | 類型 | 描述 |
---|---|---|---|---|
檔案路徑 | filePath |
True | string |
檔案路徑,包括相對於根目錄的副檔名 (如果有的話)。 |
檔案內容 | fileContent |
True | string |
檔案的內容 |
傳回
此動作會傳回 BlobMetadata 物件,名稱為 [本文]。
名稱 | 類型 |
---|---|
本文 | BlobMetadata |