一般運算語言 (CEL) 提供邏輯,可根據規則評估複雜的旗標。您可以結合多個使用者或要求屬性,並使用邏輯運算子建立精確的指定規則。
本指南說明如何使用 CEL 規則定義旗標,以及更新評估規格。
必要條件
開始前,請先確認下列事項:
- 已完成部署功能旗標快速入門導覽課程。
- 設定
gcloud環境來管理 App Lifecycle Manager 資源。
邏輯運算子和語法
CEL 支援標準邏輯運算子,可建構複雜條件:
&&邏輯 AND||邏輯 OR!邏輯 NOTin檢查清單中是否有值
定義屬性
CEL 屬性是特定的資料點,例如 source.ip、要求標頭或路徑,用於布林運算式中,定義安全性或轉送政策。
CEL 條件中使用的任何屬性都必須明確定義,並列在 EvaluationSpec 的屬性陣列中。如果屬性用於條件中,但清單中沒有該屬性,API 會拒絕要求。
建立屬性
您可以使用 App Lifecycle Manager 建立 CEL 屬性。
如要建立方案屬性,請執行下列指令:
gcloud beta app-lifecycle-manager flags attributes create "plan-attr" \
--key="plan" \
--attribute-value-type="STRING" \
--location=global
如要建立國家/地區屬性,請執行下列指令:
gcloud beta app-lifecycle-manager flags attributes create "country-attr" \
--key="country" \
--attribute-value-type="STRING" \
--location=global
如要建立平台屬性,請執行下列指令:
gcloud beta app-lifecycle-manager flags attributes create "platform-attr" \
--key="platform" \
--attribute-value-type="STRING" \
--location=global
使用 CEL 規則設定旗標
建立或更新旗標時,請在 evaluation-spec 中定義評估邏輯。
舉例來說,這段程式碼片段會為德國的付費客戶啟用行動應用程式功能。
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"
]
}'
將 PROJECT_ID 和 UNIT_KIND_NAME 替換為您的值。
Application Integration
應用程式必須在執行階段將屬性插入評估環境。
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)
最佳做法
- 評估順序:系統會依序評估規則。第一個評估結果為 true 的規則會決定旗標的值。
- 安全預設值:如果使用者情境缺少條件的必要屬性,評估引擎會略過該特定規則。
- 字元限制:CEL 運算式的上限為 4,096 個位元組 (4 KB)。
後續步驟
- 瞭解多租戶架構。
- 瞭解實驗和 A/B 測試。