Mule アプリケーションで API 自動検出を設定して、アプリケーション内のエンドポイントへの要求などの重要なメトリクスを API Manager に表示します。API Manager は Anypoint Platform の一部です。

Mule アプリケーションの自動検出設定には、Mule ゲートウェイランタイムで実行される API Manager の API からの API インスタンス ID が必要です。また、アプリケーションには API Manager で API に接続するための Anypoint Platform ログイン情報 (クライアント ID とシークレット) が必要です。
Mule ゲートウェイ API インスタンスのその他の重要な使用法については、API インスタンスの管理 and Mule Gateway ポリシーの概要を参照してください。
始める前に
Mule アプリケーションの自動検出設定の API インスタンス ID を取得するには、Mule ゲートウェイランタイムで実行される API Manager の API にアクセスできる必要があります。または、API Manager ドキュメントのMule ゲートウェイ API インスタンスの追加の手順に従って API を作成できます。
API Manager の API は、Mule アプリケーションのエンドポイントを定義する Anypoint Exchange の API 仕様に関連付けられています。エンドポイントを定義する API 仕様の例、およびエンドポイントを実装する Mule アプリケーションの例については、例を参照してください。 API 仕様の作成に関する案内については、以下を参照してください。
-
Anypoint Code Builder から仕様を設計する場合はAPI 仕様の作成およびインポート
-
Design Center から仕様を設計する場合はDesigning API Specs and Fragments
API 仕様を Exchange にパブリッシュするための案内については、以下を参照してください。
-
Anypoint Code Builder から仕様をパブリッシュする場合はExchange への API プロジェクトのパブリッシュ
-
Publishing API Specifications Design Center から仕様をパブリッシュする場合は
Mule アプリケーションで API 自動検出をセットアップする
API Manager の Mule ゲートウェイランタイムで実行される API に要求データを送信するように Mule アプリケーションを設定します。API は、API Manager のグラフでこのデータを追跡します。
Mule アプリケーションの自動検出設定には、API インスタンス ID を参照するグローバル要素 (<api-gateway:discovery/>) と、Mule アプリケーションの Mule Runtime Engine が API Manager で API の Anypoint Platform ビジネスグループまたは環境に接続できるようにするログイン情報 (クライアント ID とシークレット) が必要です。
自動検出をセットアップする手順は、次のとおりです。
-
始める前にの前提条件を満たします。
-
Anypoint Platform の [Access Management (アクセス管理)] ( US、 EU) から、ビジネスグループのクライアント ID とシークレットを取得します。
手順を表示
-
Anypoint Platform ( US、 EU) の [Access Management (アクセス管理)] で、ビジネスグループのリストを開きます。
代わりに Anypoint Platform ホームページからビジネスグループリストに移動するには、[Access Management (アクセス管理)] を開き、[Business Groups (ビジネスグループ)] をクリックします。
-
ビジネスグループリストで、ビジネスグループの名前をクリックします。
-
ビジネスグループの [Settings (設定)] タブをクリックします。
-
Access Manager の [Settings (設定)] タブから [Client ID (クライアント ID)] と [Client Secrets (クライアントシークレット)] の値を取得します。
-
-
API Manager で API インスタンスから API インスタンス ID を取得します。
-
Anypoint Code Builder の Mule アプリケーションで、API インスタンス ID を使用してアプリケーションを API インスタンスとペアリングします。
-
Mule アプリケーションの XML エディターで、アプリケーションの
<flow/> 要素の上に <api-gateway:autodiscovery/> 要素を追加します。次に例を示します。<api-gateway:autodiscovery apiId="YOUR_API_ID_HERE" flowRef="currentTimeFlow" doc:name="Autodiscovery" />より詳しいコンテキストについては、例: Mule アプリケーションの例を参照してください。
-
API インスタンス ID を
apiID 値として貼り付けます。次に例を示します。<api-gateway:autodiscovery apiId="123456" flowRef="currentTimeFlow" doc:name="Autodiscovery" />
-
-
Anypoint Code Builder で、ビジネスグループのクライアント ID とクライアントシークレットを [Settings (設定)] タブの Mule Runtime 引数に追加します。
-
[Settings (設定)] タブを開きます。
手順を表示
-
[Anypoint Code Builder] パネルから
(歯車) アイコンをクリックします。 -
アクティビティバーから
(歯車) アイコンをクリックし、[Settings (設定)] を選択して、[Settings (設定)] タブで mule を検索します。 -
[Command Palette (コマンドパレット)] でコマンド
MuleSoft: Open ACB Settings を指定します。
-
-
[Settings (設定)] タブで、[Mule] › [Runtime: Default Arguments (ランタイム: デフォルト引数)] を見つけます。
-
テキスト項目で、クライアント ID とシークレット引数を既存の引数の末尾に追加します。次に例を示します。
-M-Danypoint.platform.client_id=999abcde1f888e9h9aaa00ff5a5b03c5 -M-Danypoint.platform.client_secret=abc0d1234e5a4ab321A000B2033D4E56
例のモック値をクライアント ID とシークレットに置き換えます。
-
-
アプリケーションを実行して、ビルドログで次の情報をチェックして、API が接続されていることを確認します。
-
クライアント ID とクライアントシークレットが API Manager に対して正常に検証されている。
-
基盤となる
GateKeeper が FLEXIBLE モードで使用可能 (ブロック解除済み) である。 -
API Gateway 拡張機能が
STANDALONE になっている。
-
-
API インスタンスによって追跡されるアプリケーションのエンドポイントに要求を送信します。
詳細は、開発環境でのフローのトリガーを参照してください。
-
API Manager で、API インスタンスが登録済み (アクティブ) で、API Manager でメトリクスが生成されていることを確認します。

