Norme relative a KeyValueMapOperations

Stai visualizzando la documentazione di Apigee Edge.
Consulta la documentazione di Apigee X.
info

Icona Operazioni mappa di coppie chiave-valore nell'interfaccia utente Edge

Cosa

Fornisce l'accesso basato su policy a un archivio di mappe chiave-valore (KVM) disponibile in Apigee Edge. Le coppie chiave/valore possono essere archiviate, recuperate ed eliminate da mappe esistenti denominate configurando i criteri KeyValueMapOperations che specificano le operazioni PUT, GET o DELETE. (Almeno una di queste operazioni deve essere eseguita dalla policy.)

Video

Guarda i seguenti video per saperne di più sui KVM.

Video Descrizione
Perché le mappe chiave-valore? Scopri perché hai bisogno delle KVM e come funzionano.
Crea KVM utilizzando la UI e recupera KVM in fase di runtime Crea una KVM, recupera il relativo valore utilizzando una policy KVM e inserisci il valore nella richiesta API utilizzando le variabili di flusso.
Crea e aggiorna un KVM in fase di runtime dell'API Crea un KVM in fase di runtime dell'API utilizzando un criterio KVM.
Memorizza nella cache KVM per aumentare il rendimento Migliora il rendimento del criterio KVM memorizzando i dati nella cache.
Store encrypted KVM Archivia le informazioni sensibili in KVM in un formato criptato e recupera il valore in fase di runtime utilizzando la policy KVM e le variabili private.
Gestire l'accesso utilizzando l'ambito KVM Limita KVM all'organizzazione, all'ambiente, al proxy API o alla revisione del proxy API utilizzando l'attributo di ambito della policy KVM.
Elimina le voci KVM in fase di runtime dell'API Elimina le voci KVM in fase di runtime dell'API utilizzando l'operazione DELETE della policy KVM.

Esempi

PUT KVM con un valore letterale

Quando viene eseguito il seguente criterio, viene creato un KVM criptato denominato FooKVM, quindi viene creata una chiave denominata FooKey_1 con due valori impostati con le stringhe letterali foo e bar (non impostati con valori estratti dalle variabili). Quando GET la chiave nell'esempio successivo, specifichi un numero di indice per recuperare il valore che ti interessa.

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

Tieni presente che l'ambito è "ambiente". Ciò significa che puoi visualizzare la KVM nella UI di gestione in API > Configurazione ambiente > Mappe chiave-valore. Le KVM mostrate in quella pagina sono tutte limitate all'ambiente selezionato.

GET KVM from a literal

Questa policy esamina la mappa FooKVM dell'esempio precedente, ottiene il secondo valore (index="2") dalla chiave FooKey_1 e lo memorizza in una variabile denominata 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 con una variabile

Un semplice esempio di una mappa chiave-valore utile è un servizio di abbreviazione degli URL. La mappa dei valori chiave potrebbe essere configurata per memorizzare gli URL abbreviati insieme agli URL completi corrispondenti.

Questo esempio di criterio crea una mappa di coppie chiave-valore. Il criterio inserisce una chiave con due valori associati in una mappa chiave/valore denominata "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>

La chiave in questo esempio, urlencoding.requesturl.hashed, è un esempio di variabile personalizzata. L'URL della richiesta con hash viene generato dal codice (ad esempio JavaScript o Java) e poi memorizzato in questa variabile, a cui può accedere il criterio KeyValueMapOperations.

Per ogni chiave, requesturl.hashed, vengono memorizzati due valori:

  • I contenuti della variabile personalizzata denominata urlencoding.longurl.encoded
  • I contenuti della variabile predefinita request.queryparam.url

Ad esempio, quando la policy viene eseguita al runtime, i valori delle variabili potrebbero essere i seguenti:

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

Nel Key-Value Store di Edge verranno generati la seguente mappa chiave/valore e la seguente voce, con ambito limitato al proxy API a cui è collegata la policy:

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

