KeyValueMapOperations 政策

查看 Apigee Edge 說明文件。
前往 Apigee X說明文件
資訊

Edge UI 的鍵/值對應作業圖示

結果

透過政策存取 Apigee Edge 中可用的鍵/值對應 (KVM) 儲存庫。 設定可在已命名的現有地圖上儲存、擷取以及刪除鍵/值組合 用於指定 PUT、GET 或 DELETE 作業的 KeyValueMapOperations 政策。(至少一個 這些作業必須由政策執行)。

影片

請觀看下列影片,進一步瞭解 KVM。

影片 說明
為什麼要使用鍵/值 Google 地圖? 瞭解需要使用 KVM 的原因及運作方式。
建立 KVM 時使用的 在執行階段使用 UI 及擷取 KVM 建立 KVM、使用 KVM 政策擷取值,並將值插入 API 透過流程變數提出要求
建立與更新 API 執行階段的 KVM 使用 KVM 政策,在 API 執行階段建立 KVM。
將 KVM 快取至 提升成效 請快取資料,藉此改善 KVM 政策的效能。
儲存加密商店 KVM 以加密格式將機密資訊儲存在 KVM 中,並在 以及如何使用 KVM 政策和私有變數
管理存取權 使用 KVM 範圍 使用 KVM 限制 KVM 僅限機構、環境、API Proxy 或 API Proxy 修訂版本 政策範圍屬性
刪除 KVM 執行記錄 使用 KVM 政策 DELETE 作業,在 API 執行階段刪除 KVM 項目。

範例

PUT KVM

執行下列政策時,系統會建立名稱為 FooKVM,然後建立名為 FooKey_1 的金鑰,其中包含 兩個值已設定常值字串 foobar (未設定從變數擷取的值)。當您 在下一個範例中,GET 鍵指定了索引編號 擷取所需值

<KeyValueMapOperations async="false" continueOnError="false" enabled="true" name="FooKVM" mapIdentifier="FooKVM">
  <DisplayName>FooKVM</DisplayName>
  <ExpiryTimeInSecs>86400</ExpiryTimeInSecs>
  <Scope>environment</Scope>
  <Put>
    <Key>
      <Parameter>FooKey_1</Parameter>
    </Key>
    <Value>foo</Value>
    <Value>bar</Value>
  </Put>
</KeyValueMapOperations>

請注意,範圍是「環境」,您可以在管理頁面中看到 KVM UI (位於「API」部分)環境設定 >鍵/值對應。KVM 該網頁上的所有顯示範圍都會限定在您選取的環境內。

從常值取得 KVM

