API ディスカバリー のための DataPower API Gateway プロキシー・コレクターの構成

API ディスカバリー 機能に DataPower® API Gateway プロキシー・データ・ソース・コレクターを追加する方法。

開始前に

API ディスカバリー DataPower API Gateway プロキシー・コレクターがプロバイダー組織からデータを収集できるようにするには、まずプロバイダー組織の分析データの共有を有効にする必要があります。 API ディスカバリー の分析データの共有を参照してください。

ソースを管理できるようにするには、以下のプロバイダー組織の役割のいずれかが必要です。
  • 組織管理者
  • 所有者
  • Settings: Manage 権限を持つカスタム役割。

このタスクについて

APIディスカバリーは、 API開発プロセスにおいてAPIを検索・追加するために利用できる、 オプションのアドオンです IBM® API ConnectAI Gateway 。 API をディスカバーする前に、1 つ以上のデータ・ソース・コレクターを構成する必要があります。 これらのコレクターは、最初の OpenAPI ドキュメントをプロバイダー組織に送信すると、 APIマネージャーの UIにある 「ソース 」タブに自動的に追加されます。

API ディスカバリー DataPower API Gateway ・プロキシー・コレクターを構成するには、 API ConnectAI Gatewayでプロバイダー組織内にプロキシー API 定義を作成するか、既存のプロキシー API を更新します。 この新規または既存のプロキシー API には、 OpenAPI 文書をディスカバーするために使用する既存の REST サービスのエンドポイントが含まれます。 その後、ディスカバーされた OpenAPI 文書を必要に応じてドラフト API にコピーして、 API Managerでの完全なライフサイクル管理を有効にすることができます。 既存のプロキシー API 定義を更新する場合、コレクションを実行するために必要な最小限のフィールドは、ステップ 1の例 YAML に示されているように、 invoke ポリシー log ・セグメントと両方の set-variable セグメントを含めることです。

手順

