이 페이지에서는 대기자 리소스를 만드는 방법을 설명합니다. 대기자에 대한 자세한 내용은 Runtime Configurator 기초를 참조하세요.
대기자 리소스는 응답을 반환하기 전 특정 성공 또는 실패 조건을 기다립니다. 성공 및 실패 모두 대기자가 특정 경로 프리픽스 아래에 일정 개수의 변수가 생성될 때까지 기다리는 카디널리티 조건을 설정합니다. 변수가 생성된 후에는 대기자가 반환합니다. 그런 후 애플리케이션 코드가 해당 성공 또는 실패에 반응할 수 있습니다. 변수의 현재 상태가 이미 성공 또는 실패 종료 조건과 일치할 경우 대기자는 즉시 성공 또는 실패를 반환합니다.
시작하기 전에
- 이 가이드의 명령줄 예시를 사용하려면 'gcloud' 명령줄 도구를 설치합니다.
- 이 가이드의 API 예시를 사용하려면 API 액세스를 설정합니다.
- Runtime Configurator 기초를 읽습니다.
- RuntimeConfig 리소스 만들기 및 삭제를 읽습니다.
- 데이터 설정 및 가져오기를 읽습니다.
대기자 만들기
대기자를 만들려면 다음 안내를 따르세요.
대기자에 대한 성공 및 실패(선택사항) 조건을 결정합니다.
예를 들어 다음 샘플 코드는 성공 및 실패 조건을 설정합니다. 여기서 대기자는
/status/success
아래의 경로 수가 3개이면 성공을 반환하고/status/failure
아래의 경로 수가 2개이면 실패를 반환합니다.{ 'name': 'projects/[PROJECT_ID]/configs/[CONFIG_NAME]/waiters/[WAITER_NAME]', 'timeout': '360s', 'success': { 'cardinality': { 'path': '/status/success', 'number': 3 } }, 'failure': { 'cardinality': { 'path': '/status/failure', 'number': 2 } } }
대기자 정의 권장사항:
- 대기자당 단 하나의 성공 조건 및 하나의 실패 조건만 허용됩니다.
- 대기자를 경로당 하나로 유지 관리해야 합니다.
- 실패 조건은 항상 성공 조건 전에 평가됩니다.
- 조건 사이에 경로 프리픽스를 겹치지 않습니다.
대기자를 만듭니다.
Deployment Manager
Deployment Manager에서 대기자를 만들려면 대기자 유형을 지정합니다.
runtimeconfig.v1beta1.waiter
대기자 속성에서
name
,location
,timeout
과 대기자의 종료 조건을 제공합니다.- name: [NAME] type: runtimeconfig.v1beta1.waiter properties: parent: $(ref.[CONFIG_NAME].name) waiter: [WAITER_NAME] timeout: [TIMEOUT_SECS] success: cardinality: path: [SUCCESS_PATH_PREFIX] number: [SUCCESS_NUMBER]
각 항목의 의미는 다음과 같습니다.
[NAME]
은 리소스 이름입니다.[CONFIG_NAME]
은 이 요청의 구성 리소스입니다.[WAITER_NAME]
은 이 대기자의 이름입니다.[TIMEOUT_SECS]
는 대기자가 시간 초과되기 전까지 기다리는 시간(초)입니다. 예를 들어 300초면300s
를 사용합니다.[SUCCESS_PATH_PREFIX]
는 성공 조건을 감시하는 경로 프리픽스입니다.[SUCCESS_NUMBER]
는 성공으로 고려되도록 이 경로 아래에 있는 변수 개수입니다.
gcloud
Google Cloud CLI를 사용해서 다음을 수행합니다.
gcloud beta runtime-config configs waiters create [WAITER_NAME] \ --config-name [CONFIG_NAME] \ --success-cardinality-path [SUCCESS_PATH_PREFIX] \ --success-cardinality-number [SUCCESS_NUMBER] --timeout [TIMEOUT_SECS]
각 항목의 의미는 다음과 같습니다.
[WAITER_NAME]
은 이 대기자의 이름입니다.[CONFIG_NAME]
은 이 요청의 RuntimeConfig 리소스입니다.[SUCCESS_PATH_PREFIX]
는 성공 조건을 감시하는 경로 프리픽스입니다.[SUCCESS_NUMBER]
는 성공으로 고려되도록 이 경로 아래에 있는 변수 개수입니다.[TIMEOUT_SECS]
는 대기자가 시간 초과되기 전까지 기다리는 시간(초)입니다.gcloud CLI는 다음과 같은 응답을 반환합니다.
Created [https://runtimeconfig.googleapis.com/v1beta1/projects/[PROJECT_ID]/configs/[CONFIG_NAME]/waiters/example-waiter].
대기자를 만든 후에는 대기자가 적용 가능한 리소스 중 하나를 반환할 때까지 도구가 관련 작업 리소스를 폴링합니다.
이
gcloud
명령어의 전체 참조는runtime-config configs waiters
참조 문서를 확인하세요.
API
API에서 다음 URI에
POST
를 요청합니다.https://runtimeconfig.googleapis.com/v1beta1/projects/[PROJECT_ID]/configs/[CONFIG_NAME]/waiters
각 항목의 의미는 다음과 같습니다.
[PROJECT_ID]
는 이 요청의 프로젝트 ID입니다.[CONFIG_NAME]
은 이 요청의 구성 이름입니다.
요청 페이로드에는 대기자 이름, 성공 조건, 시간 제한 기간이 포함되어야 합니다.
{ 'name': 'projects/[PROJECT_ID]/configs/[CONFIG_NAME]/waiters/[WAITER_NAME]', 'timeout': '[TIMEOUT_SEC]', 'success': { 'cardinality': { 'path': '[SUCCESS_PATH_PREFIX]', 'number': '[SUCCESS_NUMBER]' } } }
각 항목의 의미는 다음과 같습니다.
[PROJECT_ID]
는 이 요청의 프로젝트 ID입니다.[CONFIG_NAME]
은 이 요청의 구성 이름입니다.[WAITER_NAME]
은 생성할 대기자 이름입니다.[TIMEOUT_SECS]
는 대기자가 시간 초과되기 전까지 기다리는 시간(초)입니다.[SUCCESS_PATH_PREFIX]
는 성공 조건을 감시하는 경로 프리픽스입니다.[SUCCESS_NUMBER]
는 성공으로 고려되도록 이 경로 아래에 있는 변수 개수입니다.
성공하면 요청은 완료하도록 개발자가 폴링하는 작업 객체 이름을 반환됩니다.
{ "name": "projects/[PROJECT_ID]/[CONFIG_NAME]/operations/waiters/[WAITER_NAME]" }
그런 다음 대기자를 폴링하여 대기자의 반환 시간을 주기적으로 확인합니다.
이 메서드에 대한 자세한 내용은
waiters().create
문서를 참조하세요.
대기자 폴링
대기자를 만든 후에는 관련된 작업 리소스를 폴링하여 대기자가 종료 조건 중 하나를 충족했는지 확인합니다. 대기자가 종료 조건을 충족했거나 타임아웃된 경우 작업은 done
을 반환하고 대기자 결과를 기준으로 응답을 반환합니다.
gcloud
또는 API를 사용하여 대기자를 폴링합니다.
gcloud
Google Cloud CLI를 사용하여 대기자 생성을 요청하면 이 도구는 자동으로 폴링을 수행하고 대기자가 반환될 때까지 기다립니다. 이 도구는 대기자를 폴링하는 동안 다음과 같은 응답을 출력합니다.
Waiting for waiter [WAITER_NAME] to finish...
대기자를 만든 후 이 도구가 대기자를 폴링하지 않도록 하려면 생성 요청에 --async
플래그를 제공합니다.
API
REST API에서 다음 URI에 대해 GET
요청을 수행하여 대기자 작업의 상태를 가져옵니다.
https://runtimeconfig.googleapis.com/v1beta1/projects/[PROJECT_ID]/configs/[CONFIG_NAME]/operations/waiters/[WAITER_NAME]
각 항목의 의미는 다음과 같습니다.
[PROJECT_ID]
는 이 요청의 프로젝트 ID입니다.[CONFIG_NAME]
은 이 요청의 구성 이름입니다.[WAITER_NAME]
은 폴링할 대기자 이름입니다.
작업이 계속 진행 중이면 API는 상태 없이 다음과 같은 응답을 반환합니다.
{
"name": "projects/[PROJECT_NAME]/configs/[CONFIG_NAME]/operations/waiters/[WAITER_NAME]"
}
작업이 완료되면 작업은 done
으로 표시되고 대기자 응답 섹션에 설명된 응답 중 하나를 반환합니다.
이 메서드에 대한 자세한 내용은 waiters().create
문서를 참조하세요.
대기자 응답
성공 종료 조건
대기자가 성공 종료 조건을 충족한 경우, 작업이 대기자 리소스를 반환합니다.
{
"name": "projects/[PROJECT_NAME]/configs/[CONFIG_NAME]/operations/waiters/[WAITER_NAME]",
"done": true,
"response": {
"@type": "type.googleapis.com/google.cloud.runtimeconfig.v1beta1.Waiter",
"name": "projects/[PROJECT_NAME]/configs/[CONFIG_NAME]/waiters/[WAITER_NAME]",
"timeout": "360.000s",
"failure": {
"cardinality": {
"path": "[SUCCESS_PATH_PREFIX]",
"number": "[SUCCESS_NUMBER]"
}
},
"success": {
"cardinality": {
"path": "[FAILURE_PATH_PREFIX]",
"number": [FAILURE_NUMBER]
}
},
"createTime": "2016-04-12T18:02:13.316695490Z",
"done": true
}
}
실패 조건
대기자가 실패 종료 조건을 충족하거나 시간 초과된 경우, 작업이 오류를 반환합니다.
실패 조건이 충족된 경우
{
"name": "projects/[PROJECT_NAME]/configs/[CONFIG_NAME]/operations/waiters/[WAITER_NAME]",
"done": true,
"error": {
"code": 9,
"message": "Failure condition satisfied."
}
}
대기자 시간이 초과된 경우
{
"name": "projects/[PROJECT_NAME]/configs/[CONFIG_NAME]/operations/waiters/[WAITER_NAME]",
"done": true,
"error": {
"code": 4,
"message": "Timeout expired."
}
}
다음 단계
- Runtime Configurator에 대해 알아봅니다.
- 변수 설정 및 가져오기 방법을 알아봅니다.
- Watcher 특정 변수를 설정합니다.
- RuntimeConfig 리소스를 만들고 삭제합니다.
- v1beta1 참조를 참조합니다.
- Runtime Configurator 할당량을 참조합니다.