這項政策會查看上一個範例中的 FooKVM 對應,會取得 FooKey_1 鍵產生的第二個值 (index="2),並儲存在變數中 名為 foo_variable

<KeyValueMapOperations mapIdentifier="FooKVM" async="false" continueOnError="false" enabled="true" name="GetKVM">
  <DisplayName>GetKVM</DisplayName>
  <ExpiryTimeInSecs>86400</ExpiryTimeInSecs>
  <Scope>environment</Scope>
  <Get assignTo="foo_variable" index="2">
    <Key>
      <Parameter>FooKey_1</Parameter>
    </Key>
  </Get>
</KeyValueMapOperations>

PUT KVM 變數

網址縮短服務是實用鍵/值對應的簡單範例。鍵/值對應 您可以設定儲存短網址和對應的完整網址。

這項政策範例會建立鍵/值對應。政策會 PUT 具有兩個相關值的鍵 轉換為名為「urlMapper」的鍵/值對應。

<KeyValueMapOperations name="putUrl" mapIdentifier="urlMapper">
   <Scope>apiproxy</Scope>
   <Put override="true">
      <Key>
         <Parameter ref="urlencoding.requesturl.hashed"/>
      </Key>
      <Value ref="urlencoding.longurl.encoded"/>
      <Value ref="request.queryparam.url"/>
   </Put>
</KeyValueMapOperations>

這個範例中的鍵 urlencoding.requesturl.hashed 是 自訂變數然後由程式碼 (JavaScript 或 Java) 產生 例如,然後儲存在這個變數中,KeyValueMapOperations 政策可從這個變數中存取 基礎架構

每個鍵 requesturl.hashed 都會儲存兩個值:

  • 名為「urlencoding.longurl.encoded」的自訂變數內容
  • 預先定義變數「request.queryparam.url」的內容

舉例來說,政策在執行階段執行時,變數值可能會是 如下:

  • urlencoding.requesturl.hashed: ed24e12820f2f900ae383b7cc4f2b31c402db1be
  • urlencoding.longurl.encoded: http://tinyurl.com/38lwmlr
  • request.queryparam.url: http://apigee.com

以下鍵/值對應和項目會在 Edge 的鍵/值儲存庫中產生,並 範圍限定為附加政策的 API Proxy:

{
    "entry" :[ 
        {
            "name" : "ed24e12820f2f900ae383b7cc4f2b31c402db1be",
            "value" : "http://tinyurl.com/38lwmlr,http://apigee.com"
        }
    ],
    "name" : "urlMapper"
}

項目會一直保留,直到刪除為止。鍵/值儲存庫項目分佈於 執行雲端的 Edge 執行個體

從變數取得 KVM

「縮短」網址就是實用的鍵/值對應範例課程中也會快速介紹 Memorystore 這是 Google Cloud 的全代管 Redis 服務鍵/值對應 您可以設定儲存短網址和對應的完整網址。

如要擷取鍵/值對應項目的值,例如 KeyValueMapOperations 的「PUT」分頁,設定政策以取得鍵/值對應:

<KeyValueMapOperations name="getUrl" mapIdentifier="urlMapper">
   <Scope>apiproxy</Scope>
   <Get assignTo="urlencoding.shorturl" index='1'>
      <Key>
         <Parameter ref="urlencoding.requesturl.hashed"/> 
      </Key>
   </Get>
</KeyValueMapOperations>

執行這項政策時,如果 urlencoding.requesturl.hashed 變數是 ed24e12820f2f900ae383b7cc4f2b31c402db1be,然後是名為 「urlencoding.shorturl」會設為以下值 http://tinyurl.com/38lwmlr

資料擷取完畢之後,其他政策和程式碼只要擷取 這些變數的值

從 KVM 取得 GET 加密值

如果鍵/值對應已加密,請使用「private.」擷取值 前置字串assignTo。在這個範例中, private.encryptedVar 會保留鍵/值對應中 foo 鍵。如要瞭解如何建立加密金鑰值對應,請參閱「create」 鍵/值對照表的主題 Management API

<KeyValueMapOperations name="getEncrypted" mapIdentifier="encrypted_map">
   <Scope>apiproxy</Scope>
   <Get assignTo="private.encryptedVar" index='1'>
      <Key>
         <Parameter>foo</Parameter> 
      </Key>
   </Get>
</KeyValueMapOperations>

資料擷取完畢之後,其他政策和程式碼只要擷取 來自該變數的值


元素參照

元素參照會說明 KeyValueMapOperations 的元素和屬性 政策:

<KeyValueMapOperations async="false" continueOnError="false" 
    enabled="true" name="Key-Value-Map-Operations-1" 
    mapIdentifier="urlMapper" >
   <DisplayName>Key Value Map Operations 1</DisplayName>
   <Scope>environment</Scope>
   <ExpiryTimeInSecs>300</ExpiryTimeInSecs>
   <InitialEntries>
      <Entry>
         <Key>
            <Parameter>key_name_literal</Parameter>
         </Key>
         <Value>value_literal</Value>
      </Entry>
      <Entry>
         <Key>
            <Parameter>variable_name</Parameter>
         </Key>
         <Value>value_1_literal</Value>
         <Value>value_2_literal</Value>
      </Entry>
   </InitialEntries>
   <Put override="false">
      <Key>
         <Parameter>key_name_literal</Parameter>
      </Key>
      <Value ref="variable_name"/>
   </Put>
   <Get assignTo="myvar" index="1">
      <Key>
         <Parameter ref="variable_name"/>
      </Key>
   </Get>
   <Delete>
      <Key>
         <Parameter>key_name_literal</Parameter>
      </Key>
   </Delete>
</KeyValueMapOperations>

&lt;KeyValueMapOperations&gt;屬性

下例顯示 <KeyValueMapOperations> 標記中的屬性:

<KeyValueMapOperations async="false" continueOnError="false" enabled="true" name="Key-Value-Map-Operations-1" mapIdentifier="map_name">

下表說明 <KeyValueMapOperations> 標記特有的屬性:

屬性 說明 預設 存在必要性
mapIdentifier

指定存取由此 建立的地圖時要使用的識別碼 政策或管理 UI 中

使用 Apigee Edge for Public Cloud 時,KVM 名稱區分大小寫。 例如 foobarFooBar 不同。

如果排除這項屬性,系統就會使用名為 kvmap 的 KVM。

在機構/環境/apiproxy 範圍內,您可以使用 mapIdentifier 屬性指定自己的地圖名稱。

不適用 選用

下表說明所有政策父項元素的共同屬性:

屬性 說明 預設 存在必要性
name

政策的內部名稱。name 屬性的值可以 包含英文字母、數字、空格、連字號、底線和半形句號。此值不能 超過 255 個半形字元

視需要使用 <DisplayName> 元素,為政策加上標籤: 管理使用者介面 Proxy 編輯器,使用不同的自然語言名稱。

不適用 必填
continueOnError

如果設為「false」,系統會在政策失敗時傳回錯誤。這是可預期的情況 大多數政策的行為

如果設為 true,即使政策已發生,流程執行作業仍會繼續執行 失敗。

false 選用
enabled

如要強制執行政策,請設為 true

設為 false 即可停用政策。這項政策不會 仍會強制執行 政策。

true 選用
async

此屬性已淘汰。

false 已淘汰

&lt;DisplayName&gt;元素

name 屬性外,一併使用 管理 UI Proxy 編輯器,使用不同的自然語言名稱。

<DisplayName>Policy Display Name</DisplayName>
預設

不適用

如果省略這個元素,政策的 name 屬性值會是

存在必要性 選用
類型 字串

&lt;Delete&gt;元素

刪除指定的鍵/值組合。至少一個 <Get>: 必須使用 <Put><Delete>

請務必使用 mapIdentifier 屬性指定 KVM 名稱 父元素。例如:

<Delete>
   <Key>
      <Parameter>key_name_literal</Parameter>
   </Key>
</Delete>
預設 不適用
存在必要性 如果沒有 <Get><Put>,則為必要欄位。
類型 不適用

&lt;Entry&gt;元素

鍵/值對應的種子值,如果有,系統會在鍵/值對應中填入這些資料 初始化。

對於公有雲的 Edge,金鑰大小限制為 2 KB。例如:

<InitialEntries>
   <Entry>
      <Key>
         <Parameter>key_name_literal</Parameter>
      </Key>
      <Value>v1</Value>
   </Entry>
   <Entry>
      <Key>
         <Parameter>key_name_variable</Parameter>
      </Key>
      <Value>v3</Value>
      <Value>v4</Value>
   </Entry>
</InitialEntries>
預設 不適用
存在必要性 選用
類型 不適用

&lt;ExclusiveCache&gt;元素

已淘汰,請改用 <Scope> 元素。

&lt;ExpiryTimeInSecs&gt;元素

指定邊緣從 指定的 KVM 執行個體

如果值為 0 或 -1,或排除此元素,則預設值為 300 秒 例如:

<ExpiryTimeInSecs>600</ExpiryTimeInSecs>
預設 300 (5 分鐘)
存在必要性 選用
類型 整數

KVM 是一種長期持續性機制,可將鍵和值儲存在 NoSQL 資料庫中。 因此,在執行階段中讀取 KVM 可能會降低 Proxy 效能。為了改善 效能,Edge 內建於執行階段中快取 KVM 金鑰/值的機制。 這項 KVM 作業政策一律會從快取讀取 GET 作業。

<ExpiryTimeInSecs> 元素可讓您控制鍵/值的時間長度 系統會將政策中使用的政策儲存在快取中,之後才會透過 KVM 重新整理。不過 GET 和 PUT 作業如何影響快取到期時間。

GET:KVM GET 作業首次執行時,所要求的 來自 KVM 的鍵/值 (該名稱是在政策的根層級 mapIdentifier 中指定) 屬性) 載入快取中,而這些屬性會保留在後續的 GET 作業前,直到 會發生下列情況:

  • <ExpiryTimeInSecs> 中指定的秒數到期。
  • KVM 政策中的 PUT 作業會覆寫現有值 (說明如下)。

