---
schema_version: "1"
id: 512290cdbc29d335f9cf134c8265a78fdf05ce49020a47584e0fd6fe18c26ddb
title: SFTP サーバーへの動的な接続の例
collection: mulesoft
version: current
locale: ja-jp
portal_url: https://docs.salesforce.com/mulesoft/current/ja-jp/sftp-connector/2.3/sftp-connection-dynamically.md
canonical_url: https://docs.mulesoft.com/jp/sftp-connector/2.3/sftp-connection-dynamically
source_site: docs.mulesoft.com
content_type: documentation
content_hash: 232ec6de73d8dc1206ed7ddacc2b2d70fd8ff850f156b88aa1e8a068ce4a4dd4
description: MuleSoft Documentation Site
release: "2.3"
latest: false
---
# SFTP サーバーへの動的な接続の例

多くのインテグレーションでは、次のように特定の条件に応じて異なるサーバーへの接続が必要です。

- 請求書を発行する部署に応じて異なる請求書ストレージサーバーに接続する。
- マルチテナントのユースケースなど、インテグレーションの対象に応じて異なるサーバーに接続する。

こうしたユースケースに対応するため、SFTP 用 Anypoint Connector (SFTP Connector) グローバル設定要素では、これらの条件を評価して適切なサーバーに接続するパラメーター式がサポートされています。

次の例は、複数のサーバーに動的に接続するための SFTP Connector の設定方法を示しています。

1. HTTP の ​**\[Listener (リスナー)\]**​ ソースでは、HTTP 経由で投稿されるランダムコンテンツを読み取ってフローを開始します。
2. File Connector の ​**Read**​ 操作では、​`host`​、​`user`​、​`port`​ などの列で構成されるランダムな SFTP 宛先セットを含む受信者 CSV ファイルを読み込みます。
3. DataWeave 変換は、コンテンツをマップして、CSV ファイルを分割します。
4. **\[For Each\]**​ コンポーネントと SFTP の ​**Write**​ 操作では、コンテンツを各 SFTP 宛先に書き込みます。
    
    **\[For Each\]**​ の反復ごとに、SFTP グローバル設定要素で設定された式が異なる値に解決され、サーバーごとに異なる接続が確立されます。

この例をテストするには、Mule アプリケーションを作成して、curl コマンドを使用してアプリケーションを実行およびテストします。

![SFTP サーバーへの動的な接続](/mulesoft/current/ja-jp/sftp-connector/2.3/_images/sftp-connection-dynamically.png)

Figure 1. SFTP サーバーへの動的な接続のフロー

## [](#mule-アプリケーションの作成)Mule アプリケーションの作成

Mule フローを作成する手順は、次のとおりです。

1. **\[Mule Palette (Mule パレット)\]**​ ビューで、​**\[HTTP\] > \[Listener\]**​ を選択します。
2. **\[HTTP\] の \[Listener (リスナー)\]**​ を Studio キャンバスにドラッグします。
3. **\[HTTP Listener (HTTP リスナー)\]**​ 設定画面で、必要に応じて ​**\[Display Name (表示名)\]**​ 項目の値を変更します。
4. **\[Path (パス)\]**​ 項目を ​`/multitenant`​ に設定します。
5. **\[Connector configuration (コネクタ設定)\]**​ 項目の横にあるプラス記号 (​**+**​) をクリックして、アプリケーション内の HTTP Listener のすべてのインスタンスで使用できるグローバル要素を設定します。
6. **\[General (一般)\]**​ タブで、次の項目を設定します。
    
    - **Host (ホスト)**​: `All Interfaces [0.0.0.0] (default)`
    - **Port (ポート)**​: `8081`
7. **\[OK\]**​ をクリックします。
8. **\[Set Variable\]**​ コンポーネントを ​**\[HTTP\] の \[Listener (リスナー)\]**​ ソースの右にドラッグします。
9. **\[Name (名前)\]**​ 項目を ​`content`​、​**\[Value (値)\]**​ 項目を ​`#[payload]`​ に設定します。
10. File Connector の ​**\[Read\]**​ 操作を ​**\[Set Variable\]**​ コンポーネントの右にドラッグします。
11. **\[File Path (ファイルパス)\]**​ 項目を ​`recipients.csv`​ に設定します。  
    これにより、​`host`​、​`user`​、​`port`​ などの列で構成されるランダムな SFTP 宛先セットを含む CSV ファイルが読み取られます。
12. **\[Connector configuration (コネクタ設定)\]**​ 項目の横にあるプラス記号 (​**+**​) をクリックして、アプリケーション内の File Connector のすべてのインスタンスで使用できるグローバル要素を設定します。
13. デフォルト設定を受け入れ、​**\[OK\]**​ をクリックします。
14. **Read**​ 操作の ​**\[MIME Type (MIME タイプ)\]**​ タブの ​**\[MIME Type (MIME タイプ)\]**​ 項目で ​`application/csv`​ を選択します。

### [](#追加コンポーネントおよび操作を設定する)追加コンポーネントおよび操作を設定する

コンポーネントおよび操作を追加して、Mule アプリケーションの作成を続けます。

1. Studio で、​**\[Transform Message\]**​ コンポーネントを ​**\[Read\]**​ 操作の右にドラッグします。
2. コンポーネントの ​**\[Output (出力)\]**​ セクションで、次の DataWeave コードを追加して、CSV ファイルの列にマップします。
    
    DataWeave スクリプト:
    
    ```dataweave
    %dw 2.0
    output application/java
    ---
    payload map using (row = $) {
       host: row.Host,
       user: row.User,
       password: row.Password}
    ```
