대기자 만들기

이 페이지에서는 대기자 리소스를 만드는 방법을 설명합니다. 대기자에 대한 자세한 내용은 Runtime Configurator 기초를 참조하세요.

대기자 리소스는 응답을 반환하기 전 특정 성공 또는 실패 조건을 기다립니다. 성공 및 실패 모두 대기자가 특정 경로 프리픽스 아래에 일정 개수의 변수가 생성될 때까지 기다리는 카디널리티 조건을 설정합니다. 변수가 생성된 후에는 대기자가 반환합니다. 그런 후 애플리케이션 코드가 해당 성공 또는 실패에 반응할 수 있습니다. 변수의 현재 상태가 이미 성공 또는 실패 종료 조건과 일치할 경우 대기자는 즉시 성공 또는 실패를 반환합니다.

시작하기 전에

대기자 만들기

대기자를 만들려면 다음 안내를 따르세요.

  1. 대기자에 대한 성공 및 실패(선택사항) 조건을 결정합니다.

    예를 들어 다음 샘플 코드는 성공 및 실패 조건을 설정합니다. 여기서 대기자는 /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
           }
         }
    }
    

    대기자 정의 권장사항:

    • 대기자당 단 하나의 성공 조건 및 하나의 실패 조건만 허용됩니다.
    • 대기자를 경로당 하나로 유지 관리해야 합니다.
    • 실패 조건은 항상 성공 조건 전에 평가됩니다.
    • 조건 사이에 경로 프리픽스를 겹치지 않습니다.
  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."
  }
}

다음 단계