PUT:PUT 作業會將鍵/值寫入指定的 KVM。如果 PUT 寫入快取中已存在的索引鍵後,系統會立即重新整理快取, 政策的 <ExpiryTimeInSecs> 元素。

範例:快取 KVM

  1. GET 作業會擷取「rating」的值將值「10」快取。 政策的 <ExpiryTimeInSecs> 為 60。
  2. 30 秒後,GET 政策會再次執行,並擷取「10」從快取中取得
  3. 5 秒後,PUT 政策會更新「rating」的值「8」,而 PUT 政策的 <ExpiryTimeInSecs> 為 20。系統會立即執行快取 重新整理的新值,現在設定在快取中保留 20 秒。(如果 PUT 此外,第一個 GET 填入的快取在另一個 原始 60 秒造成 30 秒。
  4. 15 秒後,另一個 GET 會執行並擷取「8」的值。
,瞭解如何調查及移除這項存取權。

&lt;Get&gt;元素

擷取指定鍵的值。至少一個 <Get>: 必須使用 <Put><Delete>

請務必使用 mapIdentifier 屬性指定 KVM 名稱: 父項元素。

您可以在政策中加入多個 Get 區塊,擷取多個項目 從 KVM 收到的指令

預設 不適用
存在必要性 如果不是 <Put><Delete>,則為必要欄位 。
類型 不適用

從 KVM 取得單一項目

<Get assignTo="myvar" index="1">         
   <Key>             
      <Parameter>key_name_literal</Parameter>         
   </Key>     
</Get>

從 KVM 取得多項商品

以下範例假設 KVM 具有下列鍵和值。此外, 為了儲存歷來最熱門的電影,而 KVM 儲存 所有知名電影的導演名稱

top_movies 公主布萊德公主、教義的教父
肯因市民 奧森威爾斯
新娘公主 羅伯雷納
教父 Francis Ford Coppola

以下是我們可用來擷取目前最熱門的電影的 KVM 政策設定 及其董事名稱:

<Get assignTo="top.movie.pick" index="1">
   <Key>
      <Parameter>top_movies</Parameter>
   </Key>
</Get>
<Get assignTo="movie.director">
   <Key>
      <Parameter ref="top.movie.pick"/>
   </Key>
</Get>

呼叫 API Proxy 時,Edge 會建立以下內容 可在 API Proxy 流程中使用的變數:

  • top.movie.pick=Princess Bride
  • movie.director=Rob Reiner

屬性

下表將說明 <Get> 元素的屬性:

屬性 說明 預設 存在必要性
assignTo

應將已擷取值指派給該變數。

如果鍵/值對應關係已加密,則 assignTo 名稱的開頭會是 「private.」。例如:

<Get assignTo="private.myvar">

如果您在沒有憑證的情況下嘗試擷取已加密的金鑰值對應,這項政策會擲回錯誤 。只有在達成基本安全性目的時才需要這個前置字串 進行偵錯時,就不會在 API Proxy 追蹤和偵錯工作階段中隱藏加密值。

如要瞭解如何建立加密金鑰值對應,請參閱「create」相關主題 鍵/值對應管理 API建立和 編輯環境鍵/值對應關係

不適用 必填
索引

要從多值鍵擷取的項目索引號碼 (從 1 開始索引起算)。 舉例來說,指定 index=1 會傳回第一個值並指派給第一個值 assignTo 變數。如果沒有指定索引值,系統會將 此項目會以 java.util.List 形式指派給變數。

如需範例,請參閱「從 KVM 取得加密值」開啟「發現」分頁

不適用 選用

&lt;InitialEntries&gt;元素

鍵/值對應的種子值,初始化時會在鍵/值對應中填入。 請務必指定已啟用 mapIdentifier 屬性的 KVM 名稱 父項元素例如:

<InitialEntries>
   <Entry>
      <Key>
         <Parameter>key_name_literal</Parameter>
      </Key>
      <Value>v1</Value>
   </Entry>
   <Entry>
      <Key>
         <Parameter>key_name_variable</Parameter>
      </Key>
      <Value>v3</Value>
      <Value>v4</Value>
   </Entry>
</InitialEntries>

使用這項元素時,在已部署版本的管理 UI 中儲存政策時 或部署含有此元素政策(金鑰) 的 API Proxy 組合 系統會自動在 KVM 中建立 (未經加密)。如果政策中的值不同 而不是 KVM 中的值,那麼部署 Proxy 時就會覆寫 KVM 中的值。不限 在現有的 KVM 旁邊新增鍵/值,以及現有的鍵/值。

這個元素填入的鍵和值必須是常值。舉例來說,這個元素不支援 <Parameter ref="request.queryparam.key">

以公用雲端和 Cloud Edge 及 Cloud Edge 及,金鑰大小皆不得超過 2 KB 私刑邊緣KVM 值的上限為 2 KB。

如要建立加密的 KVM,請使用鍵/值 Maps Management API

預設 不適用
存在必要性 選用
類型 不適用

&lt;Key&gt;元素

指定鍵/值對應項目中的鍵。鍵可以組合,也就是說,超過 可以附加一個參數來建立鍵。例如 userID 和 系統可能會合併 role 來建立 key。例如:

<Key>
    <Parameter>key_name_literal</Parameter>
</Key>

請務必查看 &lt;Parameter&gt; 元素,即可瞭解 設定金鑰名稱

使用 Edge for Public Cloud 時,金鑰大小限制為 2 KB。 詳情請參閱 Edge for Public Cloud API 和 Private Cloud API 的 Edge 差異

預設 不適用
存在必要性 選用
類型 不適用

&lt;Parameter&gt;元素

指定鍵/值組合中的鍵。這個元素會在建立、放置、 擷取或刪除鍵/值組合

您可以使用下列方式指定名稱:

  • 常值字串

    <Key>
      <Parameter>literal</Parameter>
    </Key>
    
  • 要在執行階段使用 ref 屬性擷取的變數

    <Key>
      <Parameter ref="variable_name"/>
    </Key>
    
  • 常值和變數參照的組合

    <Key>
      <Parameter>targeturl</Parameter>
      <Parameter ref="apiproxy.name"/>
      <Parameter>weight</Parameter>
    </Key>
    

如果 Key 元素包含多個「參數」元素,有效的鍵字串就是 將每個參數的值串連起來,並以雙底線聯結。例如,在 上述範例,如果 apiproxy.name 變數的值為「abc1」,則 有效的金鑰為 targeturl__abc1__weight

無論您要取得、更新或刪除鍵/值項目,鍵/值名稱都必須符合 鍵值對應的鍵名稱。請參閱指定並 擷取金鑰名稱以取得指南。

預設 不適用
存在必要性 必填
類型 字串

屬性

下表將說明 <Parameter> 元素的屬性:

屬性 說明 預設 存在必要性
參考資料 指定變數名稱,其值包含您指定鍵的確切名稱 每個服務帳戶 不適用 如果開頭和 結尾標記。如果提供常值,不得使用。

&lt;Put&gt;元素

這個外掛程式能將鍵/值組合寫入鍵/值組合,無論鍵/值對應是否經過加密或 未加密。如果金鑰/值對應的mapIdentifier 如果父項元素不存在,系統會自動建立地圖 (未加密)。如果鍵/值 已存在,則鍵/值已新增至該對應中。

如要建立加密金鑰值對應,請使用 Key/Value Maps management API; 或參閱建立及編輯環境鍵/值對應關係 在 UI 中建立限定於環境範圍的加密 KVM。

<Put override="false">         
   <Key>             
      <Parameter ref="mykeyvar"/>         
   </Key>         
   <Value ref="myvalvar1"/>     
</Put>
預設 不適用
存在必要性 如果不是 <Get><Delete>,則為必要欄位 。
類型 不適用

屬性

下表將說明 <Put> 元素的屬性:

屬性 說明 預設 存在必要性
覆寫

如果設為 true,會覆寫鍵的值。

false 選用

&lt;Scope&gt;元素

定義鍵/值對應的無障礙功能邊界。預設範圍為 environment,表示根據預設,地圖項目是由所有 API Proxy 共用 在環境中執行 (例如測試或正式環境)如果將範圍設為 apiproxy,則只有 API Proxy 才能存取鍵/值對應的項目 會將值寫入地圖。

請注意,存取地圖或對應項目時,您必須指定相同的範圍值 建立時間。例如,如果地圖的建立範圍 apiproxy,您必須使用 apiproxy 範圍來擷取其值, 進行變更或刪除項目

<Scope>environment</Scope>
預設 environment
存在必要性 選用
類型 字串
有效值:
  • organization
  • environment
  • apiproxy
  • policy (API Proxy 修訂版本)

&lt;Value&gt;元素

指定鍵的值。您可以將值指定為文字字串,或使用 ref 屬性做為要在執行階段擷取的變數:

<!-- Specify a literal value -->
<Value>literal<Value>

或是:

<!-- Specify the name of variable value to be populated at run time. -->
<Value ref="variable_name"/>

您也可以加入多個 <Value> 元素來指定多部分 值。系統會在執行階段合併值。

在以下範例中,KVM 新增了兩個金鑰:

  • 值為 v1,v2 的鍵 k1
  • 值為 v3,v4 的鍵 k2
<InitialEntries>         
   <Entry>             
      <Key>
         <Parameter>k1</Parameter>
      </Key>
      <Value>v1</Value>
      <Value>v2</Value>     
   </Entry>
   <Entry>
      <Key>
         <Parameter>k2</Parameter>
      </Key>
      <Value>v3</Value>
      <Value>v4</Value>
   </Entry>
</InitialEntries>

在以下範例中,會建立具有兩個值的鍵。假設 名稱為 foo_org,API Proxy 名稱為 bar,環境為 test:

  • 值為 bar,test 的鍵 foo_org
<Put>
    <Key>
        <Parameter ref="organization.name"/>
    </Key>
    <Value ref="apiproxy.name"/>
    <Value ref="environment.name"/>
</Put>
預設 不適用
存在必要性 必填
類型 字串

屬性

下表將說明 <Value> 元素的屬性:

屬性 說明 預設 存在必要性
參考資料 指定變數的名稱,該變數的值包含您要設定的鍵/值 設定。 不適用 如果開頭和 結尾標記。如果提供常值,不得使用。

錯誤參考資料

Edge 政策傳回的錯誤格式與「錯誤代碼參考資料」中的說明一致。

本節說明當這項政策觸發錯誤時,傳回的錯誤代碼和錯誤訊息,以及 Edge 設定的錯誤變數。 如果您正在開發錯誤規則來處理錯誤,請務必瞭解這項資訊。詳情請參閱「政策錯誤須知」和「處理錯誤」。

執行階段錯誤

執行政策時,可能會發生這些錯誤。

錯誤代碼 HTTP 狀態 原因 修正
steps.keyvaluemapoperations.SetVariableFailed 500

如果您嘗試從加密的金鑰值對應擷取值,並將值設為名稱不含前置字串 private 的變數,就會發生這個錯誤。基於基本安全性用途在偵錯期間必須使用前置字串,API Proxy 追蹤和偵錯工作階段皆會隱藏已加密的值。

steps.keyvaluemapoperations.UnsupportedOperationException 500

如果鍵/值對應作業政策中的 mapIdentifier 屬性設為空白字串,就會發生這個錯誤。

部署錯誤

若您部署包含這項政策的 Proxy,就可能會發生這些錯誤。

錯誤名稱 原因 修正
InvalidIndex 如果鍵值對應作業政策的 <Get> 元素中指定的 index 屬性為零或負數,API Proxy 部署就會失敗。索引從 1 開始,因此系統會將零或負整數的索引視為無效。
KeyIsMissing 如果金鑰值對應作業政策的 <InitialEntries> 元素 <Entry> 下方缺少 <Key> 元素,或是缺少 <Parameter> 元素,就會發生這個錯誤。<Key>
ValueIsMissing 在鍵/值對應作業政策的 <InitialEntries> 元素的 <Entry> 元素下方,缺少 <Value> 元素,就會發生這個錯誤。

結構定義

使用須知

如需鍵/值對應關係的總覽,請參閱「使用鍵/值對應關係」。

鍵/值對應儲存區可為以下格式的資料提供輕量的持續性機制: 鍵/值組合在執行階段,您可以透過政策或程式碼存取這些內容。地圖包含任何 格式為 key=value 的任意資料。

例如 localhost=127.0.0.1zip_code=94110first_name=felix。在第一個範例中,localhost127.0.0.1。每個鍵/值組合都會儲存為鍵中的項目 。鍵/值對應可以儲存許多項目,

以下示範如何使用鍵/值對應。假設您需要儲存一份 IP 位址清單 與多個後端相關聯 環境您可以建立一個名為 ipAddresses 的鍵/值對應,其中包含 提供鍵/值組合清單。舉例來說,這個 JSON 可以代表這類地圖:

{
  "entry" : [ {
    "name" : "Development",
    "value" : "65.87.18.18"
  }, {
    "name" : "Staging",
    "value" : "65.87.18.22"
  } ],
  "name" : "ipAddresses"
}

您可以使用這個結構建立 IP 位址儲存庫,供政策使用 在執行階段強制執行 IP 許可清單或拒絕清單,以動態方式選取後端目標 位址等。一般而言,KeyValueMapOperations 政策的用途是儲存或擷取 需要在多項要求/回應交易中重複使用的長效資訊。

鍵/值對應可透過 KeyValueMapOperations 政策進行操作,或直接透過 Apigee Edge Management API。如要進一步瞭解 Organization key/value maps API API,請參閱管理 API 參考資料。您可以使用 API 例如將大型資料集上傳至鍵/值儲存庫,或建立指令碼以管理鍵/值 對應項目。您必須先使用 API 建立鍵/值對應,才能使用 KeyValueMapOperations 政策。

指定及擷取鍵名稱

透過 <Parameter><Value> 元素,您可以 指定常值 (其中值介於左右標記之間) 或使用 ref 屬性,用來指定變數名稱,該變數值應用於 執行階段。

「參數」元素可用來識別 ,以及您要擷取或刪除的金鑰名稱。以下是兩個範例。 第一個會指定索引鍵名稱,後者則使用變數指定金鑰名稱。 我們假設您使用以下項目在 KVM 中建立金鑰:

<Parameter>key_name_literal</Parameter>
<Parameter ref="key.name.variable"/>

在第一個例項中,「key_name_literal」的常值儲存在 KVM 中 名稱。在第二個例項中,key.name.variable 中的所有值都會變成 KVM 中金鑰的名稱舉例來說,如果 key.name.variable 包含 值為「foo」,鍵的名稱會是「foo」。

當您想透過 GET 作業擷取鍵和鍵/值 (或使用 DELETE 作業),<Parameter>設定必須符合 KVM 中的金鑰名稱。適用對象 舉例來說,如果 KVM 中的金鑰名稱為「foo」,您可以使用 <Parameter>foo</Parameter>,或是指定含有 值「foo」,例如:<Parameter ref="variable.containing.foo"/>

相關主題