Zasada KeyValueMapOperations

Przeglądasz dokumentację Apigee Edge.
Przejdź do Dokumentacja Apigee X.
informacje.

Ikona operacji na mapie klucz-wartość w interfejsie Edge

Co

Zapewnia oparty na zasadach dostęp do magazynu mapy klucz-wartość (KVM) dostępnego w Apigee Edge. Pary klucz-wartość można przechowywać, pobierać i usuwać z nazwanych istniejących map po skonfigurowaniu Zasady KeyValueMapOperations, które określają operacje PUT, GET i DELETE. (Co najmniej jedna z te operacje muszą być wykonywane przez zasadę).

Filmy

Aby dowiedzieć się więcej o maszynach wirtualnych (KVM), obejrzyj te filmy.

Wideo Opis
Dlaczego wartość klucza Map? Dowiedz się, do czego potrzebujesz maszyn KVM i jak one działają.
Utwórz KVM za pomocą Interfejs użytkownika i pobieranie KVM w czasie działania Utwórz maszynę wirtualną, pobierz jej wartość za pomocą zasady KVM i wstaw ją do interfejsu API za pomocą zmiennych przepływu.
Tworzenie i aktualizowanie KVM w czasie działania interfejsu API Utwórz KVM w środowisku wykonawczym API za pomocą zasady KVM.
Zapisuj KVM w pamięci podręcznej poprawić wyniki Zwiększ wydajność zasady KVM, buforując dane.
Zaszyfruj sklep KVM Przechowuj poufne informacje w KVM w zaszyfrowanym formacie i pobieraj wartości pod adresem środowiska wykonawczego przy użyciu zasady KVM i zmiennych prywatnych.
Zarządzaj dostępem przy użyciu zakresu KVM Ogranicz KVM do organizacji, środowiska, serwera proxy interfejsu API lub wersji serwera proxy interfejsu API przy użyciu KVM zakresu zasad.
Usuń KVM wpisy w czasie działania interfejsu API Usuń wpisy KVM w środowisku wykonawczym API za pomocą operacji DELETE zasady KVM.

Przykłady

PUT KVM z literałem

Gdy zasada jest uruchomiona, tworzy zaszyfrowaną maszynę wirtualną o nazwie FooKVM, a potem tworzy klucz o nazwie FooKey_1 z dwie wartości są ustawione z literałami foo i bar (nie ustawiono przy użyciu wartości wyodrębnionych ze zmiennych). Gdy GET klucz w następnym przykładzie, określasz numer indeksu aby pobrać odpowiednią wartość.

<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>

Zwróć uwagę, że zakres to „środowisko”. Oznacza to, że klucz KVM jest widoczny w sekcji zarządzania w sekcji Interfejsy API > Konfiguracja środowiska > Mapy klucz-wartość. Kamery KVM wyświetlane na tej stronie są ograniczone do wybranego środowiska.

POBIERZ KVM z literału

Ta zasada analizuje mapę FooKVM z poprzedniego przykładu, pobiera drugą wartość (index="2") z klucza FooKey_1 i zapisuje ją w zmiennej pod tytułem 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 ze zmienną

Prostym przykładem przydatnej mapy klucz-wartość jest usługa skracania adresów URL. Mapa par klucz-wartość można skonfigurować do przechowywania skróconych adresów URL wraz z odpowiednimi pełnymi adresami URL.

Ta przykładowa zasada tworzy mapę wartości klucza. Zasada powoduje umieszczenie klucza z 2 powiązanymi wartościami do mapy klucz-wartość o nazwie „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>

