Azure Logic Apps のワークフローから FTP サーバーに接続する
適用対象: Azure Logic Apps (従量課金プラン + Standard)
この記事では、ファイル転送プロトコル (FTP) コネクタを使って Azure Logic Apps のワークフローから FTP サーバーにアクセスする方法について説明します。 これにより、FTP サーバーやその他システムでイベントによってトリガーされると実行される自動ワークフローを作成でき、そのワークフローにより FTP サーバーでファイルを管理するアクションを実行できます。
たとえば、FTP サーバーでイベントを監視して応答する FTP トリガーによってワークフローを開始できます。 トリガーにより、ワークフロー内の後続のアクションで出力を使用できるようになります。 ワークフローで、次の特定のタスクを使用して、FTP サーバー アカウントを介してファイルを作成、送信、受信、管理する FTP アクションを実行できます。
- ファイルの追加または変更を監視します。
- ファイルを作成、コピー、削除、一覧表示、更新する。
- ファイルのメタデータと内容を取得する。
- フォルダーを管理する。
Azure Logic Apps を初めて使う場合は、次の作業開始ドキュメントをご覧ください。
コネクタに関するテクニカル リファレンス
FTP コネクタには、ロジック アプリの種類とホスト環境に基づいてさまざまなバージョンがあります。
ロジック アプリの種類 (プラン) | 環境 | コネクタのバージョン |
---|---|---|
従量課金プラン | マルチテナント Azure Logic Apps | マネージド コネクタ。コネクタ ギャラリーの [ランタイム]>[共有] の下に表示されます。 詳細については、次のドキュメントを確認してください。 - FTP マネージド コネクタのリファレンス - Azure Logic Apps のマネージド コネクタ |
Standard | シングルテナント Azure Logic Apps と App Service Environment v3 (Windows プランのみ) | マネージド コネクタ (Azure でホスト) はコネクタ ギャラリーの [ランタイム]>[共有] に表示されます。組み込みコネクタはコネクタ ギャラリーの [ランタイム]>[アプリ内] に表示され、サービス プロバイダーベースです。 組み込みコネクタは、接続文字列を使用して Azure 仮想ネットワークに直接アクセスできます。 詳細については、次のドキュメントを確認してください。 - FTP マネージド コネクタのリファレンス この記事で後述される - FTP 組み込みコネクタによる操作に関するセクション - Azure Logic Apps のマネージド コネクタ - Azure Logic Apps の組み込みコネクタ |
制限事項
容量とスループット
Standard ワークフローの組み込みコネクタ:
既定では、FTP アクションは 200 MB 以下のファイルの読み取りまたは書き込みが可能です。 現時点では、FTP 組み込みコネクタはチャンクをサポートしていません。
従量課金プラン ワークフローと Standard ワークフローのマネージド コネクタまたは Azure ホステッド コネクタ
既定では、FTP アクションは 50 MB 以下のファイルの読み取りまたは書き込みが可能です。 50 MB を超えるファイルを処理するために、FTP アクションでは、メッセージのチャンクがサポートされています。 ファイルのコンテンツの取得アクションでは、暗黙的にチャンクが使用されます。
FTP のマネージド コネクタまたは Azure ホステッド コネクタのトリガーでは、"最終更新日時" タイムスタンプが保持されると、結果が欠落したり、不完全になったり、遅延したりする可能性があります。 一方、FTP 組み込み 標準ロジック アプリ ワークフローのコネクタ トリガーには、この制限はありません。 詳しくは、FTP コネクタの「制限事項」セクションを参照してください。
FTP のマネージド コネクタまたは Azure ホステッド コネクタは、ロジック アプリ リソースが存在する Azure リージョンの接続容量に基づいて、FTP サーバーへの限られた数の接続を作成できます。 この制限が従量課金プランのロジック アプリ ワークフローで問題になる場合は、Standard ロジック アプリ ワークフローを作成し、代わりに FTP 組み込みコネクタを使うことを検討してください。
前提条件
Azure アカウントとサブスクリプション。 Azure サブスクリプションがない場合は、無料の Azure アカウントにサインアップしてください。
FTP アカウントにアクセスするロジック アプリ ワークフロー。 FTP トリガーでワークフローを開始するには、空のワークフローから開始する必要があります。 FTP アクションを使用するには、別のトリガー ([繰り返し] トリガーなど) でワークフローを開始します。
FTP マネージド コネクタと組み込みコネクタの両方に適用されるその他の要件については、FTP マネージド コネクタのリファレンス - 要件に関するページを参照してください。
既知の問題
既定では、配列を返すトリガーには [Split On] (分割) 設定があり、既に有効になっています。 この設定が有効になっている場合、トリガーは、各配列項目を処理する個別のワークフロー インスタンスを内部で作成することで、配列を自動的に "分割" します。 配列項目が同時に処理されるように、すべてのワークフロー インスタンスが並列して実行されます。
ただし、[Split On] (分割) 設定が有効になっている場合、"マネージド" コネクタ トリガーは、すべての配列項目の出力をリストとして返します。 これらの出力を参照する後続のアクションは、最初にこれらの出力をリストとして処理する必要があります。 各配列項目を個別に処理するために、アクションを追加できます。 たとえば、これらの配列項目を反復処理するために、For each ループを使用できます。 メタデータまたはプロパティのみを返すトリガーの場合、最初に配列項目のメタデータを取得するアクションを使用し、次に、項目の内容を取得するアクションを使用します。
この方法は、"マネージド" コネクタ トリガーにのみ適用する必要があります。[Split On] (分割) 設定が有効になっているときに、一度に 1 つの配列項目の出力を返す組み込みコネクタ トリガーには適用しないでください。
たとえば、[ファイルが追加または変更されたとき (プロパティのみ)] という名前のマネージド コネクタ トリガーがあるとします。このトリガーは、新しいファイルまたは更新されたファイルのメタデータまたはプロパティを配列として返します。 各ファイルのメタデータを個別に取得するために、配列を反復処理する For each ループを使用できます。 このループでは、次のマネージド コネクタ アクションを指定されている順序で使用します。
各ファイルのメタデータを取得するための [ファイルのメタデータの取得]。
各ファイルの内容を取得するための [ファイルの内容の取得] アクション。
FTP トリガーを追加する
従量課金プラン ロジック アプリ ワークフローでは、FTP マネージド コネクタのみ使用できます。 一方、Standard ロジック アプリ ワークフローでは、FTP マネージド コネクタ "および" FTP 組み込みコネクタを使用できます。 Standard ロジック アプリ ワークフローでは、マネージド コネクタも Azure コネクタとしてラベルが付けられます。
FTP マネージド コネクタと組み込みコネクタでは、それぞれ 1 つのトリガーのみ使用できます。
マネージド コネクタ トリガー: [ファイルが追加または変更されたとき (プロパティのみ)] という名前の FTP トリガーは、FTP サーバーで 1 つ以上のファイルがフォルダーに追加されたとき、または変更されたときに、従量課金プランまたは Standard ロジック アプリ ワークフローを実行します。 このトリガーでは、ファイルの内容ではなく、ファイルのプロパティまたはメタデータのみが取得されます。 ただし、ファイルの内容を取得するために、ワークフローで、このトリガーの後に他の FTP アクションを実行できます。
このトリガーについて詳しくは、「ファイルが追加または変更されたとき (プロパティのみ)」を参照してください。
組み込みコネクタ トリガー: [ファイルが追加または更新されたとき]という名前の FTP トリガーは、FTP サーバーで 1 つ以上のファイルがフォルダーに追加されたとき、または変更されたときに、Standard ロジック アプリ ワークフローを実行します。 このトリガーでは、ファイルの内容ではなく、ファイルのプロパティまたはメタデータのみが取得されます。 ただし、内容を取得するために、ワークフローで、このトリガーの後に他の FTP アクションを実行できます。 このトリガーについて詳しくは、「ファイルが追加または更新されたとき」を参照してください。
次の手順では Azure portal を使用しますが、適切な Azure Logic Apps 拡張機能があれば、次のツールを使用してロジック アプリ ワークフローを作成および編集することもできます。
従量課金ロジック アプリ ワークフロー: Visual Studio Code
Standard ロジック アプリ ワークフロー: Visual Studio Code
Azure portal のデザイナーで、空のロジック アプリ ワークフローを開きます。
デザイナーで、検索ボックスの下の [Standard] を選択します。 検索ボックスに「ftp」と入力します。
トリガーの一覧から、[ファイルが追加または変更されたとき (プロパティのみ)] という名前のトリガーを選択します。
接続に関する情報を指定します。 完了したら [作成] を選択します。
Note
既定では、このコネクタからファイルがテキスト形式で転送されます。 たとえば、エンコードが使用される状況で、バイナリ形式でファイルを転送するには、[バイナリ転送] オプションを選択します。
トリガー情報ボックスが表示されたら、新しいファイルまたは編集されたファイルを監視する対象のフォルダーを見つけます。
[フォルダー] ボックスで、フォルダー アイコンを選択してフォルダー ディレクトリを表示します。
右矢印 (>) を選択します。 目的のフォルダーを参照し、そのフォルダーを選択します。
選択されたフォルダーが [フォルダー] ボックスに表示されます。
完了したら、ワークフローを保存します。
ワークフローを保存すると、この手順により、デプロイされたロジック アプリ (Azure に公開されている) に更新プログラムが自動的に発行されます。 トリガーのみの場合、ワークフローでは、指定したスケジュールに基づいて FTP サーバーのチェックのみ行われます。 トリガーに応答し、トリガーの出力を使用して何か実行するアクションを追加する必要があります。
FTP アクションを追加する
従量課金プラン ロジック アプリ ワークフローでは、FTP マネージド コネクタのみ使用できます。 一方、Standard ロジック アプリ ワークフローでは、FTP マネージド コネクタ "および" FTP 組み込みコネクタを使用できます。 各バージョンには複数のアクションがあります。 たとえば、マネージド コネクタ バージョンと組み込みコネクタ バージョンの両方に、ファイルのメタデータを取得するため、およびファイルの内容を取得するための独自のアクションがあります。
マネージド コネクタ アクション: これらのアクションは、従量課金プランまたは Standard ロジック アプリ ワークフローで実行されます。
組み込みコネクタ アクション: これらのアクションは、Standard ロジック アプリ ワークフローでのみ実行されます。
次に示す手順では Azure portal を使用しますが、適切な Azure Logic Apps 拡張機能を使用すれば、次のツールでロジック アプリ ワークフローをビルドすることもできます。
- 従量課金ワークフロー: Visual Studio Code
- Standard ワークフロー: Visual Studio Code
FTP アクションを使用する前に、ワークフローがトリガーによって既に開始されている必要があります。トリガーは、任意の種類のものを選択できます。 たとえば、汎用の [繰り返し] 組み込みトリガーを使用して、特定のスケジュールに基づきワークフローを開始できます。
Azure portal のデザイナーで、ロジック アプリ ワークフローを開きます。
使用する FTP アクションを見つけて選択します。
この例では、1 つの配列項目のメタデータを取得できるようにするために、[ファイルのメタデータの取得] という名前のアクションを引き続き使用します。
デザイナーで、トリガーまたはその他のアクションの下にある [新しいステップ] を選択します。
[操作を選択してください] の検索ボックスで、[Standard] を選択します。
検索ボックスに「ftp get file metadata (ftp、ファイルのメタデータの取得)」と入力します。
アクションの一覧で、[ファイルのメタデータの取得] という名前のアクションを選択します。
必要に応じて、接続に関する情報を指定します。 完了したら [作成] を選択します。
Note
既定では、このコネクタからファイルがテキスト形式で転送されます。 たとえば、エンコードが使用される状況で、バイナリ形式でファイルを転送するには、[バイナリ転送] オプションを選択します。
[ファイルのメタデータの取得] アクション情報ボックスが表示されたら、[ファイル] ボックスの内部をクリックして動的なコンテンツの一覧を開きます。
これで、前のトリガーからの出力を選択できます。
動的なコンテンツの一覧で、[ファイルが追加または変更されたとき] の下にある [List of Files Id] (ファイル ID の一覧) を選択します。
これで、[ファイル] プロパティでは、[List of Files Id] (ファイル ID の一覧) トリガーの出力が参照されます。
デザイナーで、[ファイルのメタデータの取得] アクションの下にある [新しいステップ] を選択します。
[操作を選択してください] の検索ボックスで、[Standard] を選択します。
検索ボックスに「ftp get file content (ftp、ファイルの内容の取得)」と入力します。
アクションの一覧で、[ファイルの内容の取得] という名前のアクションを選択します。
[ファイルの内容の取得] アクション情報ボックスが表示されたら、[ファイル] ボックスの内部をクリックして動的なコンテンツの一覧を開きます。
これで、前のトリガーからの出力と他のアクションを選択できます。
動的なコンテンツの一覧で、[ファイルのメタデータの取得] の下にある [ID] を選択します。これは、追加または更新されたファイルを参照します。
これで、[ファイル] プロパティで [ID] アクションの出力が参照されます。
完了したら、ワークフローを保存します。 デザイナーのツール バーで、 [保存] を選択します。
ワークフローのテスト
ワークフローによって目的の内容が返されるか確認するために、追加または更新されたファイルの内容を自分に送信する別のアクションを追加します。 この例では、[メールの送信] という名前の Office 365 Outlook アクションを使用します。
[ファイルの内容の取得] アクションの下に、[メールの送信] という名前の Office 365 Outlook アクションを追加します。 Outlook.com アカウントがある場合、代わりに Outlook.com の [メールの送信] アクションを追加し、それに応じて次の手順を調整してください。
デザイナーで、[ファイルの内容の取得] アクションの下にある [新しいステップ] を選択します。
[操作を選択してください] の検索ボックスで、[Standard] を選択します。
検索ボックスに「office 365 outlook send an email (office 365 outlook、メールの送信)」と入力します。 アクションの一覧で、[メールの送信] という名前の Office 365 Outlook アクションを選択します。
必要に応じて、メール アカウントにサインインします。
アクション情報ボックスで、必要な値を指定し、テストするその他のパラメーターまたはプロパティを追加します。
たとえば、[ファイルの内容の取得] アクションから [ファイルのコンテンツ] の出力を追加できます。 この出力を見つけるには、次の手順に従います。
[ファイルの内容の取得] アクションで、[本体] ボックスの内部をクリックして動的なコンテンツの一覧を開きます。
動的なコンテンツの一覧で、[ファイルの内容の取得] の横にある [詳細を表示] を選択します。
動的なコンテンツの一覧で、[ファイルの内容の取得] の下にある [ファイルのコンテンツ] を選択します。
これで、[本体] プロパティで [ファイルのコンテンツ] アクションの出力を参照できます。
ロジック アプリ ワークフローを保存します。
ワークフローを実行してトリガーするために、[トリガーの実行] > [実行] を選択します。 ワークフローによって監視される FTP フォルダーにファイルを追加します。
FTP 組み込みコネクタによる操作
FTP 組み込みコネクタは、Standard ロジック アプリ ワークフローでのみ使用でき、次の操作を行います。
トリガー | 説明 |
---|---|
ファイルが追加または更新されたとき | ファイルが FTP サーバー上の指定したフォルダーに追加されたとき、または更新されたときに、ロジック アプリ ワークフローを開始します。 注: このトリガーでは、ファイルの内容ではなく、ファイルのメタデータまたはプロパティのみが取得されます。 ただし、内容を取得するために、ワークフローで、このトリガーの後に [ファイルの内容の取得] アクションを実行できます。 |
アクション | 説明 |
---|---|
ファイルを作成する | 指定したファイル パスとファイルの内容を使用してファイルを作成します。 |
ファイルを削除する | 指定したファイル パスを使用してファイルを削除します。 |
ファイル コンテンツの取得 | 指定したファイル パスを使用して、ファイルの内容を取得します。 |
ファイルのメタデータを取得する | 指定したファイル パスを使用して、ファイルのメタデータまたはプロパティを取得します。 |
[List files and subfolders in a folder] (フォルダー内のファイルとサブフォルダーを一覧表示する) | 指定したフォルダー内のファイルとサブフォルダーの一覧を取得します。 |
ファイルを更新する | 指定したファイル パスとファイルの内容を使用してファイルを更新します。 |
ファイルが追加または更新されたとき
操作 ID: whenFtpFilesAreAddedOrModified
このトリガーは、ファイルが FTP サーバー上の指定したフォルダーに追加されたとき、または更新されたときに、ロジック アプリ ワークフローの実行を開始します。 このトリガーでは、ファイルの内容ではなく、ファイルのメタデータまたはプロパティのみが取得されます。 ただし、内容を取得するために、ワークフローで、このトリガーの後に [ファイルの内容の取得] アクションを実行できます。
パラメーター
名前 | Key | Required | タイプ | 説明 |
---|---|---|---|---|
フォルダー パス | folderPath |
正しい | string |
ルート ディレクトリーからのフォルダーの相対パス。 |
[Number of files to return] (返すファイルの数) | maxFileCount |
いいえ | integer |
1 回のトリガー実行で返すファイルの最大数。 有効な値の範囲は 1 から 100 です。 注: 既定では、[Split On] (分割) 設定が有効になっており、このトリガーによって、個々のファイルが並列に処理されます。 |
[Cutoff timestamp to ignore older files] (古いファイルを無視するためのカットオフ タイムスタンプ) | oldFileCutOffTimestamp |
いいえ | dateTime |
古いファイルを無視するために使用するカットオフ時間。 YYYY-MM-DDTHH:MM:SS という形式のタイムスタンプを使用します。 この機能を無効にするには、このプロパティを空のままにします。 |
返品
トリガーの [Split On] (分割) 設定が有効になっている場合、トリガーによって、一度に 1 つのファイルのメタデータまたはプロパティが返されます。 それ以外の場合、トリガーによって、各ファイルのメタデータを含む配列が返されます。
名前 | Type |
---|---|
ファイルの一覧 | BlobMetadata |
ファイルを作成する
操作 ID: createFile
このアクションにより、指定したファイル パスとファイルの内容を使用してファイルが作成されます。 ファイルが既に存在する場合、このアクションによってそのファイルが上書きされます。
重要
同じワークフロー内でファイルを作成した直後に、FTP サーバーでそのファイルを削除または名前変更すると、HTTP 404 エラーが返されます。これは仕様です。 この問題を回避するには、新しく作成されたファイルを削除または名前変更する前に 1 分間の遅延時間を含めます。 [遅延] アクションを使用することで、ワークフローにこの遅延時間を追加できます。
パラメーター
名前 | Key | Required | タイプ | 説明 |
---|---|---|---|---|
ファイル パス | filePath |
正しい | string |
ルート ディレクトリからのファイルの相対パス (ファイル名拡張子がある場合は含める)。 |
ファイル コンテンツ | fileContent |
正しい | string |
ファイルの内容。 |
返品
このアクションでは、Body という名前の BlobMetadata オブジェクトが返されます。
名前 | Type |
---|---|
[File metadata File name] (ファイル メタデータのファイル名) | string |
[File metadata File path] (ファイル メタデータのファイル パス) | string |
[File metadata File size] (ファイル メタデータのファイル サイズ) | string |
ファイル メタデータ | BlobMetadata |
ファイルを削除する
操作 ID: deleteFtpFile
このアクションにより、指定したファイル パスを使用してファイルが削除されます。
パラメーター
名前 | Key | Required | タイプ | 説明 |
---|---|---|---|---|
ファイル パス | filePath |
正しい | string |
ルート ディレクトリからのファイルの相対パス (ファイル名拡張子がある場合は含める)。 |
戻り値
なし
ファイル コンテンツの取得
操作 ID: getFtpFileContent
このアクションにより、指定したファイル パスを使用してファイルの内容が取得されます。
パラメーター
名前 | Key | Required | タイプ | 説明 |
---|---|---|---|---|
ファイル パス | path |
正しい | string |
ルート ディレクトリからのファイルの相対パス (ファイル名拡張子がある場合は含める)。 |
返品
このアクションにより、File content という名前のバイナリ値としてファイルの内容が返されます。
名前 | Type |
---|---|
ファイル コンテンツ | バイナリ |
ファイルのメタデータを取得する
操作 ID: getFileMetadata
このアクションにより、指定したファイル パスを使用して、ファイルのメタデータまたはプロパティが取得されます。
パラメーター
名前 | Key | Required | タイプ | 説明 |
---|---|---|---|---|
ファイル パス | path |
正しい | string |
ルート ディレクトリからのファイルの相対パス (ファイル名拡張子がある場合は含める)。 |
返品
このアクションにより、次の出力が返されます。
名前 | Type |
---|---|
[ファイル名] | string |
ファイル パス | string |
ファイル サイズ | string |
最終更新日時 | string |
ファイル メタデータ | BlobMetadata |
[List files and subfolders in a folder] (フォルダー内のファイルとサブフォルダーを一覧表示する)
操作 ID: listFilesInFolder
このアクションでは、指定したフォルダー内のファイルとサブフォルダーの一覧が取得されます。
パラメーター
名前 | Key | Required | タイプ | 説明 |
---|---|---|---|---|
フォルダー パス | folderPath |
正しい | string |
ルート ディレクトリーからのフォルダーの相対パス。 |
ファイル コンテンツ | fileContent |
正しい | string |
ファイルの内容 |
返品
このアクションでは、BlobMetadata オブジェクトを格納する Response という名前の配列が返されます。
名前 | Type |
---|---|
回答 | BlobMetadata オブジェクトを含む配列 |
ファイルを更新する
操作 ID: updateFile
このアクションにより、指定したファイル パスとファイルの内容を使用してファイルが更新されます。
重要
同じワークフロー内でファイルを作成した直後に、FTP サーバーでそのファイルを削除または名前変更すると、HTTP 404 エラーが返されます。これは仕様です。 この問題を回避するには、新しく作成されたファイルを削除または名前変更する前に 1 分間の遅延時間を含めます。 [遅延] アクションを使用することで、ワークフローにこの遅延時間を追加できます。
パラメーター
名前 | Key | Required | タイプ | 説明 |
---|---|---|---|---|
ファイル パス | filePath |
正しい | string |
ルート ディレクトリからのファイルの相対パス (ファイル名拡張子がある場合は含める)。 |
ファイル コンテンツ | fileContent |
正しい | string |
ファイルの内容 |
返品
このアクションでは、Body という名前の BlobMetadata オブジェクトが返されます。
名前 | Type |
---|---|
本文 | BlobMetadata |