La voce rimarrà finché non verrà eliminata. Le voci dell'archivio chiave/valore sono distribuite tra le istanze di Edge che eseguono il cloud.

GET KVM da una variabile

Un semplice esempio di mappa chiave-valore utile è un servizio di "abbreviazione" degli URL. La mappa dei valori chiave potrebbe essere configurata per memorizzare gli URL abbreviati insieme agli URL completi corrispondenti.

Per recuperare il valore della voce della mappa chiave/valore, ad esempio quella trattata nella scheda PUT di KeyValueMapOperations, configura un criterio per ottenere la mappa chiave-valore:

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

Quando viene eseguita questa policy, se il valore della variabile urlencoding.requesturl.hashed è ed24e12820f2f900ae383b7cc4f2b31c402db1be, la variabile personalizzata denominata urlencoding.shorturl verrà impostata con il valore http://tinyurl.com/38lwmlr.

Ora che i dati sono stati recuperati, altre norme e altri codici possono accedervi estraendo il valore da queste variabili.

GET encrypted value from KVM

Se una mappa chiave-valore è criptata, recupera i valori utilizzando il prefisso "private." nel valore dell'attributo assignTo. In questo esempio, la variabile private.encryptedVar contiene il valore decriptato della chiave foo della mappa chiave-valore. Per informazioni sulla creazione di mappe chiave/valore criptate, consulta gli argomenti "create" dell'API di gestione delle mappe chiave/valore.

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

Ora che i dati sono stati recuperati, altre norme e codice possono accedervi estraendo il valore da questa variabile.


Riferimento elemento

Il riferimento all'elemento descrive gli elementi e gli attributi del criterio 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>

Attributi <KeyValueMapOperations>

L'esempio seguente mostra gli attributi del tag <KeyValueMapOperations>:

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

La tabella seguente descrive gli attributi specifici del tag <KeyValueMapOperations>:

Attributo Descrizione Predefinito Presenza
mapIdentifier

Specifica un identificatore da utilizzare per accedere a una mappa creata da questa policy o nell'interfaccia utente di gestione.

Il nome del KVM è sensibile alle maiuscole con Apigee Edge Public Cloud. Ad esempio, foobar è diverso da FooBar.

Se escludi questo attributo, viene utilizzato un KVM denominato kvmap.

All'interno di un ambito di organizzazione/ambiente/proxy API, puoi utilizzare l'attributo mapIdentifier per specificare il nome della mappa.

N/D Facoltativo

La tabella seguente descrive gli attributi comuni a tutti gli elementi principali del criterio:

Attributo Descrizione Predefinito Presenza
name

Il nome interno del criterio. Il valore dell'attributo name può Deve contenere lettere, numeri, spazi, trattini, trattini bassi e punti. Questo valore non può superare i 255 caratteri.

Se vuoi, puoi utilizzare l'elemento <DisplayName> per etichettare il criterio in l'editor proxy della UI di gestione con un nome diverso in linguaggio naturale.

N/D Obbligatorio
continueOnError

Imposta il valore su false per restituire un errore quando un criterio non viene eseguito. Si tratta di un comportamento previsto per la maggior parte dei criteri.

Imposta su true per fare in modo che l'esecuzione del flusso continui anche dopo un criterio non riesce.

falso Facoltativo
enabled

Imposta il valore su true per applicare il criterio.

Imposta false per disattivare il criterio. Il criterio non verrà applicata anche se rimane collegata a un flusso.

true Facoltativo
async

Questo attributo è obsoleto.

falso Deprecato

&lt;DisplayName&gt; elemento

Da utilizzare in aggiunta all'attributo name per etichettare il criterio in editor proxy della UI di gestione con un nome diverso e in linguaggio naturale.

<DisplayName>Policy Display Name</DisplayName>
Predefinito

N/D

