LoginSignup
5
2

More than 5 years have passed since last update.

API Connectでユーザー定義ポリシーを使ってみた

Posted at

前提バージョン

IBM API Connect 5.0.6.3
※当記事ではVMware Workstation PlayerでAPI ConnectがPC上に導入済みとします。

1 API Connectのユーザー定義ポリシーについて

API Connectでは、APIに対して、APIが呼ばれた際にどのような処理を行うか記述することができます。
(ログ出力、エラーハンドリング、分析ログ出力有無の設定など)
この処理は「ポリシーアセンブリー」と呼ばれます。
ポリシーアセンブリーはAPI DesignerまたはAPI Manager画面で作成します。

ポリシーアセンブリーの編集画面
image.png
画面の左側に表示されるIf、Throw、GatewayScript、XSLT、マップ、編集 などの部品をドラッグ&ドロップして処理内容を書いていきます。これらの部品はAPI Connectがデフォルトで提供するため、組み込みポリシーと呼ばれます。

このうち、GatewayScriptやXSLTはプラグラムの記述になり、ログ出力やエラーハンドリングなど共通的な処理において多く使用されます。このプログラムの記述を部品化し、必要なパラメータだけ見せたい場合があります。そのための機能がAPI Connectの「ユーザー定義ポリシー」です。

[Before] ログ出力ポイントごとにGatewayScript処理を記述しなければならなかった
image.png

[After] GatewayScriptの記述は隠蔽され、必要なパラメータのみ指定可能になった
image.png

2 ユーザー定義ポリシー作成

この記事では、固定の文字列をDataPowerのログに出力する、という単純な部品を作成します。大まかな流れは以下の通りです。
①部品名、パラメータ、処理の概要を決める
②テキストエディタで、部品名、パラメータの定義体を作成する(「ポリシー定義ファイル」と呼びます)。
③DataPowerのwebGUI画面で、処理ポリシーおよび処理アクションのオブジェクトを作成する。また、処理アクションから参照するGatewayScriptファイルも作成する。
④DataPowerのwebGUI画面で、③で作成した物をエクスポートする。
⑤②、④のファイルをzipファイルに固めます。
⑥API Managerの画面で、⑤のzipファイルをインポートする。

2-1 部品名、パラメータ、処理の概要を決める

部品名:「footprint」とします。

パラメータ

パラメータ GatewayScript内の変数名 データ型 必須 デフォルト値
出力内容 outputData string なし
ログカテゴリ logcategory string gatewayscript-user
ログレベル loglevel enum(info,warn,error) error

処理の概要

「outputData」の内容を、ログカテゴリー「logcategory」およびログレベル「loglevel」で、DataPower上で出力する。

その他(プロトコルの指定)

動作するプロトコルとして「jsonおよびsoap」、「json」、「soap」が指定可能です。今回は「json」のみとします。

その他(ランタイムの指定)

動作するランタイムとして、「DataPowerおよびMicro Gateway」、「DataPower」、「Micro Gateway」が指定可能です。今回は「DataPower」のみとします。

2-2 ポリシー定義ファイルの作成

2-1で決めた内容を元に、テキストエディタで以下のようなyamlファイルを作成します。

footprint.yaml
policy: 1.0.0

info:
  title: footprint
  name: footprint
  version: 1.0.0
  description: デバッグのための固定メッセージのログ出力ポリシー

attach:
    - rest

properties:
    $schema: "http://json-schema.org/draft-04/schema#"
    type: object
    properties:
        outputData:
            label: 出力内容
            description: デバッグのための出力内容を入力します(固定値のみ可)
            type: string
        logcategory:
            label: ログカテゴリー
            description: 出力ログカテゴリー
            type: string
            default: gatewayscript-user
        loglevel:
              label: ログレベル
              description: 出力ログレベル(defaultログへの出力は初期設定ではerror以上です)
              enum:
                - debug
                - info
                - error
              default: error
              type: string
    required:
      - outputData
      - logcategory
      - loglevel
