다중 변형 기능 플래그 규칙 이해 - AWS AppConfig

다중 변형 기능 플래그 규칙 이해

기능 플래그 변형을 생성할 때 해당 변형에 대한 규칙을 지정해야 합니다. 규칙은 컨텍스트 값을 입력으로 받아 부울 결과를 출력으로 생성하는 표현식입니다. 예를 들어 베타 사용자(계정 ID로 식별됨)에 대한 플래그 변형을 선택하는 규칙을 정의하여 사용자 인터페이스 새로 고침을 테스트할 수 있습니다. 이 시나리오의 경우 다음을 수행합니다.

  1. UI 새로 고침이라는 새로운 기능 플래그 구성 프로필을 생성합니다.

  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는 기본 규칙에 대한 구성 데이터를 반환합니다. 이 경우 사용자는 현재 프로덕션 환경을 보게 됩니다.

규칙 정의

변형 규칙은 하나 이상의 피연산자와 연산자로 구성된 표현식입니다. 피연산자는 규칙 평가 중에 사용되는 특정 값입니다. 피연산자 값은 리터럴 숫자나 문자열과 같은 정적 값일 수도 있고, 컨텍스트에서 찾은 값이나 다른 표현식의 결과와 같은 가변 값일 수도 있습니다. ‘보다 큼’과 같은 연산자는 피연산자에 적용되어 값을 생성하는 테스트 또는 동작입니다. 변형 규칙 표현식이 유효하려면 ‘true’ 또는 ‘false’를 생성해야 합니다.

피연산자

유형 설명

String

큰따옴표로 묶인 UTF-8 문자 시퀀스입니다.

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

Integer

64비트 정수 값입니다.

-7, 42

Float

64비트 IEEE-754 부동 소수점 값입니다.

3.14, 1.234e-5

Timestamp

날짜 및 시간 형식에 대한 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)

논리 연산자

연산자 설명

and

두 피연산자가 모두 true인지 여부를 결정합니다.

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

or

피연산자 중 하나 이상이 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")