3. **\[For Each\]**​ コンポーネントを ​**\[Transform Message\]**​ コンポーネントの右にドラッグします。
4. SFTP の ​**\[Write\]**​ 操作を ​**\[For Each\]**​ コンポーネントにドラッグします。  
    For Each の反復ごとに、​**Write**​ 操作は、コンテンツを各 SFTP 宛先に書き込みます。
5. **\[Connector configuration (コネクタ設定)\]**​ 項目の横にあるプラス記号 (​**+**​) をクリックして、アプリケーション内の SFTP の Write 操作のすべてのインスタンスで使用できるグローバル要素を設定し、次の項目を設定します。
    
    - **Host (ホスト)**​: `#[payload.host]`
    - **Username (ユーザー名)**​: `#[payload.username]`
    - **Password (パスワード)**​: `#[payload.password]`
6. **\[OK\]**​ をクリックします。
7. 設定画面で、​**\[Path (パス)\]**​ 項目を ​`demo.txt`​ に設定します。
8. **\[Content (コンテンツ)\]**​ 項目を ​`payload`​ に設定します。
9. **\[Set Payload\]**​ コンポーネントを ​**\[For Each\]**​ コンポーネントの右にドラッグします。
10. **\[Value (値)\]**​ 項目を ​`Multicast Ok`​ に設定します。

## [](#mule-アプリケーションを実行およびテストする)Mule アプリケーションを実行およびテストする

Mule アプリケーションを作成したら、それを実行してテストします。

1. Studio で、Mule アプリケーションを保存します。
2. **Package Explorer**​ でプロジェクト名をクリックし、​**\[Run (実行)\]**​ > ​**\[Run As (別のユーザーとして実行)\]**​ > ​**\[Mule Application (Mule アプリケーション)\]**​ をクリックします。
3. ブラウザーを開き、​`http://0.0.0.0:8081/multitenant`​ と入力します。

Mule 4 の動作に関する注意事項 (Mule 3 ユーザー向け):

- HTTP Listener ソースを通じて投稿された情報は、各 SFTP サイトに複数回書き込まれます。
    
    リスナーで​[反復可能ストリーム機能](https://docs.mulesoft.com/mule-runtime/latest/streaming-about)​が使用されているため、ストリームを複数回コンシュームすることについて心配は無用です。
- For Each コンポーネントは CSV ファイルの各行を自動的に処理します。
    
    Mule 3 では、最初に CSV ファイルを Java 構造体に変換する必要がありましたが、Mule 4 は Java に依存しないため、変換せずに動作するようになりました。

ファイルを読み取る場合やリストする場合に、ファイルのメタデータ (たとえば、ファイル名、フルパス、サイズ、タイムスタンプ) を知りたいと考える場合もあります。コネクタは Mule メッセージ属性を使用してこの情報にアクセスします。

## [](#sftp-サーバーに動的に接続するための-xml)SFTP サーバーに動的に接続するための XML

この例のフローをすばやく Mule アプリケーションに読み込むには、次のコードを Studio XML エディターに貼り付けます。

```xml
<?xml version="1.0" encoding="UTF-8"?>

<mule xmlns:sftp="http://www.mulesoft.org/schema/mule/sftp" xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core"
	xmlns:file="http://www.mulesoft.org/schema/mule/file"
	xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.mulesoft.org/schema/mule/file http://www.mulesoft.org/schema/mule/file/current/mule-file.xsd
http://www.mulesoft.org/schema/mule/ee/core http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd
http://www.mulesoft.org/schema/mule/sftp http://www.mulesoft.org/schema/mule/sftp/current/mule-sftp.xsd">
	<http:listener-config name="HTTP_Listener_config" >
		<http:listener-connection host="0.0.0.0" port="8081" />
	</http:listener-config>
	<file:config name="File_Config" doc:name="File Config"  />
	<sftp:config name="SFTP_Config" doc:name="SFTP Config"  >
		<sftp:connection host="#[payload.host]" username="#[payload.user]" password="#[payload.password]" />
	</sftp:config>
	<flow name="SFTPexample" >
		<http:listener doc:name="Listener" config-ref="HTTP_Listener_config" path="/multitenant"/>
		<set-variable value="#[payload]" doc:name="Set Variable" variableName="content"/>
		<file:read doc:name="Read" config-ref="File_Config" path="recipients.csv" outputMimeType="application/csv"/>
		<ee:transform doc:name="Transform Message" >
			<ee:message >
				<ee:set-payload ><![CDATA[%dw 2.0
output application/java
---
payload map using (row = $) {
   host: row.Host,
   user: row.User,
   password: row.Password}]]></ee:set-payload>
			</ee:message>
		</ee:transform>
		<foreach doc:name="For Each" >
			<sftp:write doc:name="Write" config-ref="SFTP_Config" path="demo.txt">
			</sftp:write>
		</foreach>
		<set-payload value="Multicast OK" doc:name="Set Payload" />
	</flow>
</mule>
```

## [](#関連情報)関連情報

- [SFTP Connector の例](https://docs.mulesoft.com/jp/sftp-connector/2.3/sftp-examples)
- [MuleSoft ヘルプセンター](https://help.mulesoft.com)