gateways:
    - datapower-gateway

2-3 処理ポリシー、処理アクション、GatewayScriptファイルの作成

2-3-1 GatewayScriptファイルの作成

テキストエディタで以下のようなGatewayScriptファイルを作成します。

footprint-logoutput.js
var apic = require('local:isp/policy/apim.custom.js');

var props = apic.getPolicyProperty();
var outputData = props.outputData;
var logcategory = props.logcategory;
var loglevel = props.loglevel;

if (loglevel == 'info') {
  console.options({'category':logcategory}).info(outputData);
} else if (loglevel == 'warn') {
  console.options({'category':logcategory}).warn(outputData);
} else if (loglevel == 'error') {
  console.options({'category':logcategory}).error(outputData);
}

2-3-2 処理ルール、処理アクションの作成

  1. DataPowerにログインします。
    image.png

  2. WebGUIを開きます
    image.png

  3. 処理ルールを開きます
    image.png

  4. 追加ボタンを押します
    image.png

  5. オブジェクト名:footprint-main、ルールの方向:両方向、非XML処理:オン と入力します。
    image.png

  6. ルールアクションで「+」ボタンを押します。
    image.png

  7. 名前:footprint-logoutput、アクションタイプ:GatewayScript、入力・出力:NULL、GatewayScriptファイル:local:///policy/footprint/footprint-logoutput.js
    image.png

  8. 「適用」ボタンで処理アクションを保存します。
    image.png

  9. 「適用」ボタンで処理ルールを保存します。
    image.png

2-3-3. GatewayScirptファイルの配置

  1. トップ画面に戻り、「ファイル管理」を選択します。
    image.png

  2. localディレクトリのアクションを選択し、「サブディレクトリーの作成」を選択します。
    image.png

  3. policyディレクトリを作成します。
    image.png

  4. 同様に、policyディレクトリの下に「footprint」ディレクトリを作成します。

  5. footprintディレクトリのアクションを選択し、「ファイルのアップロード」を選択します。
    image.png

  6. GatewayScriptファイルをアップロードします。
    image.png

2-4 作成物のエクスポート

  1. 再びトップ画面に戻り、「構成のエクスポート」を選択します。
    image.png

  2. 「次へ」を選択します。
    image.png

  3. ファイル名:footprint、エクスポート先:ZIP、参照:選択したオブジェクトで必要なすべてのオブジェクトを含める、エクスポートファイル:選択したオブジェクトが参照するファイルのエクスポート、選択したオブジェクト:foorprint-main, footprint-logoutput を選択し、「次へ」をクリックします。
    image.png

  4. ファイルがダウンロードされます。

2-5 2-2,2-4のファイルをzipファイルに格納

以下のフォルダ構造になるようにzipファイルを作成します。

footprint.zip
 |
 +- footprint.yaml  …2-2で作成したファイル
 |
 +- implementation
    |
    + footprint.zip …2-4でダウンロードしたファイル

2-6 作成したファイルのインポート

  1. ダッシュボードを選択します
    image.png

  2. カタログを選択します
    image.png

  3. 設定のアイコンを選択します
    image.png

  4. ポリシーを選択します
    image.png

  5. インポートのボタンを選択します
    image.png

  6. ファイルを選択します
    image.png

  7. ポリシーが追加されました!
    image.png

  8. アセンブリーエディターで確認します
    image.png

3 動作確認

アセンブリーエディターで、ユーザー定義ポリシーを2か所に配置して、ログ出力させてみます。

1箇所目:出力データが「001」

image.png

2箇所目:出力データが「002」

image.png

実行結果

1回のAPI呼び出しで、無事2箇所分のログが出力されました!
image.png

おつかれさまでした。

免責事項

この記事の内容は不正確である可能性があります。この記事の内容やその利用等によって生じた、いかなる損害に対しても責任は負いません。

5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2