Anypoint Platform を介して API Manager ユーザーインターフェースを使用する代わりに、 Anypoint Platform 開発者ポータルから API Manager API ツールを使用して、接続モードで Flex Gateway を設定できます。このツールにより、コマンドラインを使用して API Manager と通信できるようになります。このチュートリアルの手順を使用して、API インスタンスの作成、デプロイ、ポリシーの適用、および削除を行います。
API Manager API についての詳細は、 API Manager API ドキュメントを参照してください。
| Jenkins パイプラインを使用してこれらのコマンドを自動化するには、「Jenkins Pipeline を使用した接続モードでの Flex Gateway の自動化」を参照してください。 |
始める前に
API Manager API を使用して Flex Gateway を設定する前に、次のタスクを完了します。
-
-
[App acts on its behalf (client credentials) (アプリケーションが自身のために行動する (クライアントログイン情報))] 種別を使用し、以下のスコープを含めます。
-
API Manager: [Manage API Configuration (API 設定の管理)]、[Manage Policies (ポリシーの管理)]、[View Policies (ポリシーの参照)]、[Deploy API Proxies (API プロキシのデプロイ)]
-
Runtime Manager: [Read Servers (サーバーの参照)]
-
Exchange: [Exchange Viewer (Exchange 閲覧者)]
API Manager API を使用するために接続アプリケーションで Flex Gateway を登録して実行する必要はありませんが、適切なスコープを含めれば同じ接続アプリケーションを使用できます。
-
-
設定する接続アプリケーションの ID とシークレットを保存します。
-
-
作成または適用する Exchange アセットのグループ ID、アセット ID、およびアセットバージョン (GAV) を収集します。
Exchange から GAV を収集する手順は、次のとおりです。
-
Exchange に移動します。
-
追加または適用するアセットを見つけます。
-
URL からグループ ID とアセット ID を収集します。
たとえば、API Manager API Exchange URL
https://anypoint.mulesoft.com/exchange/portals/anypoint-platform/f1e97bc6-315a-4490-82a7-23abe036327a.anypoint-platform/api-manager-api/minor/1.0/pages/home/ から収集された ID は次のとおりです。-
グループ ID:
f1e97bc6-315a-4490-82a7-23abe036327 -
アセット ID:
api-manager-api
-
-
[Latest Stable (最新の安定バージョン)] からアセットのバージョンを収集します。
たとえば、API Gateway HTTP 基本認証ポリシーテンプレートから収集されたバージョンは
1.3.1 です。
-
-
Anypoint Platform インスタンスから以下の情報を収集します。
-
Flex Gateway を実行する組織の組織 ID
詳細は、「組織 ID を見つける」を参照してください。
-
Flex Gateway を実行する環境の環境 ID
詳細は、「API Manager の外観」を参照してください。
-
API をデプロイする Flex Gateway のランタイム対象 ID
対象 ID を見つけるには、[Anypoint Platform] > [Runtime Manager] > [Flex Gateway] に移動します。
-
[Access Management (アクセス管理)] から認証トークンを取得する
API Manager API を使用してコールを行うには、認証トークンを取得する必要があります。
-
次の情報を収集します。
-
<connected-app-client-id>: 接続アプリケーションの ID -
<connected-app-client-secret>: 接続アプリケーションのシークレット。
-
-
プレースホルダーを次の内容に置き換えたら、次の要求を実行して認証トークンを取得します。
curl --location --request POST 'https://anypoint.mulesoft.com/accounts/api/v2/oauth2/token' \ --header 'Content-Type: application/json' \ --data-raw '{ "grant_type": "client_credentials", "client_id": "<connected-app-client-id>", "client_secret": "<connected-app-client-secret>" }' -
返された認証トークンを保存します。
API インスタンスを作成する
API Manager API を使用して API インスタンスを作成する手順は、次のとおりです。
-
次の情報を収集します。
-
<your-org-id>: Flex Gateway を実行する組織の組織 ID -
<your-env-id>: Flex Gateway を実行する組織の環境 ID -
<authorization-token>: 「[Access Management (アクセス管理)] から認証トークンを取得する」ステップで収集された認証トークン -
API GAV:
-
<asset-group-id>: Exchange から取得したグループ ID -
<asset-id-from-exchange>: Exchange から取得した、作成する API のアセット ID -
<asset-version>: Exchange から取得した、作成する API のアセットバージョン
-
-
<upstream-uri>: API の URI アップストリーム -
<your-proxy-uri>: プロキシ URI、API インスタンスのポートとベースパスの組み合わせ (例:http://0.0.0.0:<port-to-populate>/<path>)
-
-
必要に応じて、
"endpointUri" を収集するか、"endpointUri" 項目を削除します。-
<your-consumer-endpoint>: API のコンシューマーエンドポイント (例:http://consumer-endpoint.com)
-
-
サンプルコンテンツを置き換えたら、Anypoint Platform に対して POST 要求を実行します。
curl --location --request POST https://anypoint.mulesoft.com/apimanager/api/v1/organizations/<your-org-id>/environments/<your-env-id>/apis \ --header 'Authorization: bearer <authorization-token>' \ --header 'Content-Type: application/json' \ --data-raw '{ "spec": { "groupId": "<your-org-id>", "assetId": "<asset-id-from-exchange>", "version": "<asset-version>" }, "endpoint": { "deploymentType": "HY", "uri": "<upstream-uri>", "proxyUri": "<your-proxy-uri>", "isCloudHub": null }, "technology": "flexGateway" "endpointUri": "<your-consumer-endpoint>" // OPTIONAL }' -
インスタンスのデプロイ、ポリシーの適用、または削除を行うために、応答からインスタンス ID
"id" を保存します。
API インスタンスをデプロイする
API Manager API を使用して API インスタンスをデプロイする手順は、次のとおりです。
-
次の情報を収集します。
-
<instance-id>: 「API インスタンスを作成する」からのインスタンス ID "id" -
<gateway-version>: 使用している Flex Gateway のバージョン (例:1.4.0) -
<target-id-from-runtime-manager>: Runtime Manager から収集された対象 ID
-
-
サンプルコンテンツを置き換えたら、Anypoint Platform に対して POST 要求を実行します。
curl --location --request POST 'https://anypoint.mulesoft.com/proxies/xapi/v1/organizations/<your-org-id>/environments/<your-env-id>/apis/<instance-id>/deployments' \ --header 'Content-Type: application/json' \ --header 'Authorization: bearer <authorization-token>' \ --data-raw '{ "type": "HY", "gatewayVersion": "<gateway-version>", "targetId": "<target-id-from-runtime-manager>", "environmentId": "<your-env-id>" }'
ポリシーの適用
API Manager API を使用して、接続モードポリシーを Flex Gateway にのみ適用できます。
API Manager API を使用して API インスタンスにポリシーを適用する手順は、次のとおりです。
-
次の情報を収集します。
-
ポリシー GAV:
-
<policy-group-id>: Exchange のポリシーグループ ID -
<policy-asset-id>:Exchange のポリシーアセット ID (例:http-basic-authentication) -
<policy-asset-version>: Exchange のポリシーアセットバージョン (例:1.3.1)
-
-
"configurationData": ポリシーの必須設定パラメーター + Each policy has unique configuration data fields。"username" 項目と "password" 項目は一例です。ポリシーの設定データを見つけるには、「内部ポリシーディレクトリ」を参照してください。
-
-
サンプルコンテンツを置き換えたら、Anypoint Platform に対して POST 要求を実行します。
curl --location --request POST 'https://anypoint.mulesoft.com/apimanager/api/v1/organizations/<your-org-id>/environments/<your-env-id>/apis/<instance-id>/policies' \ --header 'Authorization: bearer <authorization-token>' \ --header 'Content-Type: application/json' \ --data-raw '{ "configurationData":{ "username": "user", "password": "test" }, "pointcutData":null, "assetId": "<policy-asset-id>", "assetVersion": "<policy-asset-version>", "groupId": "<policy-group-id>" }'
API インスタンスの削除
API Manager API を使用して API インスタンスを削除するには、サンプルコンテンツを置き換えた後に、Anypoint Platform に対して DELETE 要求を実行します。
curl --location --request DELETE 'https://anypoint.mulesoft.com/apimanager/api/v1/organizations/<your-org-id>/environments/<your-env-id>/apis/<instance-id>' \
--header 'Content-Type: application/json' \
--header 'Authorization: bearer <authorization-token>'