Le CEL (Common Expression Language) fournit la logique pour des évaluations sophistiquées des indicateurs basées sur des règles. Elle vous permet de créer des règles de ciblage précises en combinant plusieurs attributs d'utilisateur ou de requête à l'aide d'opérateurs logiques.
Ce guide vous explique comment définir des indicateurs avec des règles CEL et mettre à jour les spécifications d'évaluation.
Prérequis
À vérifier avant de commencer :
- Vous avez terminé le guide de démarrage rapide sur le déploiement de flags de fonctionnalité.
- Un environnement
gcloudconfiguré pour gérer les ressources App Lifecycle Manager.
Opérateurs logiques et syntaxe
CEL est compatible avec les opérateurs logiques standards pour créer des conditions complexes :
&&AND logique||OU logique!NOT logiquein: vérifie si une valeur existe dans une liste
Définir des attributs
Les attributs CEL sont des points de données spécifiques, tels que source.ip, les en-têtes de requête ou les chemins d'accès, utilisés dans les expressions booléennes pour définir des stratégies de sécurité ou de routage.
Tout attribut utilisé dans une condition CEL doit être défini et listé de manière explicite dans le tableau d'attributs de EvaluationSpec. Si un attribut est utilisé dans une condition, mais qu'il est absent de la liste, l'API rejettera la requête.
Créer un attribut
Vous pouvez utiliser App Lifecycle Manager pour créer des attributs CEL.
Pour créer un attribut de plan, exécutez la commande suivante :
gcloud beta app-lifecycle-manager flags attributes create "plan-attr" \
--key="plan" \
--attribute-value-type="STRING" \
--location=global
Pour créer un attribut de pays, exécutez la commande suivante :
gcloud beta app-lifecycle-manager flags attributes create "country-attr" \
--key="country" \
--attribute-value-type="STRING" \
--location=global
Pour créer un attribut de plate-forme, exécutez la commande suivante :
gcloud beta app-lifecycle-manager flags attributes create "platform-attr" \
--key="platform" \
--attribute-value-type="STRING" \
--location=global
Configurer un indicateur avec des règles CEL
Lorsque vous créez ou mettez à jour un indicateur, définissez la logique d'évaluation dans evaluation-spec.
Par exemple, cet extrait active une fonctionnalité pour les clients Premium en Allemagne qui utilisent leur application mobile.
gcloud beta app-lifecycle-manager flags create "advanced-reporting-flag" \
--key="advanced-reporting-flag" \
--flag-value-type=BOOL \
--unit-kind="UNIT_KIND_NAME" \
--location=global \
--evaluation-spec='{
"rules": [{
"id": "premium_mobile_users_in_germany",
"condition": "plan == \"premium\" && country == \"DE\" && platform == \"mobile\"",
"target": "enabled"
}],
"defaultTarget": "disabled",
"attributes": [
"projects/PROJECT_ID/locations/global/flagAttributes/plan-attr",
"projects/PROJECT_ID/locations/global/flagAttributes/country-attr",
"projects/PROJECT_ID/locations/global/flagAttributes/platform-attr"
]
}'
Remplacez PROJECT_ID et UNIT_KIND_NAME par vos valeurs.
Intégration d'applications
Votre application doit injecter les attributs dans le contexte d'évaluation au moment de l'exécution.
Exemple Python :
from openfeature.evaluation_context import EvaluationContext
eval_ctx = EvaluationContext(
targeting_key=user_id,
attributes={
"plan": "premium",
"country": "DE",
"platform": "mobile"
}
)
is_enabled = client.get_boolean_value("advanced-reporting-flag", False, eval_ctx)
Bonnes pratiques
- Ordre d'évaluation : les règles sont évaluées de manière séquentielle. La première règle qui renvoie "true" détermine la valeur du flag.
- Paramètres par défaut sécurisés : si un attribut requis pour une condition est manquant dans un contexte utilisateur, le moteur d'évaluation ignore cette règle spécifique.
- Limites de caractères : la taille des expressions CEL ne doit pas dépasser 4 096 octets (4 ko).
Étapes suivantes
- En savoir plus sur l'architecture multitenant
- En savoir plus sur l'expérimentation et les tests A/B