Se ometti questo elemento, il valore dell'attributo name del criterio è in uso.

Presenza Facoltativo
Tipo Stringa

Elemento <Delete>

Elimina la coppia chiave/valore specificata. Deve essere utilizzato almeno uno dei seguenti valori: <Get>, <Put> o <Delete>.

Assicurati di specificare il nome della KVM con l'attributo mapIdentifier nell'elemento principale. Ad esempio:

<Delete>
   <Key>
      <Parameter>key_name_literal</Parameter>
   </Key>
</Delete>
Predefinito N/D
Presenza Obbligatorio se <Get> o <Put> non sono presenti.
Tipo N/D

Elemento <Entry>

Valori iniziali per le mappe chiave-valore, che vengono inseriti nella mappa chiave-valore quando viene inizializzata.

Per Edge for Public Cloud, la dimensione della chiave è limitata a 2 kB. Ad esempio:

<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>
Predefinito N/D
Presenza Facoltativo
Tipo N/D

Elemento <ExclusiveCache>

Deprecato. Utilizza invece l'elemento <Scope>.

Elemento <ExpiryTimeInSecs>

Specifica la durata in secondi dopo la quale Edge aggiorna il valore memorizzato nella cache dal KVM specificato.

Un valore pari a 0 o -1 oppure l'esclusione di questo elemento comporta l'utilizzo del valore predefinito di 300 secondi. Ad esempio:

<ExpiryTimeInSecs>600</ExpiryTimeInSecs>
Predefinito 300 (5 minuti)
Presenza Facoltativo
Tipo Numero intero

Un KVM è un meccanismo di persistenza a lungo termine che archivia chiavi e valori in un database NoSQL. Per questo motivo, la lettura da una KVM in fase di runtime può potenzialmente rallentare le prestazioni del proxy. Per migliorare le prestazioni, Edge dispone di un meccanismo integrato per memorizzare nella cache le chiavi/i valori KVM in memoria durante l'esecuzione. Questo criterio KVM Operations legge sempre dalla cache per le operazioni GET.

L'elemento <ExpiryTimeInSecs> consente di controllare per quanto tempo le chiavi/i valori utilizzati nella policy vengono memorizzati nella cache prima di essere aggiornati nuovamente dal KVM. Tuttavia, esistono alcune differenze tra il modo in cui le operazioni GET e PUT influiscono sulla scadenza della cache.

GET: la prima volta che viene eseguita un'operazione GET KVM, le chiavi/i valori richiesti dalla KVM (il cui nome è specificato nell'attributo mapIdentifier della radice della policy) vengono caricati nella cache, dove rimangono per le successive operazioni GET finché non si verifica una delle seguenti condizioni:

  • Il numero di secondi specificato in <ExpiryTimeInSecs> scade.
    oppure
  • Un'operazione PUT in una policy KVM sovrascrive i valori esistenti (spiegati di seguito).

PUT: un'operazione PUT scrive chiavi/valori nel KVM specificato. Se l'operazione PUT scrive in una chiave già presente nella cache, questa viene aggiornata immediatamente e ora contiene il nuovo valore per il numero di secondi specificato nell'elemento <ExpiryTimeInSecs> del criterio.

Esempio: memorizzazione nella cache di una KVM

  1. Un'operazione GET recupera il valore di "rating", che aggiunge il valore "10" alla cache. Il <ExpiryTimeInSecs> delle norme è 60.
  2. 30 secondi dopo, la policy GET viene eseguita di nuovo e recupera "10" dalla cache.
  3. 5 secondi dopo, un criterio PUT aggiorna il valore di "rating" a "8" e il <ExpiryTimeInSecs> nel criterio PUT è 20. La cache viene aggiornata immediatamente con il nuovo valore, che ora è impostato per rimanere nella cache per 20 secondi. Se il PUT non fosse avvenuto, la cache originariamente compilata dal primo GET esisterebbe ancora per altri 30 secondi, rimanenti dai 60 secondi originali.
  4. 15 secondi dopo, viene eseguito un altro GET e viene recuperato un valore di "8".