例
API 自動検出についてテストされた例を次に示します。
-
テストには、Design Center での仕様の作成、Exchange への仕様のパブリッシュ、Exchange で仕様に関連付けられた API Manager での Mule ゲートウェイ API インスタンスの作成が含まれます。
-
テストには、API Manager からの
apiID 値を含む <api-gateway:autodiscovery/> 要素の追加、Anypoint Code Builder 設定の Mule Runtime 引数へのクライアント ID とシークレットの追加、デバッグモードでのアプリケーションの実行によるローカルでのアプリケーションのデプロイ、アプリケーションでの定義済みエンドポイントへの要求、API Manager で関連付けられた Mule ゲートウェイ API インスタンスがアクティブであることの確認、要求によってインスタンスのグラフにデータ (重要なメトリクス) が生成されることの確認が含まれます。
例: OAS 仕様
次の OAS 仕様では、Mule アプリケーションの例の 1 つのエンドポイントを定義します。
openapi: "3.0.0" (1)
info:
version: 1.0.0
title: my-autodiscovery-api
servers:
- url: https://my-autodiscovery-app.us-e2.cloudhub.io
paths:
/current-time: (2)
get:
responses:
"200":
description: my description here.
content:
application/json:
schema:
type: object
properties:
current-time:
type: string
example:
current-time: "2024-08-05 14:56:12" (3)
| 1 | OAS 3.0 仕様 |
| 2 | /current-time エンドポイント定義 |
| 3 | 書式設定された日時値の例 |
例: Mule アプリケーション
<http:listener-config name="HTTP_Listener_config" > (1)
<http:listener-connection host="0.0.0.0" port="8081" />
</http:listener-config>
<api-gateway:autodiscovery apiId="YOUR_API_ID_HERE" flowRef="currentTimeFlow" doc:name="Autodiscovery" /> (2)
<flow name="currentTimeFlow"> (3)
<http:listener path="/current-time" config-ref="HTTP_Listener_config" doc:name="Listener" doc:id="bce0d0"/> (4)
<ee:transform doc:name="Transform" doc:id="ahlupg" > (5)
<ee:message>
<ee:set-payload >
<![CDATA[#[%dw 2.0
output application/json
---
{
"current-time": now() as String {format: "yyyy-MM-dd hh:mm:ss"}
}]]]>
</ee:set-payload>
</ee:message>
</ee:transform>
<logger doc:name="Logger" doc:id="bhcobk" message="#[payload]"/> (6)
</flow>
| 1 | HTTP リスナー接続設定例 |
| 2 | フロー currentTimeFlow を参照する自動検出設定
このアプリケーションを試す場合は、 |
| 3 | フロー currentTimeFlow |
| 4 | エンドポイント設定 path="/current-time" の HTTP リスナー
このエンドポイントは、OAS 仕様の例で定義されたエンドポイントの名前と一致します。 |
| 5 | DataWeave を使用して現在時刻を指定された形式で取得する Transform Message コンポーネント
この形式は、OAS 仕様の例で定義された形式と一致します。 |
| 6 | アプリケーション実行中の http://localhost:8081/current-time への要求時に現在時刻 (payload 内) を出力する Logger コンポーネント |