Mule 4 API プロキシのドメインサポート

Mule Runtime Engine (Mule) では、Mule ドメイン内でこれらのリソースを定義して Mule アプリケーション間で共通リソースを共有できます。次に、他の Mule アプリケーションはこのドメインを継承します。

Mule アプリケーションは、適切に設定されていれば、ドメインで宣言された​リソース​にアクセスできます。

自動生成された各プロキシは事前設定済みの Mule アプリケーションなので、同じドメインで複数の API プロキシを定義できます。同じホストとポートを使用するが、パスが異なる複数のプロキシを自動デプロイするときにドメインを作成します。

API プロキシのドメインの概要

API Manager では、自動的に既存のドメインを継承するように API プロキシを設定できます。すべての API プロキシは、ドメインを参照するときに次のいずれかのリスナー設定を使用します。

  • インバウンド HTTP エンドポイントの場合: api-proxy-listener-http

  • インバウンド HTTP エンドポイントの場合: api-proxy-listener-https

API で使用されるドメインは、Runtime Fabric または CloudHub サポートドメインではサポートされていません。

重要:​ ドメインでいくつかの連動関係を定義できます。ドメインで定義された連動関係のバージョンが、ドメインを参照する API プロキシで定義された連動関係のバージョン以上であることを確認してください。

ドメインで定義されたすべての連動関係は、API プロキシで定義された (古いまたは新しい) 連動関係よりも優先されます。たとえば、API プロキシが HTTP トランスポートで定義された機能に連動しているが、そのトランスポートの古いバージョンを使用するドメインを参照している場合、実行時にエラーがスローされます。

使用方法

API プロキシリスナーは、対象ドメインで定義されたリスナー設定を使用してドメイン HTTP リスナー設定を継承する必要があります。

次のコードは、対象ドメインで定義された HTTP リスナー設定を示しています。

<http:listener-config name="api-proxy-listener-http">
  <http:listener-connection host="0.0.0.0" port="8081" protocol="HTTP"/>
</http:listener-config>

ドメインで定義された HTTP リスナー設定の場合、API プロキシのリスナーセットアップが次のように定義されている必要があります。

<http:listener config-ref="api-proxy-listener-http" path="${proxy.path}" responseStreamingMode="AUTO">
...

API プロキシで使用されるドメインを設定する