Elemento <Get>

Recupera il valore della chiave specificata. Deve essere utilizzato almeno uno dei seguenti valori: <Get>, <Put> o <Delete>.

Assicurati di specificare il nome della KVM con l'attributo mapIdentifier nell'elemento principale.

Puoi includere più blocchi Get nella policy per recuperare più elementi da una KVM.

Predefinito N/D
Presenza Obbligatorio se <Put> o <Delete> non sono presenti.
Tipo N/D

Ottenere un singolo elemento da un KVM

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

Ottenere più elementi da una KVM

Nell'esempio seguente, supponiamo un KVM con le seguenti chiavi e valori. Oltre a memorizzare un elenco aggiornato dei film più popolari di tutti i tempi, il KVM memorizza il nome del regista di tutti i film più importanti.

Chiave Valore
top_movies Princess Bride,The Godfather,Citizen Kane
Citizen Kane Orson Welles
La principessa sposa Rob Reiner
Il padrino Francis Ford Coppola

Ecco una configurazione dei criteri KVM che possiamo utilizzare per recuperare il film più popolare del momento e il nome del suo regista:

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

Quando viene chiamato il proxy API, Edge crea le seguenti variabili che puoi utilizzare nel flusso del proxy API:

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

Attributi

La tabella seguente descrive gli attributi dell'elemento <Get>:

Attributo Descrizione Predefinito Presenza
assignTo

La variabile a cui deve essere assegnato il valore recuperato.

Se la mappa di coppie chiave-valore è criptata, inizia il nome assignTo con "private.". Ad esempio:

<Get assignTo="private.myvar">

La policy genera un errore se provi a recuperare una mappa di valori delle chiavi criptate senza utilizzare il prefisso. Il prefisso, necessario per scopi di sicurezza di base durante il debug, nasconde i valori criptati dalle sessioni di traccia e debug del proxy API.

Per informazioni sulla creazione di mappe chiave-valore criptate, consulta gli argomenti "crea" dell'API di gestione delle mappe chiave/valore e Creazione e modifica delle mappe chiave-valore dell'ambiente.

N/D Obbligatorio
indice

Il numero di indice (in un indice a base 1) dell'elemento da recuperare da una chiave multivalore. Ad esempio, se specifichi index=1, verrà restituito il primo valore e assegnato alla variabile assignTo. Se non viene specificato alcun valore di indice, tutti i valori di questa voce vengono assegnati alla variabile come java.util.List.

Per un esempio, consulta la scheda "Get Encrypted Value from KVM" (Ottieni il valore criptato da KVM) in Samples.

N/D Facoltativo

Elemento <InitialEntries>

Valori iniziali per le mappe chiave-valore, che vengono inseriti nella mappa chiave-valore quando viene inizializzata. Assicurati di specificare il nome della KVM con l'attributo mapIdentifier sull'elemento principale. Ad esempio:

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

Quando utilizzi questo elemento, quando salvi il criterio nell'interfaccia utente di gestione in una versione di cui è stato eseguito il deployment del proxy o esegui il deployment del bundle del proxy API contenente il criterio con questo elemento, le chiavi vengono create automaticamente nel KVM (senza crittografia). Se i valori nel criterio sono diversi dai valori nel KVM, questi ultimi vengono sovrascritti quando viene eseguito il deployment del proxy. Le nuove chiavi/valori vengono aggiunti alla KVM esistente insieme a quelli esistenti.

Le chiavi e i valori compilati da questo elemento devono essere valori letterali. Ad esempio, <Parameter ref="request.queryparam.key"> non è supportato all'interno di questo elemento.

La dimensione della chiave è limitata a 2 KB sia per Edge for the Public Cloud sia per Edge for the Private Cloud. Il valore KVM è limitato a 2 kB.

