Apigeeの仕様については、公式のドキュメントやYoutubeにアップされている説明動画がたくさんあるのでありがたいです。
ただ謎に細かいところでつまずいたりしたので一応メモ。
KVM (KeyValueMap) とは
キーと値のセット。
Apigee内で使用可能なConfig値のようなイメージ。
認証情報やターゲットURLなど、プログラムの変更とは関わらない変更が生じる場合に使用。
環境毎に別の値を設定可能。例えば同じ名称のKVMをprodとtestに作成しておけば、APIプロキシがデプロイされている環境のKVMをApigeeは取得してくれる。
※公式の説明動画
KVMの設定
サイドバーの [Admin] ⇒ [Environment] ⇒ [Key Value Maps]
に現在設定済みのKVMが一覧表示される。
※UIは頻繁に変わってるっぽい
###手順(画面ポチポチ)
KeyValueMapは、こんなイメージ↓で作成される。
KVM1
|_ key:value
|_ key:value
KVM2
|_ key:value
|_ key:value
|_ key:value
- 画面右上の「+ Key value map」押下で出るダイアログで作成するKVMの名前を入力
- 暗号化するかどうか選択(チェックボックス)して、Add
- 作ったKVMを選択
- keyとvalueの組み合わせを入力していく
KVMの取得
- ポリシー「Key Value Map Operations」を選択
- 取得対象のKVM名を指定
<KeyValueMapOperations async="false" continueOnError="false" enabled="true" name="Key-Value-Map-Operations-GetConfig" mapIdentifier="Config">
~~~~~~中略~~~~~~~
<Get assignTo="private.httpTargetUrl">
<Key>
<Parameter>HTTPTargetUrl</Parameter>
</Key>
</Get>
・KeyValueMapOperationsタグのmapIdentifier属性で、KVM名を指定
・Keyタグ内で対象のkey文字列を指定
・GetタグのassignTo属性で、取得した値を格納する変数名を指定
※この際、暗号化済みの値を取得する場合は「private.」を使用する必要があります(上記の例)。
これで、後続のポリシー内でKVM値が参照可能になります。
上記の例だと「private.httpTargetUrl」を指定することで取得できます。
context.getVariable("private.httpTargetUrl")