Question

Je voudrais utiliser KeyValueMaps pour stocker des valeurs simples, mais les clés que je dois utiliser seraient calculées au moment de l'exécution.Par exemple, dans mes « InitialEntries », je veux faire quelque chose comme ceci :

<KeyValueMapOperations async="false" continueOnError="false" enabled="true" name="Sandbox-Read-Count">
    <DisplayName>Sandbox - Read Count</DisplayName>
    <FaultRules/>
    <Properties/>
    <ExclusiveCache>false</ExclusiveCache>
    <ExpiryTimeInSecs>-1</ExpiryTimeInSecs>
    <InitialEntries>
        <Entry>
            <Key>
                <Parameter>{variable}.sandbox.calls</Parameter>
            </Key>
            <Value>0</Value>
        </Entry>
    </InitialEntries>
    <Scope>apiproxy</Scope>
</KeyValueMapOperations>

Cependant, ce faisant, j'obtiens une erreur lorsque j'essaie d'enregistrer la stratégie :

Error while Uploading file for API Test.
messaging.config.beans.InvalidBundle. Errors:[Entity : policy-Sandbox-Read-Count, Invalid Key Names For Entries: [{apikey}.sandbox.calls];]

Est-il possible d'utiliser des valeurs calculées dans la stratégie KeyValueMap ?Y a-t-il une syntaxe différente que je devrais utiliser ?

Était-ce utile?

La solution

J'ai enquêté là-dessus.Ce qui se passe, c'est lorsque vous enregistrez le proxy avec InitialEntries dans le KVM de portée API, le KVM est immédiatement créé avec les entrées initiales.Par conséquent, il n’existe aucun moyen d’utiliser des variables d’exécution, car l’amorçage du KVM a eu lieu avant l’exécution du proxy.

Vous n'avez pas utilisé le mapIdentifier champ dans votre élément KeyValueMapOperations (regardez le Exemple de KeyValueMap PUT dans la documentation Apigee), le KVM que vous créeriez serait donc nommé kvmap.

Vous pouvez utiliser ce qui suit appel API de gestion pour obtenir une liste des KVM et de leur contenu pour un apiproxy donné :

GET https://api.enterprise.apigee.com/v1/o/{org}/apis/{apiname}/keyvaluemaps?expand=true

Authorization: Basic {base64 username:password}

Depuis le InitialEntries n'est utilisée que lorsque le proxy est chargé pour la première fois avec succès (même si vous modifiez la section InitialEntries et redéployez, aucune modification ne sera apportée si le KVM de ce nom existe déjà), je pense que l'utilité de la section InitialEntries la section est plutôt limitée.Je recommanderais d'amorcer manuellement vos KVM à l'aide du API de gestion pour initialiser le KVM:

PUT https://api.enterprise.apigee.com/v1/o/{org}/apis/{apiname}/keyvaluemaps

Authorization: Basic {base64 username:password}
Content-Type: application/json

{
  "entry" : [ {
    "name" : "key",
    "value" : "0"
  } ],
  "name" : "{kvmName}"
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top