Per creare un KVM criptato, utilizza l'API di gestione delle mappe chiave/valore.

Predefinito N/D
Presenza Facoltativo
Tipo N/D

Elemento <Key>

Specifica la chiave in una voce della mappa chiave/valore. Una chiave può essere composita, il che significa che è possibile aggiungere più di un parametro per creare la chiave. Ad esempio, userID e role potrebbero essere combinati per creare un key. Ad esempio:

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

Assicurati di consultare l'elemento <Parameter> per informazioni specifiche su come impostare il nome della chiave.

Con Edge for Public Cloud, la dimensione della chiave è limitata a 2 kB. Per saperne di più, consulta Differenze tra l'API Edge per il cloud pubblico e l'API Private Cloud.

Predefinito N/D
Presenza Facoltativo
Tipo N/D

Elemento <Parameter>

Specifica la chiave in una coppia chiave/valore. Questo elemento specifica il nome durante la creazione, l'inserimento, il recupero o l'eliminazione della coppia chiave/valore.

Puoi specificare il nome utilizzando:

  • Una stringa letterale

    <Key>
      <Parameter>literal</Parameter>
    </Key>
  • Una variabile da recuperare in fase di runtime, utilizzando l'attributo ref

    <Key>
      <Parameter ref="variable_name"/>
    </Key>
  • Una combinazione di valori letterali e riferimenti alle variabili

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

Quando l'elemento Key include più elementi Parameter, la stringa della chiave effettiva è la concatenazione dei valori di ogni parametro, uniti da un doppio trattino basso. Ad esempio, nell'esempio precedente, se la variabile apiproxy.name ha il valore "abc1", la chiave effettiva sarà targeturl__abc1__weight.

Che tu stia recuperando, aggiornando o eliminando una voce chiave/valore, il nome della chiave deve corrispondere al nome della chiave nella mappa di coppie chiave-valore. Per le linee guida, vedi Specifica e recupero dei nomi delle chiavi.

Predefinito N/D
Presenza Obbligatorio
Tipo Stringa

Attributi

La tabella seguente descrive gli attributi dell'elemento <Parameter>:

Attributo Descrizione Predefinito Presenza
ref Specifica il nome di una variabile il cui valore contiene il nome esatto della chiave che vuoi creare, ottenere o eliminare. N/D Obbligatorio se non viene fornito alcun valore letterale tra i tag di apertura e chiusura. Vietato se viene fornito un valore letterale.

Elemento <Put>

Scrive una coppia chiave/valore in una mappa di coppie chiave-valore, indipendentemente dal fatto che sia criptata o non criptata. Se la mappa delle coppie chiave-valore specificata nell'attributo mapIdentifier dell'elemento principale non esiste, viene creata automaticamente (senza crittografia). Se la mappa delle coppie chiave-valore esiste già, la chiave/il valore vengono aggiunti.

Per creare una mappa di coppie chiave-valore criptata, utilizza l'API di gestione delle mappe chiave/valore; oppure consulta la sezione Creazione e modifica delle mappe chiave-valore dell'ambiente per creare mappe chiave-valore criptate con ambito ambiente nell'interfaccia utente.

<Put override="false">
   <Key>
      <Parameter ref="mykeyvar"/>
   </Key>
   <Value ref="myvalvar1"/>
</Put>
Predefinito N/D
Presenza Obbligatorio se <Get> o <Delete> non sono presenti.
Tipo N/D

Attributi

La tabella seguente descrive gli attributi dell'elemento <Put>:

Attributo Descrizione Predefinito Presenza
override

Se impostato su true, sostituisce il valore di una chiave.

false Facoltativo

Elemento <Scope>

Definisce il limite di accessibilità per le mappe chiave-valore. L'ambito predefinito è environment, il che significa che, per impostazione predefinita, le voci della mappa sono condivise da tutti i proxy API in esecuzione in un ambiente (ad esempio test o produzione). Se imposti l'ambito su apiproxy, le voci nella mappa di coppie chiave-valore sono accessibili solo dal proxy API che scrive i valori nella mappa.