API プロキシで使用するドメインを設定するには、以下の手順を完了します。

  1. [Anypoint Platform]​ > ​[API Manager]​ に移動します。

  2. [API Administration (API 管理)]​ で、​[Add API (API を追加)]​ をクリックし、​[Add new API (新しい API を追加)]​ をクリックします。

  3. ランタイムとして ​[Mule Gateway (Mule ゲートウェイ)]​ を選択します。

  4. [Proxy type (プロキシ種別)]​ で ​[Deploy a proxy application (プロキシアプリケーションをデプロイ)]​ を選択します。

  5. [Target Type (対象種別)]​ で ​[Hybrid (ハイブリッド)]​ を選択し、対象サーバーを選択します。

  6. [Next (次へ)]​ をクリックします。

  7. 以下のオプションから API を選択します。

    • 管理する API を Exchange を介して共有している場合、​[Select API from Exchange (Exchange から API を選択)]​ をクリックします。

      1. [Select API (API を選択)]​ の下のリストから API をクリックします。必要に応じて、特定の API を検索できます。

      2. 最新バージョンを使用していない場合は、​[Asset type (アセットタイプ)]​、​[API version (API バージョン)]​、および ​[Asset version (アセットバージョン)]​ を更新します。

        Exchange でのバージョンについての詳細は、アセットバージョンを参照してください。

      3. [RAML/OAS]​ アセットタイプを選択した場合は、API の ​[Conformance Status (準拠状況)]​ を表示して、API が準拠していることを確認します。​[Conformance Status (準拠状況)]​ が非準拠の場合、デプロイ後に​ガバナンスレポート​を表示して、準拠の問題を見つけて修正します。​ガバナンスレポート​についての詳細は、API インスタンスの管理を参照してください。

    • [Create new API (新しい API を作成)]​ をクリックします。

      1. 新しい API アセットの​名前​を入力します。

      2. 以下のオプションから​アセットタイプ​を選択します。

        • REST API:​ アセットに含める RAML または OAS API 定義ファイルがある場合は、このオプションを選択します。

          REST API の RAML または OAS ファイルをアップロードします。バージョン 2.0.0 以降ではネイティブ OAS サポートが追加されるので、OAS または RAML 仕様に推奨されるバージョンです。OAS API 仕様を API プロキシバージョン 1.0 以前にアップロードすると、API 仕様は RAML に変換されます。

        • HTTP API:​ アセットに含める API 定義ファイルがない場合は、このオプションを選択します。

        • SOAP API:​ WSDL API 定義ファイルまたはファイルへの外部リンクがある場合は、このオプションを選択します。

          SOAP API の WSDL ファイルをアップロードするか、ファイルへのリンクを追加します。
          このオプションは、現時点では Flex Gateway ランタイムでは使用できません。

      3. 最新バージョンを使用していない場合は、​[Asset type (アセットタイプ)]​、​[API version (API バージョン)]​、および ​[Asset version (アセットバージョン)]​ を更新します。

        Exchange でのバージョンについての詳細は、アセットバージョンを参照してください。

      4. [RAML/OAS]​ アセットタイプを選択した場合は、API の ​[Conformance Status (準拠状況)]​ を表示して、API が準拠していることを確認します。[Conformance Status (準拠状況)] が非準拠の場合、デプロイ後に​ガバナンスレポート​を表示して、準拠の問題を見つけて修正します。​ガバナンスレポート​についての詳細は、API インスタンスの管理を参照してください。

  8. [Next (次へ)]​ をクリックします。

  9. ダウンストリーム設定を定義します。

    設定を確認するには展開します。
    項目名 説明 必須 注意事項

    Protocol (プロトコル)

    検証に HTTP と HTTPS のどちらを使用するかを指定します。

    はい

    HTTPS を選択する場合、インバウンドトラフィックの TLS コンテキストを指定します。

    Inbound TLS (インバウンド TLS)

    インバウンドトラフィックを保護するための TLS コンテキストを指定します。

    いいえ

    Mule 4 以降でのみ使用できます。コンテキストを表示できない場合は、適切な権限があることを確認してください。Mule 3 環境で HTTPS を有効にするには、​「Mule 3x での HTTPS の有効化」​を参照してください。

    Port (ポート)

    表示されたポートが正しくない場合に使用する番号を指定します。

    はい

    Base Path (ベースパス)

    ホストルートに相対的なすべての API パスの URL プレフィックスを指定します。スラッシュ ​/​ で始まる必要があります。

    はい

    Instance label (インスタンス表示ラベル)

    API の表示ラベルを指定します。

    いいえ

    同じ API の複数の管理インスタンスがある場合、各インスタンスを他のインスタンスと区別するための表示ラベルを追加します。

    Advanced Options (詳細オプション)

    Consumer endpoint (コンシューマーエンドポイント)

    コンシューマーが要求の送信に使用するプロキシアプリケーションのアドレスを指定します。

    いいえ

    Client provider (クライアントプロバイダー)

    API のクライアントプロバイダーを指定します。

    はい

    Anypoint Platform はデフォルトではクライアントプロバイダーとして機能します。外部クライアントプロバイダーを設定するには、​「クライアントプロバイダー」​を参照してください。

    Request Timeout (要求タイムアウト)

    要求がタイムアウトするまでの期間を指定します。

    いいえ

    Proxy Version (プロキシバージョン)

    エンドポイントに使用するプロキシのバージョンを指定します。

    いいえ

    Service Name (サービス名)

    WSDL サービスの名前。

    はい

    WSDL API でのみ使用できます。

    Service Port (サービスポート)

    WSDL サービスのポート。

    はい

    WSDL API でのみ使用できます。

    Service Namespace (サービス名前空間)

    WSDL サービスの名前空間。

    はい

    WSDL API でのみ使用できます。

    Enable Console (コンソールを有効化)

    API 仕様を公開およびテストできるかどうかを指定します。

    いいえ

    [Console Path (コンソールパス)]​ に別のパス (​/spec/*​ など) を指定できます。関連付けられた API 定義がある場合にのみ使用できます。Mule 3 以降でのみ使用できます。

    Validations (検証)

    提供された仕様に対してインバウンド要求を検証するかどうかを指定します。

    いいえ

    関連付けられた API 定義がある場合にのみ使用できます。Mule 3 以降でのみ使用できます。

    厳格な検証 (省略可能)

    クエリパラメーターに対してインバウンド要求を検証するかどうかを指定します。

    いいえ

    関連付けられた API 定義がある場合にのみ使用できます。Mule 3 以降でのみ使用できます+

    User Domain (ユーザードメイン)

    API ゲートウェイドメインを使用するかどうかを指定します。

    いいえ

    設定で以前にプロキシデプロイメント対象として ​[Hybrid (ハイブリッド)]​ を選択した場合は、必ずこのオプションを選択してください。Mule 3.8 以降の API ゲートウェイドメインをインストールする必要があります。

  10. [Next (次へ)]​ をクリックします。

  11. アップストリーム設定を定義します。

    設定を確認するには展開します。
    項目名 説明 必須 注意事項

    Upstream URL (アップストリーム URL)

    プロキシまたは API にアクセスするための URL。

    はい

    たとえば、Exchange の API アセットの URL を使用できます。

    Outbound TLS (アウトバウンド TLS)

    アウトバウンドトラフィックを保護するための TLS コンテキストを指定します。

    いいえ

    Mule 4 以降でのみ使用できます。コンテキストを表示できない場合は、適切な権限があることを確認してください。

  12. [Next (次へ)]​ をクリックします。

  13. 選択内容を確認し、必要に応じて編集します。

  14. デプロイする準備ができたら、​[Save & Deploy (保存してデプロイ)]​ をクリックします。または、​[Save (保存)]​ を選択して API インスタンスを保存し、後でデプロイします。

  15. API プロキシ設定を保存したら、次のいずれかの手順を実行します。

    • 選択した対象に API プロキシにデプロイする (​[Settings (設定)]​ の ​[Deployment Configuration (デプロイメント設定)]​)。

    • デプロイ前に API プロキシをダウンロード (​[Actions (アクション)]​) して Anypoint Studio で編集し、対象ドメインをカスタマイズする。

初めてドメインを設定する

ドメインを参照する場合、Mule は API プロキシ ​pom.xml​ ファイルから Maven ログイン情報を読み取り、同じセマンティック名を使用してすでにデプロイされているドメインを参照します。たとえば、前の例で指定されたバージョンの API ゲートウェイドメインの場合、セマンティック名は ​gateway-proxy-domain-1.0.0-mule-domain​ になります。

プロキシでドメインを使用するには、API プロキシ ​pom.xml​ で提供される連動関係としてドメインテンプレートが指定されていることを確認します。

初めてドメインを設定する手順は、次のとおりです。

  1. 次のいずれかの方法でドメインアーティファクトを取得します。

    1. API ゲートウェイドメインテンプレート​をダウンロードします。

    2. 自動生成されたプロキシで事前定義された命名規則を使用して独自のカスタムドメインを作成します。

      • api-proxy-listener-http​: HTTP 通信用のリスナー設定

      • api-proxy-listener-https​: HTTPS 通信用のリスナー設定

  2. 実行中の Mule ディストリビューションの ​domains​ フォルダーに Maven アーティファクト (例: gateway-proxy-domain-1.0.0-mule-application-template.jar​) をコピーします。

  3. mule-application-template​ は ​mule-domain​ に置き換えて、​gateway-proxy-domain-1.0.0-mule-domain.jar​ という文字列にします。

    ヒント:​ アーティファクトの名前とその Maven ログイン情報が一致していることを確認します。次に例を示します。

    <groupId>com.mulesoft.anypoint</groupId>
    <artifactId>gateway-proxy-domain</artifactId>
    <version>1.0.0</version>
    <packaging>mule-domain</packaging>
    生成されたプロキシに Mule 4.2.2 以降からリンクするには、​domains​ フォルダーにコピーしたドメインファイルの名前を ​proxy-shared-domain.jar​ にする必要があります。
  4. 使用シナリオに合わせてドメインテンプレートをカスタマイズします。

<dependency>
    <groupId>com.mulesoft.anypoint</groupId>
    <artifactId>gateway-proxy-domain</artifactId>
    <version>1.0.0</version>
    <classifier>mule-domain</classifier>
    <scope>provided</scope>
</dependency>

ポートの競合の回避

API を正常に登録するには、一意のエンドポイント URL を使用して API プロキシを Mule インスタンスにデプロイする必要があります。自動生成されたプロキシはパス ​http://0.0.0.0:8081​ を使用します。

同じドメインを使用して複数のプロキシを実行している場合に競合を避けるには、プロキシパスが一意であることを確認します。また、複数のドメインが同じ Mule インスタンスにデプロイされている場合、すべてのドメインが正常にデプロイされて、デプロイ済みのプロキシで使用できるように各リスナー設定のポートが一意になっている必要があります。

API ゲートウェイドメインテンプレート

API プロキシをダウンロードして手動で設定する場合、​API ゲートウェイドメインテンプレート​を使用します。

API ゲートウェイドメインテンプレート​は、8081 ポートでリスンする共有 HTTP リスナー設定 (「api-proxy-listener-http」) が含まれるように設定されます。共有 HTTPS リスナー設定 (「api-proxy-listener-https」) を含めることもできます。

いずれかの設定を使用するには、API ゲートウェイドメインテンプレートのコードのコメントを解除し、証明書やパスワードなどの TLS コンテキストを設定します。次のリストは、使用可能なリスナー設定を示しています。

  • api-proxy-listener-http​: HTTP 通信で使用します。すべてのインターフェースにバインドし、ポート 8081 (デフォルト) を使用します。

  • api-proxy-listener-https​: HTTPS 通信で使用します。すべてのインターフェースにバインドします。+

    このドメインには、事前定義された ​config.properties​ ファイルが含まれているため、ドメインを再コンパイルすることなく設定を動的に定義できます。

次の例は、​config.properties​ ファイルのプロパティを示しています。

proxy.port=8081
implementation.protocol=HTTP
inbound.keystore.path=path
inbound.keystore.keyPassword=changeit
inbound.keystore.password=changeit
inbound.keystore.algorithm=
inbound.keystore.type=JKS
inbound.keystore.alias=alias

Mule 4.2.2 以降で API ゲートウェイドメインテンプレート 1.0.x を使用している場合は、生成されたプロキシに Mule からリンクするには、ドメインの Java アーカイブ (JAR) ファイルを修正する必要があります。

  • META-INF/maven/com.anypoint.mulesoft/gateway-proxy-domain/pom.xml​ で、必要に応じて ​groupId​ の値を ​com.mulesoft.anypoint​ に変更します。

  • META-INF/mule-artifact/classloader-model.json​ で ​"groupId":​ の下にある ​com.mulesoft.anypoint​ の値を変更します。

  • META-INF/mule-artifact/classloader-model.json​ で、必要に応じて ​groupId​ の値を ​com.mulesoft.anypoint​ に変更します。