API Manager UI を使用して DataPower API Gateway プロキシー・コレクターを構成するには、以下の手順を実行します。 ツールキット CLI を使用してプロキシー API 定義を作成することもできます。 ツールキットCLIの使用方法に関する一般的な情報は、 コマンドラインツールの概要を参照してください。
  1. 以下の例のように、プロキシー API 定義の YAML ファイルを作成します。
    swagger: '2.0'
    info:
      version: version
      title: title
      x-ibm-name: name
      contact:
        name: contact_name
    basePath: /
    x-ibm-configuration:
      properties:
        target-url:
          value: target_url
          description: url_description
          encoded: false
      cors:
        enabled: true
      gateway: datapower-api-gateway
      type: rest
      phase: realized
      enforced: true
      testable: true
      assembly:
        execute:
          - invoke:
              title: invoke
              version: 2.0.0
              verb: keep
              target-url: $(target-url)$(request.path)$(request.search)
              follow-redirects: false
              timeout: 60
              parameter-control:
                type: allowlist
                values: []
              header-control:
                type: blocklist
                values: []
              inject-proxy-headers: true
              persistent-connection: true
          - log:
              version: 2.1.0
              title: log
              log-level: default
              mode: gather-only
          - set-variable:
              version: 2.0.0
              title: set-variable
              actions:
                - set: log.custom_data.discoveryServiceCollection
                  value: 'true'
                  type: string
              description: Setting specific collector key
          - set-variable:
              version: 2.0.0
              title: set-variable
              actions:
                - set: log.custom_data.apiTargetURL
                  value: $(target-url)
                  type: string
              description: Setting specific collector target URL
        catch: []
        finally: []
      activity-log:
        enabled: true
        success-content: payload
        error-content: payload
      catalogs: {}
      buffering: true
    paths:
      /{+pathparam}:
        get:
          responses:
            '200':
              description: success
              schema:
                type: string
          consumes: []
          produces: []
        post:
          responses:
            '201':
              description: success
              schema:
                type: string
          consumes: []
          produces: []
        put:
          responses:
            '201':
              description: success
              schema:
                type: string
        patch:
          responses:
            '200':
              description: success
              schema:
                type: string
          consumes: []
          produces: []
        delete:
          responses:
            '204':
              description: success
              schema:
                type: string
          consumes: []
          produces: []
        parameters:
          - name: +pathparam
            in: path
            required: true
            type: string
    schemes:
      - https
    
    ここで:
    • version は API のバージョン番号です。
    • title は API のタイトルです。 例えば、My proxy APIです。
    • name は API の名前です。 name フィールドの値は、コマンドで API を識別するために使用できる単一のストリングでなければなりません (例: my-proxy-api)。
    • contact_name は、API の連絡先の名前です。
    • target_url URL 公開したい既存のRESTサービスのエンドポイントです。 例えば、https://myorg.com/api/です。
    • url_description ターゲットの説明です。。 URL
    • $(target-url)$(request.path)$(request.search) は、既存の REST サービスの target_url エンドポイントの後にワイルドカード・パスとパラメーターを渡せるようにする invoke ポリシーです。 $(target-url)$(request.path)$(request.search)という接尾部を付けると、プロキシー OpenAPI スキーマ定義で明示的に定義されていなくても、API のユーザーによって呼び出された任意の数 (1-n) の要求パスおよび任意の数 (1-n) のパス・パラメーターがディスカバリー・コレクターによってキャプチャーされ、処理されます。
    • log は、カスタム・ログを追加できるようにする log ポリシーです。
    • set-variable は、 と呼ばれる特定のコレクターキーと、 と呼ばれる特定のコレクターターゲット を設定する ポリシーである。 discoveryServiceCollection apiTargetURL URL set-variable コレクターは、プロキシー API 定義に関連付けられているイベントの分析データをフィルターに掛けるために discoveryServiceCollection キーを使用し、異なるデータ・ソースからの重複呼び出しをフィルターに掛けるために apiTargetURL を使用します。
    • activity-log は、ディスカバーされた OpenAPI の再構成の完了状況を決定する activity-log ポリシーです。 success-content フィールドと error-content フィールドの両方を payload に設定すると、要求スキーマと応答スキーマを正しく作成できるだけの十分なデータがコレクターに提供されます。 また、これらのフィールドを activity または header データに設定することもできる。どちらの場合も、 OpenAPI 構造のうち、発見できるものが少なくなる。 コレクターはペイロード値を参照せず、これらの値はコレクターからディスカバリー機能に送信される前に編集されることに注意してください。
    • paths は、プロキシAPIで利用可能な発見可能パスの最大範囲があることを 確実にするために、ワイルドカード値、例えば に設定される。 {+pathparam} paths.parameters セクションは、同じ値に定義する必要があります。 paths:/{+pathparam} プロパティーの下で、 getpostpatchput、および delete のスタブ・メソッドを追加して、ディスカバー可能なすべてのオペレーションについて、プロキシーを介して最大限の情報を得ることができます。
  2. API Manager UI でプロバイダー組織にログインします。
  3. ナビゲーションペインで、 API UI ナビゲーション・ペインの「開発」アイコン 開発を選択し、次に 「追加」 > 「API」 をクリックします。
    「API タイプの選択」画面が表示されます。
  4. インポートセクションで、既存のOpenAPIをクリックし、
  5. 以下のいずれかの方法を選択して、YAML ファイルを選択します。
    • ファイルをドラッグする。
    • ファイルを参照します。
    • ファイルの URL を指定してください。
    ウィザードによって YAML の妥当性検査が行われ、検査が成功したことを示すメッセージが表示されます。
  6. 選択したファイルをインポートするには、 「次へ」 をクリックします。
    インポートの要約により、API 定義が作成されたことが確認されます。
  7. 「API の編集」をクリックします。
    API 定義が 「設計」 タブで開きます。
  8. 「テスト」 タブをクリックして、API ディスカバリーを開始します。
    「要求」 フィールドを使用して、プロキシー API を介して GETPOSTPATCHPUT、および DELETE の各メソッドを渡すことにより、API トラフィックを検索します。 例:
    GET https://myorg.com:9443/test/sandbox/users
    ユーザーのリストを返します。
    Draft comment: jendavidse@uk.ibm.com
    Need some good examples here please :)
    API トラフィックが検出されると、 API ディスカバリー 機能で DataPower API Gateway プロキシー・コレクターが使用可能になります。
  9. API Manager の UI で、 [Discover] アイコン ディスカバー・アイコンは、黒の背景に白の双眼鏡のペアのアウトラインです。をクリックし、 [Sources ] タブをクリックして、 DataPower API Gateway プロキシコレクターを表示します。
    ソースの状況は以下のとおりです。
    • 使用可能 -ソースは使用可能であり、その構成に従ってコレクターと同期します。
    • 無効 -ソースは無効化されており、 API ConnectAI Gateway はコレクターからのファイルを受け入れません。 この状況は、ディスカバリー操作が失敗した場合に、ディスカバリー・サービスによって設定されます。
    • 異常 -ソース・コレクターは使用不可です。
    • 一時停止 -ソースは一時停止され、 API ConnectAI Gateway はコレクターからのファイルを受け入れません。
  10. (オプション): ソースの横にある「 オプション オプション・アイコンは、白の背景にある 3 つの垂直の黒点のセットです。 」アイコンをクリックして、そのステータスを変更できます。
    • Pause collector -ソースを一時停止します。
    • コレクターの削除 - API Manager UI からソースを削除します。 外部ソース・ファイルは削除されません。
    • コレクターの再開 -一時停止または使用不可のソースを再開します。
  11. (任意): テーブルのヘッダー 「列の管理」アイコンは、白い背景に黒のホイールのアウトラインを表示します。 にある「 列の管理 」アイコンをクリックすると、列の順序や表示を変更できます。

結果

これで、 DataPower API Gateway プロキシー・データ・ソース・コレクターで API トラフィック・ディスカバリーの準備ができました。 コレクターは、テストの手動要求が行われたとき、またはプロキシー API がユーザーに提供されたときに、プロキシーの target_url の背後にある使用可能なパス上でアクセス可能なアプリケーションと対話するために、 API ConnectAI Gateway に更新を通知します。 API 定義がディスカバーされて処理されるたびに、データ・ソースの 「最終実行」 フィールドがアクティビティーを反映するように変更されます。

次のタスク

API Manager UI の 「Discover」 セクションで 「APIs」 タブをクリックし、データ・ソース・コレクターで API トラフィックを確認できます。 詳細については、 「検出されたAPIの確認」 を参照してください。