Tieni presente che quando accedi a una mappa o a una voce della mappa, devi specificare lo stesso valore di ambito utilizzato al momento della creazione della mappa. Ad esempio, se la mappa è stata creata con un ambito di apiproxy, devi utilizzare l'ambito apiproxy quando recuperi i relativi valori, inserisci modifiche o elimini voci.

<Scope>environment</Scope>
Predefinito environment
Presenza Facoltativo
Tipo Stringa
Valori validi:
  • organization
  • environment
  • apiproxy
  • policy (revisione del proxy API)

Elemento <Value>

Specifica il valore di una chiave. Puoi specificare il valore come stringa letterale o, utilizzando l'attributo ref, come variabile da recuperare in fase di runtime:

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

oppure:

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

Puoi anche includere più elementi <Value> per specificare un valore in più parti. I valori vengono combinati in fase di runtime.

Nel seguente esempio, vengono aggiunte due chiavi al KVM:

  • Chiave k1 con valori v1,v2
  • Chiave k2 con valori 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>

Nell'esempio seguente, viene creata una chiave con due valori. Supponiamo che il nome dell'organizzazione sia foo_org, il nome del proxy API sia bar e l'ambiente sia test:

  • Chiave foo_org con valori bar,test
<Put>
    <Key>
        <Parameter ref="organization.name"/>
    </Key>
    <Value ref="apiproxy.name"/>
    <Value ref="environment.name"/>
</Put>
Predefinito N/D
Presenza Obbligatorio
Tipo Stringa

Attributi

La tabella seguente descrive gli attributi dell'elemento <Value>:

Attributo Descrizione Predefinito Presenza
ref Specifica il nome di una variabile il cui valore contiene i valori delle chiavi che vuoi impostare. N/D Obbligatorio se non viene fornito alcun valore letterale tra i tag di apertura e chiusura. Vietato se viene fornito un valore letterale.

Messaggi di errore

Gli errori restituiti dalle policy Edge seguono un formato coerente, come descritto in Riferimento ai codici di errore.

Questa sezione descrive i codici e i messaggi di errore restituiti e le variabili di errore impostate da Edge quando questo criterio attiva un errore. Queste informazioni sono importanti per sapere se si stanno sviluppando regole di errore per gestire gli errori. Per scoprire di più, consulta gli articoli Cosa devi sapere sugli errori relativi alle norme e Gestione degli errori.

Errori di runtime

Questi errori possono verificarsi quando il criterio viene eseguito.

Codice di errore Stato HTTP Causa Correggi
steps.keyvaluemapoperations.SetVariableFailed 500

Questo errore si verifica se tenti di recuperare un valore da una mappa chiave-valore criptata e imposti il valore su una variabile il cui nome non ha il prefisso private. Il prefisso, necessario per motivi di sicurezza di base durante il debug, nasconde i valori criptati dalle sessioni di traccia e di debug del proxy API.

steps.keyvaluemapoperations.UnsupportedOperationException 500

Questo errore si verifica se l'attributo mapIdentifier è impostato sulla stringa vuota nel criterio Operazioni mappa chiave-valore.

Errori di deployment

Questi errori possono verificarsi quando esegui il deployment di un proxy contenente questo criterio.

Nome errore Causa Correggi
InvalidIndex Se l'attributo index specificato nell'elemento <Get> del criterio Operazioni mappa chiave-valore è zero o un numero negativo, il deployment del proxy API non va a buon fine. L'indice inizia da 1, pertanto un indice pari a zero o un numero intero negativo viene considerato non valido.
KeyIsMissing Questo errore si verifica se l'elemento <Key> è completamente mancante o se manca l'elemento <Parameter> all'interno dell'elemento <Key> sotto <Entry> dell'elemento <InitialEntries> del criterio Key Value Map Operations.
ValueIsMissing Questo errore si verifica se l'elemento <Value> non è presente sotto l'elemento <Entry> dell'elemento <InitialEntries> del criterio Key Value Map Operations.

