Common Expression Language (CEL) fornisce la logica per valutazioni sofisticate dei flag basate su regole. Consente di creare regole di targeting precise combinando più attributi di utenti o richieste utilizzando operatori logici.
Questa guida mostra come definire i flag con le regole CEL e aggiornare le specifiche di valutazione.
Prerequisiti
Prima di iniziare, assicurati di avere:
- Hai completato la guida rapida per il deployment dei flag funzionalità.
- Un ambiente
gcloudconfigurato per gestire le risorse di App Lifecycle Manager.
Operatori logici e sintassi
CEL supporta gli operatori logici standard per creare condizioni complesse:
&&AND logico||OR logico!NOT logicoincontrolla se un valore esiste in un elenco
Definisci gli attributi
Gli attributi CEL sono punti dati specifici, come source.ip, intestazioni delle richieste o percorsi, utilizzati all'interno di espressioni booleane per definire policy di sicurezza o di routing.
Qualsiasi attributo utilizzato in una condizione CEL deve essere definito ed elencato esplicitamente nell'array degli attributi di EvaluationSpec. Se un attributo viene utilizzato in una condizione ma non è presente nell'elenco, l'API rifiuterà la richiesta.
Creare un attributo
Puoi utilizzare App Lifecycle Manager per creare attributi CEL.
Per creare un attributo del piano, esegui il comando:
gcloud beta app-lifecycle-manager flags attributes create "plan-attr" \
--key="plan" \
--attribute-value-type="STRING" \
--location=global
Per creare un attributo paese, esegui il comando:
gcloud beta app-lifecycle-manager flags attributes create "country-attr" \
--key="country" \
--attribute-value-type="STRING" \
--location=global
Per creare un attributo della piattaforma, esegui questo comando:
gcloud beta app-lifecycle-manager flags attributes create "platform-attr" \
--key="platform" \
--attribute-value-type="STRING" \
--location=global
Configurare un flag con regole CEL
Quando crei o aggiorni un flag, definisci la logica di valutazione in evaluation-spec.
Ad esempio, questo snippet attiva una funzionalità per i clienti premium in Germania che utilizzano la loro app 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"
]
}'
Sostituisci PROJECT_ID e UNIT_KIND_NAME con i tuoi valori.
Integrazione di applicazioni
L'applicazione deve inserire gli attributi nel contesto di valutazione in fase di runtime.
Esempio 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)
Best practice
- Ordine di valutazione:le regole vengono valutate in sequenza. La prima regola che restituisce true determina il valore del flag.
- Impostazioni predefinite sicure:se in un contesto utente manca un attributo obbligatorio per una condizione, il motore di valutazione ignorerà la regola specifica.
- Limiti di caratteri:le espressioni CEL possono avere una dimensione massima di 4096 byte (4 kB).
Passaggi successivi
- Scopri di più sull'architettura multi-tenant.
- Scopri di più su Experimentation e sui test A/B.