マルチバリアント機能フラグルールについて - AWS AppConfig

マルチバリアント機能フラグルールについて

機能フラグバリアントを作成するときは、そのバリアントのルールを指定します。ルールは、コンテキスト値を入力として受け取り、ブール値を出力として生成する式です。例えば、アカウント ID で識別されるベータユーザーのフラグバリアントを選択するルールを定義して、ユーザーインターフェイスの更新をテストできます。このシナリオでは、次の操作を行います。

  1. UI Refresh という新しい機能フラグ設定プロファイルを作成します。

  2. ui_refresh という新しい機能フラグを作成します。

  3. バリアントを追加するには、作成後に機能フラグを編集します。

  4. BetaUsers という新しいバリアントを作成して有効にします。

  5. リクエストコンテキストのアカウント ID が、新しいベータエクスペリエンスの表示が承認されたアカウント ID のリストにある場合にバリアントを選択する BetaUsers のルールを定義します。

  6. デフォルトのバリアントのステータスが無効に設定されていることを確認します。

注記

バリアントは、コンソールで定義されている順序に基づいて順序付きリストとして評価されます。リストの先頭にあるバリアントが最初に評価されます。指定されたコンテキストに一致するルールがない場合、AWS AppConfig はデフォルトバリアントを返します。

AWS AppConfig が機能フラグリクエストを処理する場合、最初に、指定されたコンテキスト (この例では AccountID を含む) を BetaUsers バリアントと比較します。コンテキストが BetaUsers のルールと一致する場合、AWS AppConfig はベータエクスペリエンスの設定データを返します。コンテキストにアカウント ID が含まれていない場合、またはアカウント ID が 123 以外で終わる場合、AWS AppConfig はデフォルトルールの設定データを返します。つまり、ユーザーには本番環境の現在のエクスペリエンスが表示されます。

ルールの定義

バリアントルールは、1 つ以上のオペランドと演算子で構成される式です。オペランドは、ルールの評価中に使用される特定の値です。オペランド値は、リテラル数値や文字列などの静的値、またはコンテキストで見つかった値や別の式の結果などの変数のいずれかにすることができます。「より大きい」などの演算子は、値を生成するオペランドに適用されるテストまたはアクションです。バリアントルール式を有効にするには、「true」または「false」のいずれかを生成する必要があります。

オペランド

説明

文字列

UTF-8 文字のシーケンス。二重引用符で囲まれています。

"apple", "Ḽơᶉëᶆ ȋṕšᶙṁ"

整数

64 ビットの整数値。

-7, 42

浮動小数点数

64 ビットの IEEE-754 浮動小数点値。

3.14, 1.234e-5

タイムスタンプ

日付と時刻の形式に関する W3C ノートで説明されている特定の時刻。

2012-03-04T05:06:07-08:00, 2024-01

ブール値

true または false 値。

true, false

コンテキスト値

ルール評価中にコンテキストから取得される $key 形式のパラメータ化された値。

$country, $userId

比較演算子

演算子 説明

eq

コンテキスト値が指定された値と等しいかどうかを判断します。

(eq $state "Virginia")

gt

コンテキスト値が指定された値より大きいかどうかを判断します。

(gt $age 65)

gte

コンテキスト値が指定された値以上かどうかを判断します。

(gte $age 65)

lt

コンテキスト値が指定された値よりも小さいかどうかを判断します。

(lt $age 65)

lte

コンテキスト値が指定された値以下かどうかを判断します。

(lte $age 65)

論理演算子

演算子 説明

また、

両方のオペランドが true かどうかを判断します。

(and (eq $state "Virginia") (gt $age 65) )

または

少なくとも 1 つのオペランドが true かどうかを判断します。

(or (eq $state "Virginia") (gt $age 65) )

not

式の値を反転します。

(not (eq $state "Virginia"))

カスタム演算子

演算子 説明

begins_with

コンテキスト値が特定のプレフィックスで始まるかどうかを判断します。

(begins_with $state "A")

ends_with

コンテキスト値が特定のプレフィックスで終わるかどうかを判断します。

(ends_with $email "amazon.com")

contains

コンテキスト値に特定の部分文字列が含まれているかどうかを判断します。

(contains $promoCode "WIN")

in

コンテキスト値が定数のリストに含まれるかどうかを判断します。

(in $userId ["123", "456"])

matches

コンテキスト値が特定の正規表現パターンと一致するかどうかを判断します。

(matches in::$greeting pattern::"h.*y")

exists

コンテキストキーに値が提供されたかどうかを判断します。

(exists key:"country")

split

指定されたコンテキスト値の一貫したハッシュ (複数可) に基づいて、トラフィックの特定の割合について true と評価します。

seed はオプションのプロパティであることに注意してください。seed を指定しない場合、ハッシュはローカルで一貫しており、そのフラグに対してトラフィックは一貫して分割されますが、同じコンテキスト値を受け取る他のフラグはトラフィックを異なる方法で分割する可能性があります。seed が指定されている場合、各一意の値によって、機能フラグ、設定プロファイル、および AWS アカウント間でトラフィックが一貫して分割されることが保証されます。

(split pct::10 by::$userId seed::"abc")