Schemi

Note sull'utilizzo

Per una panoramica delle mappe chiave-valore, consulta Utilizzo delle mappe chiave-valore.

Un archivio di mappe chiave-valore fornisce un meccanismo di persistenza leggero per i dati formattati come coppie chiave/valore. Puoi accedervi in fase di runtime tramite norme o codice. Una mappa contiene dati arbitrari nel formato key=value.

Ad esempio localhost=127.0.0.1, zip_code=94110 o first_name=felix. Nel primo esempio, localhost è una chiave e 127.0.0.1 è un valore. Ogni coppia chiave/valore viene archiviata come voce in una mappa chiave-valore. Una mappa di coppie chiave-valore può memorizzare molte voci.

Ecco un esempio di utilizzo delle mappe chiave-valore. Supponiamo di dover memorizzare un elenco di indirizzi IP associati a vari ambienti di backend. Potresti creare una mappa di coppie chiave-valore chiamata ipAddresses che contiene un elenco di coppie chiave-valore come voci. Ad esempio, questo JSON può rappresentare una mappa di questo tipo:

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

Puoi utilizzare questa struttura per creare un archivio di indirizzi IP che possono essere utilizzati dalle policy in fase di runtime per applicare l'inserimento in lista consentita o bloccata degli IP, per selezionare dinamicamente un indirizzo di destinazione backend e così via. In genere, il criterio KeyValueMapOperations viene utilizzato per memorizzare o recuperare informazioni di lunga durata che devono essere riutilizzate in più transazioni di richiesta/risposta.

Le mappe chiave/valore possono essere manipolate tramite il criterio KeyValueMapOperations o direttamente tramite l'API di gestione Apigee Edge. Per informazioni dettagliate sull'API Mappe chiave/valore dell'organizzazione, consulta il riferimento API di gestione. Puoi utilizzare l'API, ad esempio, per caricare set di dati di grandi dimensioni nel datastore chiave/valore o per creare script per gestire le voci della mappa chiave/valore. Prima di accedervi con il criterio KeyValueMapOperations, devi creare una mappa chiave/valore con l'API.

Specificare e recuperare i nomi delle chiavi

Con gli elementi <Parameter> e <Value>, puoi specificare un valore letterale (dove il valore è compreso tra i tag di apertura e chiusura) o utilizzare l'attributo ref per specificare il nome di una variabile il cui valore deve essere utilizzato in runtime.

L'elemento Parameter merita una menzione speciale, perché determina il nome della chiave che viene creata, nonché il nome della chiave che vuoi recuperare o eliminare. Di seguito sono riportati due esempi. La prima specifica un nome di chiave letteralmente, mentre la seconda specifica un nome di chiave utilizzando una variabile. Supponiamo che per creare le chiavi in un KVM vengano utilizzati i seguenti valori:

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

Nella prima istanza, il valore letterale di "key_name_literal" viene memorizzato nel KVM come nome della chiave. Nella seconda istanza, qualsiasi valore presente in key.name.variable diventa il nome della chiave nel KVM. Ad esempio, se key.name.variable conteneva il valore foo, la chiave si chiamerebbe "foo".

Quando vuoi recuperare la chiave e un valore della chiave con un'operazione GET (o eliminare con un'operazione DELETE), l'impostazione <Parameter> deve corrispondere al nome della chiave nel KVM. Ad esempio, se il nome della chiave nel KVM è "foo", puoi specificare il valore letterale con <Parameter>foo</Parameter> o una variabile che contiene il valore esatto "foo", come in questo esempio: <Parameter ref="variable.containing.foo"/>.

Argomenti correlati