Klucz w tym przykładzie (urlencoding.requesturl.hashed) jest przykładem niestandardową. Zaszyfrowany adres URL żądania zostanie wygenerowany przez kod (JavaScript lub Java, w przypadku a następnie zapisany w tej zmiennej, do której zasada KeyValueMapOperations może uzyskać dostęp .

Dla każdego klucza (requesturl.hashed) przechowywane są 2 wartości:

  • Zawartość zmiennej niestandardowej o nazwie urlencoding.longurl.encoded
  • Zawartość wstępnie zdefiniowanej zmiennej request.queryparam.url

Jeśli na przykład zasada jest wykonywana w czasie działania, zmienne mogą wyglądać tak: następujące:

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

Poniższa mapa klucz-wartość i wpis zostaną wygenerowane w magazynie par klucz-wartość Edge i jest ograniczone do serwera proxy interfejsu API, do którego dołączono zasadę:

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

Wpis będzie widoczny, dopóki nie zostanie usunięty. Wpisy w magazynie klucz-wartość są rozłożone między instancji Edge, na których działa chmura.

POBIERZ KVM ze zmiennej

Prostym przykładem przydatnej mapy klucz-wartość jest „skrócenie” adresu URL posprzedażna. Mapa par klucz-wartość można skonfigurować do przechowywania skróconych adresów URL wraz z odpowiednimi pełnymi adresami URL.

Aby pobrać wartość wpisu mapy klucz-wartość, takiego jak ta podana w Karta KeyValueMapOperations PUT, skonfiguruj zasadę, aby pobrać mapę wartości klucza:

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

Jeśli ta zasada jest wykonywana, jeśli wartość parametru Obecna zmienna urlencoding.requesturl.hashed to ed24e12820f2f900ae383b7cc4f2b31c402db1be, zmienna niestandardowa o nazwie Opcja urlencoding.shorturl zostanie ustawiona z wartością http://tinyurl.com/38lwmlr

Gdy dane zostały pobrane, inne zasady i kod mogą uzyskać do nich dostęp przez wyodrębnienie wartości tych zmiennych.

POBIERZ zaszyfrowaną wartość z KVM

Jeśli mapa par klucz-wartość jest zaszyfrowana, pobierz wartości za pomocą funkcji „private.” w wartości atrybutu assignTo. W tym przykładzie zmienna private.encryptedVar przechowuje odszyfrowaną wartość klucza wartości klucza foo. Informacje o tworzeniu zaszyfrowanych map wartości kluczy znajdziesz w sekcji „create” (utwórz) tematy map klucz-wartość do zarządzania interfejsami API.

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

Gdy dane zostały pobrane, inne zasady i kod mogą uzyskać do nich dostęp przez wyodrębnienie wartość tej zmiennej.


Odwołanie do elementu

Odwołanie do elementu opisuje elementy i atrybuty obiektu KeyValueMapOperations zasady:

<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; atrybuty

Ten przykład pokazuje atrybuty tagu <KeyValueMapOperations>:

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

W tabeli poniżej znajdziesz atrybuty właściwe dla tagu <KeyValueMapOperations>:

Atrybut Opis Domyślny Obecność
mapIdentifier

Określa identyfikator używany przy dostępie do mapy utworzonej przez ten element zasadom lub w interfejsie zarządzania.

W Apigee Edge dla Cloud Public Cloud nazwa KVM rozróżniana jest wielkość liter. Na przykład foobar jest czymś innym niż FooBar.

Jeśli wykluczysz ten atrybut, zostanie użyta maszyna wirtualna o nazwie kvmap.

W zakresie organizacji/środowiska/apiproxy możesz używać parametru mapIdentifier, aby określić własną nazwę mapy.

Nie dotyczy Opcjonalnie

W tej tabeli opisano atrybuty wspólne dla wszystkich elementów nadrzędnych zasad:

Atrybut Opis Domyślny Obecność
name

Wewnętrzna nazwa zasady. Wartość atrybutu name może zawierać litery, cyfry, spacje, łączniki, podkreślenia i kropki. Ta wartość nie może przekracza 255 znaków.

Opcjonalnie możesz użyć elementu <DisplayName> do oznaczenia zasady jako edytor proxy interfejsu zarządzania z inną nazwą w języku naturalnym.

Nie dotyczy Wymagane
continueOnError

Ustaw jako false, aby w przypadku niepowodzenia zasady zwracany był błąd. To normalne w przypadku większości zasad.

Ustaw jako true, aby wykonywanie przepływu było kontynuowane nawet po zastosowaniu zasady niepowodzenie.

fałsz Opcjonalnie
enabled

Aby egzekwować zasadę, ustaw wartość true.

Aby wyłączyć zasadę, ustaw wartość false. Te zasady nie będą jest wymuszane nawet wtedy, gdy jest ono połączone z przepływem.

prawda Opcjonalnie
async

Ten atrybut został wycofany.

fałsz Wycofano

&lt;DisplayName&gt; element

Używaj oprócz atrybutu name do oznaczania zasady w edytor proxy interfejsu zarządzania z inną nazwą w języku naturalnym.

<DisplayName>Policy Display Name</DisplayName>
Domyślny

Nie dotyczy

Jeśli pominiesz ten element, atrybut name zasady otrzyma wartość .

Obecność Opcjonalnie
Typ Ciąg znaków

&lt;Delete&gt; element

Usuwa określoną parę klucz-wartość. Co najmniej jeden z tych elementów (<Get>), Należy użyć wartości <Put> lub <Delete>.

Pamiętaj, aby podać nazwę KVM z atrybutem mapIdentifier w elemencie nadrzędnym. Na przykład:

<Delete>
   <Key>
      <Parameter>key_name_literal</Parameter>
   </Key>
</Delete>
Domyślny Nie dotyczy
Obecność Wymagany, jeśli brakuje właściwości <Get> lub <Put>.
Typ Nie dotyczy

&lt;Entry&gt; element

Wartości wyjściowe w przypadku map klucz-wartość, które są wypełniane w mapie par klucz-wartość, gdy jest ona zainicjowano.

W przypadku Edge dla Cloud Public Cloud rozmiar klucza jest ograniczony do 2 KB. Na przykład:

<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>
Domyślny Nie dotyczy
Obecność Opcjonalnie
Typ Nie dotyczy

&lt;ExclusiveCache&gt; element

Rola wycofana. Zamiast niego użyj elementu <Scope>.

&lt;ExpiryTimeInSecs&gt; element

Określa czas (w sekundach), po którym Edge odświeża wartość z pamięci podręcznej wskazanej KVM.

Wartość 0 lub -1 albo wykluczenie tego elementu oznacza, że domyślna wartość 300 sekund to . Na przykład:

<ExpiryTimeInSecs>600</ExpiryTimeInSecs>
Domyślny 300 (5 minut)
Obecność Opcjonalnie
Typ Liczba całkowita

KVM to mechanizm długoterminowej trwałości, który przechowuje klucze i wartości w bazie danych NoSQL. Z tego powodu odczyt z KVM w czasie działania może spowolnić serwer proxy. Poprawa wyników Edge ma wbudowany mechanizm buforowania kluczy i wartości KVM w pamięci podczas działania. Ta zasada operacji KVM zawsze odczytuje z pamięci podręcznej w przypadku operacji GET.

Element <ExpiryTimeInSecs> pozwala kontrolować czas trwania par klucz-wartość używane w tej zasadzie, są przechowywane w pamięci podręcznej, zanim zostaną ponownie odświeżone przez KVM. Pamiętaj jednak: Istnieją pewne różnice między tym, jak operacje GET i PUT wpływają na wygaśnięcie pamięci podręcznej.

GET – przy pierwszym wykonaniu operacji KVM GET żądane klucze/wartości z maszyny wirtualnej (o nazwie określonej w katalogu głównym mapIdentifier zasady) ) są wczytywane do pamięci podręcznej, gdzie pozostają przy kolejnych operacjach GET do momentu zachodzi taka sytuacja:

  • Liczba sekund podana w polu <ExpiryTimeInSecs> wygasa.
    lub
  • Operacja PUT w zasadzie KVM powoduje zastąpienie istniejących wartości (co zostało wyjaśnione poniżej).

