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>
xml

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

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

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. ダウンストリーム設定を定義します。

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

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

  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 ゲートウェイドメインテンプレートLeaving the Site​をダウンロードします。

    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>
    xml
    生成されたプロキシに 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 ゲートウェイドメインテンプレートLeaving the Site​は、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
Properties

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​ に変更します。