PUT – operacja PUT zapisuje klucze/wartości w podanej KVM. Jeśli pole PUT zapisuje w kluczu, który już istnieje w pamięci podręcznej, pamięć podręczna jest natychmiast odświeżana i teraz blokuje nową wartość liczby sekund określonej w ustawieniu zasady <ExpiryTimeInSecs> element.

Przykład: przechowywanie w pamięci podręcznej maszyny wirtualnej

  1. Operacja GET pobiera wartość „rating”, który dodaje wartość „10” do pamięci podręcznej. <ExpiryTimeInSecs> w przypadku tej zasady ma wartość 60.
  2. 30 sekund później zasada GET uruchamia się ponownie i pobiera wartość „10”. z pamięci podręcznej.
  3. 5 sekund później zasada PUT aktualizuje wartość „rating”. do „8”, a <ExpiryTimeInSecs> w zasadzie PUT to 20. Pamięć podręczna jest od razu odświeżany z nową wartością, która jest teraz ustawiona na pozostawanie w pamięci podręcznej przez 20 sekund. (Jeśli funkcja PUT gdyby nie wystąpiła, pamięć podręczna pierwotnie zapełniona przez pierwsze żądanie GET wciąż istniała dla innego 30 sekund (pozostałe 60 sekund w porównaniu z oryginalnymi 60 sekundami).
  4. 15 sekund później wykonuje się inne żądanie GET i pobiera wartość „8”.
.

&lt;Get&gt; element

Pobiera wartość określonego klucza. Co najmniej jeden z tych elementów (<Get>), Należy użyć wartości <Put> lub <Delete>.

Pamiętaj, aby podać nazwę KVM z atrybutem mapIdentifier w nadrzędnym.

Aby pobierać wiele elementów, możesz uwzględnić w zasadzie kilka blokad Get z KVM.

Domyślny Nie dotyczy
Obecność Wymagany, jeśli pola <Put> lub <Delete> nie zawierają wartości obecnie.
Typ Nie dotyczy

Uzyskiwanie pojedynczego elementu z maszyny wirtualnej

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

Pobieranie wielu elementów z maszyny wirtualnej

W poniższym przykładzie załóżmy, że maszyna wirtualna jest zgodna z poniższymi kluczami i wartościami. Dodatkowo do przechowywania bieżącej listy najpopularniejszych filmów wszech czasów, w sklepach KVM reżysera wszystkich największych filmów.

Klucz Wartość
top_movies Księżniczka,Panna chrzestna,Obywatel Kane
Obywatel Kane Orsona Wellesa
Panna młoda księżniczki Robert Reiner
Ojciec chrzestny Francis Ford Coppola

Oto konfiguracja zasad KVM, za pomocą której możemy pobrać najpopularniejszy film oraz imię i nazwisko jego dyrektora:

<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>

Po wywołaniu serwera proxy interfejsu API Edge tworzy , których można używać w procesie serwera proxy interfejsu API:

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

Atrybuty

W tej tabeli opisano atrybuty elementu <Get>:

Atrybut Opis Domyślny Obecność
assignTo

Zmienna, do której należy przypisać pobraną wartość.

Jeśli mapa par klucz-wartość jest zaszyfrowana, nazwę w polu assignTo zacznij od „private.”. Na przykład:

<Get assignTo="private.myvar">

Jeśli spróbujesz pobrać szyfrowaną mapę wartości klucza bez za pomocą prefiksu. Prefiks wymagany ze względu na podstawowe bezpieczeństwo podczas debugowania, ukrywa zaszyfrowane wartości przed śledzeniem serwera proxy interfejsu API i sesjami debugowania.

Informacje o tworzeniu zaszyfrowanych map wartości kluczy znajdziesz w sekcji „create” (utwórz) tematy programu Zarządzanie mapami klucz-wartości API oraz Tworzenie i edytowanie map klucz-wartość środowiska

Nie dotyczy Wymagane
indeks

Numer indeksu (w indeksie opartym na 1) elementu do pobrania z klucza wielowartościowego. Na przykład określenie index=1 spowoduje zwrócenie pierwszej wartości i przypisanie jej do zmienną assignTo. Jeśli nie podasz wartości indeksu, wszystkie wartości że wpis jest przypisany do zmiennej jako java.util.List.

Przykład znajdziesz w sekcji „Get Encrypted Value from KVM” (Uzyskiwanie zaszyfrowanej wartości z KVM). kartę w sekcji Sample.

Nie dotyczy Opcjonalnie

&lt;InitialEntries&gt; element

Wartości wyjściowe dla map klucz-wartość, które są wypełniane w mapie wartości klucza podczas jej zainicjowania. Pamiętaj, aby podać nazwę KVM z włączonym atrybutem mapIdentifier do elementu nadrzędnego. np.:

<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>

Gdy używasz tego elementu i zapisujesz zasadę w interfejsie zarządzania we wdrożonej wersji serwera proxy lub wdrożyć pakiet serwera proxy API zawierający zasadę z tym elementem, kluczami są automatycznie tworzone w KVM (w postaci niezaszyfrowanej). Jeśli wartości w zasadach są różne niż wartości w maszynie wirtualnej, wartości w niej są zastępowane po wdrożeniu serwera proxy. Dowolne nowe klucze/wartości są dodawane do istniejącej KVM obok dotychczasowych par.

Klucze i wartości wypełniane przez ten element muszą być literałami. Na przykład <Parameter ref="request.queryparam.key"> nie jest obsługiwane w tym elemencie.

Rozmiar klucza jest ograniczony do 2 KB w przypadku Edge dla chmury publicznej oraz Krawędź dla prywatnego zasobu. Wartość KVM nie może być większa niż 2 KB.

Aby utworzyć szyfrowaną maszynę wirtualną, użyj interfejsu API do zarządzania mapami kluczy i wartości.

Domyślny Nie dotyczy
Obecność Opcjonalnie
Typ Nie dotyczy

&lt;Key&gt; element

Określa klucz we wpisie mapy klucz-wartość. Klucz może być złożony, co oznacza, że więcej niż można dołączyć 1 parametr, by utworzyć klucz. Na przykład: userID i role można połączyć, aby utworzyć key. Na przykład:

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

Aby dowiedzieć się, jak&lt;Parameter&gt; ustaw nazwę klucza.

W przypadku Edge dla Cloud Public Cloud rozmiar klucza jest ograniczony do 2 KB. Więcej informacji znajdziesz w sekcji Różnice między interfejsem Edge for Public Cloud API a interfejsem Private Cloud API.

Domyślny Nie dotyczy
Obecność Opcjonalnie
Typ Nie dotyczy

&lt;Parameter&gt; element

Określa klucz w parze klucz-wartość. Ten element określa nazwę podczas tworzenia, umieszczania pobierania lub usuwania pary klucz-wartość.

Nazwę możesz podać w ten sposób:

  • Ciąg literału

    <Key>
      <Parameter>literal</Parameter>
    </Key>
    
  • Zmienna, która ma być pobierana w czasie działania przy użyciu atrybutu ref

    <Key>
      <Parameter ref="variable_name"/>
    </Key>
    
  • kombinacji literałów i odwołań do zmiennych.

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

Jeśli element Key zawiera wiele elementów Parametr, skutecznym ciągiem znaków jest konkatenacji wartości każdego parametru połączonych podwójnym podkreśleniem. Na przykład w polu powyższego przykładu, jeśli zmienna apiproxy.name ma wartość „abc1”, to będzie tym kluczem: targeturl__abc1__weight.

Niezależnie od tego, czy pobierasz, aktualizujesz czy usuwasz wpis w parze klucz-wartość, nazwa klucza musi pasować do i nazwy klucza w mapie par klucz-wartość. Patrz sekcja Określanie i pobierania nazw kluczy na potrzeby wytycznych.

Domyślny Nie dotyczy
Obecność Wymagane
Typ Ciąg znaków

Atrybuty

W tej tabeli opisano atrybuty elementu <Parameter>:

Atrybut Opis Domyślny Obecność
odsyłacz Określa nazwę zmiennej, której wartość zawiera dokładną nazwę klucza które chcesz utworzyć, pobrać lub usunąć. Nie dotyczy Wymagane, jeśli między otwarciem a wartością literału nie jest podana wartość literału tagi zamykające. Niedozwolone w przypadku podania wartości literału.

&lt;Put&gt; element

Zapisuje parę klucz-wartość w mapie wartości klucza niezależnie od tego, czy mapa jest szyfrowana, niezaszyfrowane. Jeśli mapa par klucz-wartość określona w atrybucie mapIdentifier w atrybucie element nadrzędny nie istnieje, mapa jest tworzona automatycznie (w postaci niezaszyfrowanej). Jeśli wartość klucza Jeśli mapa już istnieje, zostanie do niej dodany klucz/wartość.

Aby utworzyć zaszyfrowaną mapę wartości klucza, użyj funkcji interfejs API do zarządzania mapami kluczy/wartości, lub zapoznaj się z artykułem Tworzenie i edytowanie map klucz-wartość środowiska. , aby tworzyć zaszyfrowane maszyny wirtualne o zakresie na poziomie środowiska w interfejsie użytkownika.

<Put override="false">         
   <Key>             
      <Parameter ref="mykeyvar"/>         
   </Key>         
   <Value ref="myvalvar1"/>     
</Put>
Domyślny Nie dotyczy
Obecność Wymagany, jeśli pola <Get> lub <Delete> nie zawierają wartości obecnie.
Typ Nie dotyczy

Atrybuty

W tej tabeli opisano atrybuty elementu <Put>:

Atrybut Opis Domyślny Obecność
zastąpić

Jeśli jest ustawiona na true, zastępuje wartość klucza.

false Opcjonalnie

&lt;Scope&gt; element

Określa granicę ułatwień dostępu dla map klucz-wartość. Domyślny zakres to environment, co oznacza, że domyślnie wpisy map są współużytkowane przez wszystkie serwery proxy interfejsów API działające w środowisku (na przykład testowym lub produkcyjnym). Jeśli ustawisz zakres na apiproxy, wpisy w mapie par klucz-wartość są dostępne tylko dla serwera proxy interfejsu API, który zapisuje wartości na mapie.

Pamiętaj, że gdy uzyskujesz dostęp do mapy lub wpisu mapy, musisz podać taką samą wartość zakresu, jaka została przez Ciebie użyta od momentu utworzenia mapy. Jeśli na przykład mapa została utworzona z zakresem apiproxy, przy pobieraniu jego wartości musisz używać zakresu apiproxy, wprowadzanie zmian lub usuwanie wpisów.

<Scope>environment</Scope>
Domyślny environment
Obecność Opcjonalnie
Typ Ciąg znaków
Prawidłowe wartości:
  • organization
  • environment
  • apiproxy
  • policy (wersja serwera proxy interfejsu API)

&lt;Value&gt; element

Określa wartość klucza. Wartość możesz określić w postaci ciągu literału lub za pomocą funkcji atrybutu ref jako zmiennej pobieranej w czasie działania:

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

lub

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

Możesz też uwzględnić wiele elementów <Value>, aby określić wieloczęściowy . Wartości są łączone w czasie działania.

W tym przykładzie do KVM zostaną dodane 2 klucze:

  • Klucz k1 z wartościami v1,v2
  • Klucz k2 z wartościami v3,v4
<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>

W przykładzie poniżej tworzony jest 1 klucz z 2 wartościami. Załóżmy, że organizacja nazwa to foo_org, nazwa serwera proxy interfejsu API to bar, a środowisko to test:

  • Klucz foo_org z wartościami bar,test
<Put>
    <Key>
        <Parameter ref="organization.name"/>
    </Key>
    <Value ref="apiproxy.name"/>
    <Value ref="environment.name"/>
</Put>
Domyślny Nie dotyczy
Obecność Wymagane
Typ Ciąg znaków

Atrybuty

W tej tabeli opisano atrybuty elementu <Value>:

Atrybut Opis Domyślny Obecność
odsyłacz Określa nazwę zmiennej, której wartość zawiera wartości klucza, które chcesz ustawiony. Nie dotyczy Wymagane, jeśli między otwarciem a wartością literału nie jest podana wartość literału tagi zamykające. Niedozwolone w przypadku podania wartości literału.

Informacje o błędzie

Błędy zwracane przez zasady Edge mają spójny format opisany w dokumentacji kodu błędów.

W tej sekcji opisujemy kody błędów i komunikaty o błędach, które są zwracane, oraz zmienne błędów ustawiane przez Edge, gdy ta zasada wywołuje błąd. Te informacje są ważne, jeśli opracowujesz reguły dotyczące błędów do obsługi takich błędów. Więcej informacji znajdziesz w sekcjach Co musisz wiedzieć o błędach zasad i Postępowanie w przypadku błędów.

Błędy w czasie wykonywania

Te błędy mogą wystąpić podczas wykonywania zasady.

Kod błędu Stan HTTP Przyczyna Napraw
steps.keyvaluemapoperations.SetVariableFailed 500

Ten błąd występuje, gdy próbujesz pobrać wartość z zaszyfrowanej mapy par kluczy i ustawić wartość na zmienną, której nazwa nie ma prefiksu private. Prefiks, który jest wymagany do podstawowych działań związanych z bezpieczeństwem podczas debugowania, ukrywa zaszyfrowane wartości w sesjach śledzenia serwera proxy interfejsu API i debugowania.

steps.keyvaluemapoperations.UnsupportedOperationException 500

Ten błąd występuje, jeśli atrybut mapIdentifier jest ustawiony na pusty ciąg znaków w zasadzie operacji mapowania par klucz-wartość.

Błędy wdrażania

Te błędy mogą wystąpić podczas wdrażania serwera proxy zawierającego te zasady.

Nazwa błędu Przyczyna Napraw
InvalidIndex Jeśli atrybut index określony w elemencie <Get> w zasadzie operacji mapowania par klucz-wartość ma wartość zero lub jest liczbą ujemną, wdrożenie serwera proxy interfejsu API się nie uda. Indeks zaczyna się od 1, więc indeks o wartości 0 lub ujemna liczba całkowita jest uznawany za nieprawidłowy.
KeyIsMissing Ten błąd występuje, jeśli całkowicie brakuje elementu <Key> lub brakuje elementu <Parameter> w elemencie <Key> poniżej <Entry> elementu <InitialEntries> zasad operacji mapy klucz-wartość.
ValueIsMissing Ten błąd występuje, jeśli brakuje elementu <Value> pod elementem <Entry> elementu <InitialEntries> zasady operacji na mapie par klucz-wartość.

Schematy

Zastosowanie

Omówienie map par klucz-wartość znajdziesz w artykule Korzystanie z map klucz-wartość.

Magazyn map z par klucz-wartość zapewnia prosty mechanizm trwałości dla danych sformatowanych jako par klucz/wartość. Możesz uzyskać do nich dostęp w czasie działania za pomocą zasad lub kodu. Mapa zawiera: dowolne dane w formacie key=value.

Na przykład localhost=127.0.0.1, zip_code=94110 lub first_name=felix W pierwszym przykładzie localhost to klucz, a także 127.0.0.1 jest wartością. Każda para klucz-wartość jest przechowywana jako wpis w kluczu map wartości. Mapa klucz-wartość może przechowywać wiele wpisów.

Oto przykład użycia map par klucz-wartość. Załóżmy, że musisz przechowywać listę adresów IP powiązane z różnymi backendami w różnych środowiskach. Możesz utworzyć mapę par klucz-wartość o nazwie ipAddresses, która zawiera z listą par klucz/wartość jako wpisów. Na przykład ten plik JSON może reprezentować taką mapę:

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

Możesz użyć tej struktury, aby utworzyć magazyn adresów IP, które mogą być używane przez zasady w czasie działania, aby wymuszać umieszczanie adresów IP na liście dozwolonych lub odrzuconych, aby dynamicznie wybierać cel backendu adresu i tak dalej. Zwykle zasada KeyValueMapOperations jest używana do przechowywania lub pobierania długotrwałe informacje, których trzeba ponownie użyć w wielu transakcjach dotyczących żądań/odpowiedzi.

Mapami klucz-wartość można manipulować za pomocą zasady KeyValueMapOperations lub bezpośrednio za pomocą Interfejs Apigee Edge Management API. Więcej informacji o interfejsie API map klucz-wartość organizacji znajdziesz w dokumentacji interfejsu API do zarządzania. Można używać tego interfejsu API do: Można na przykład przesyłać duże zbiory danych do magazynu par klucz-wartość lub tworzyć skrypty do zarządzania parami klucz-wartość wpisów na mapie. Przed uzyskaniem dostępu do mapy klucz-wartość za pomocą interfejsu API musisz utworzyć mapę klucz-wartość za pomocą Zasada KeyValueMapOperations.

Określanie i pobieranie nazw kluczy

Dzięki elementom <Parameter> i <Value> możesz: określ wartość literału (gdzie znajduje się między tagiem otwierającym a zamykającym) albo użyj wartości w atrybucie ref do określenia nazwy zmiennej, której wartości należy użyć w w środowisku wykonawczym.

Element Parametr zasługuje na specjalną wzmiankę, ponieważ określa nazwę klucza, który oraz nazwa klucza, który chcesz pobrać lub usunąć. Poniżej przedstawiamy 2 przykłady. Pierwszy określa dosłownie nazwę klucza, a drugi – nazwę klucza za pomocą zmiennej. Załóżmy, że do tworzenia kluczy w maszynie wirtualnej KVM używane są:

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

W pierwszej instancji jest to literał „key_name_literal”. jest przechowywany w KVM jako klucz imię i nazwisko. W drugim przypadku dowolna wartość znajdujący się w elemencie key.name.variable staje się jego nazwy w KVM. Jeśli na przykład obiekt key.name.variable zawiera parametr wartość foo, klucz miałby nazwę „foo”.

Gdy chcesz pobrać klucz i ich wartość za pomocą operacji GET (lub usuń ją za pomocą DELETE), parametr <Parametr> musi być zgodne z nazwą klucza w KVM. Dla: Jeśli na przykład nazwa klucza w maszynie wirtualnej to „foo”, możesz określić wartość literału w <Parameter>foo</Parameter> lub określ zmienną, która zawiera dokładne „foo”, na przykład: <Parameter ref="variable.containing.foo"/>.

Powiązane artykuły