이 가이드에서는 Cloud Scheduler를 사용하여 워크플로가 특정 일정(이 경우 5분마다)으로 실행되도록 Workflows를 자동으로 실행하는 방법을 보여줍니다.
런타임 인수를 수신하는 워크플로 만들기
워크플로 정의는 YAML 또는 JSON 형식으로 작성할 수 있는 Workflows 구문을 사용하여 기술되는 일련의 단계들로 구성됩니다. 워크플로를 만든 후 실행에 사용할 수 있도록 워크플로를 배포합니다.
콘솔
- Google Cloud 콘솔에서 Workflows 페이지로 이동합니다. 
- 만들기를 클릭합니다. 
- 새 워크플로의 이름으로 - myFirstWorkflow를 입력합니다.
- 리전에 us-central1을 선택합니다. 
- 이전에 생성한 서비스 계정을 선택합니다. 
- 다음을 클릭합니다. 
- 워크플로 편집기에서 다음 워크플로 정의를 입력합니다. - YAML- main: params: [args] steps: - step1: assign: - outputVar: ${"Hello, " + args.firstName + " " + args.lastName + "!"} - step2: return: ${outputVar} - JSON- { "main": { "params": [ "args" ], "steps": [ { "step1": { "assign": [ { "outputVar": "${\"Hello \" + args.firstName + \" \" + args.lastName}" } ] } }, { "step2": { "return": "${outputVar}" } } ] } } - 이 워크플로는 런타임 인수로 전달하는 이름 및 성에 해당하는 사람에 대해 'Hello' 인사를 반환합니다. 
- 배포를 클릭합니다. 
gcloud
- 터미널을 엽니다.
- 다음 워크플로 정의를 YAML 또는 JSON 파일(예: myFirstWorkflow.yaml 또는 myFirstWorkflow.json)로 저장합니다. - YAML- main: params: [args] steps: - step1: assign: - outputVar: ${"Hello, " + args.firstName + " " + args.lastName + "!"} - step2: return: ${outputVar} - JSON- { "main": { "params": [ "args" ], "steps": [ { "step1": { "assign": [ { "outputVar": "${\"Hello \" + args.firstName + \" \" + args.lastName}" } ] } }, { "step2": { "return": "${outputVar}" } } ] } } - 이 워크플로는 런타임 인수로 전달하는 이름 및 성에 해당하는 사람에 대해 'Hello' 인사를 반환합니다. 
- 다음 명령어를 입력하여 워크플로를 배포합니다. - gcloud workflows deploy myFirstWorkflow \ --source=myFirstWorkflow.yaml_OR_json \ --service-account=sa-name@PROJECT_ID.iam.gserviceaccount.com - 이전에 만든 Workflows 정의 파일의 형식에 따라 - yaml_OR_json을- yaml또는- json으로 바꿉니다.
워크플로 예약
이전에 만든 서비스 계정을 사용하여 워크플로를 트리거하는 Cloud Scheduler 작업을 만듭니다.
콘솔
- Google Cloud 콘솔에서 Cloud Scheduler 페이지로 이동합니다. 
- 작업 만들기를 클릭합니다. 
- 이름을 - my-workflow-job로 설정합니다.
- 빈도에 다음을 입력합니다. - */5 * * * *
- 시간대에 국가와 시간대를 선택합니다. - 예를 들어 미국과 로스앤젤레스 또는 태평양 일광 절약 표준시(PDT)를 선택합니다. 
- 계속을 클릭합니다. 
- 대상 유형에 HTTP를 선택합니다. 
- URL에 다음을 입력합니다. - https://workflowexecutions.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/workflows/myFirstWorkflow/executions 
- HTTP 메서드를 기본값인 POST로 둡니다. 
- 다음 두 개의 HTTP 헤더를 추가합니다. - 이름: Content-Type및 값:application/octet-stream
- 이름: User-Agent및 값:Google-Cloud-Scheduler
 
- 이름: 
- 본문에 다음을 입력합니다. - {"argument": "{\"firstName\":\"Sherlock\", \"lastName\":\"Holmes\"}"}- 이는 워크플로 인수의 JSON 인코딩을 전달합니다. 이 경우 이름은 'Sherlock', 성은 'Holmes'입니다. 문자열 내의 큰따옴표는 백슬래시(\)로 이스케이프 처리됩니다. 
- 인증 헤더에 OAuth 토큰 추가를 선택합니다. 
- 이전에 만든 서비스 계정을 입력합니다. - sa-name@PROJECT_ID.iam.gserviceaccount.com - https://www.googleapis.com/auth/cloud-platform의 기본값이 사용되므로 범위를 지정할 필요가 없습니다.
- 다른 기본값을 그대로 두고 만들기를 클릭합니다. 
gcloud
다음 명령어를 입력하여 my-workflow-job이라는 작업을 예약합니다.
gcloud scheduler jobs create http my-workflow-job \
    --schedule="*/5 * * * *" \
    --uri="https://workflowexecutions.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/workflows/myFirstWorkflow/executions" \
    --message-body="{\"argument\": \"{\\\"firstName\\\":\\\"Sherlock\\\", \\\"lastName\\\":\\\"Holmes\\\"}\"}" \
    --time-zone="America/Los_Angeles" \
    --oauth-service-account-email="sa-name@PROJECT_ID.iam.gserviceaccount.com"간격은 unix-cron 형식으로 정의됩니다.
message-body 플래그는 워크플로 인수의 JSON 인코딩을 전달하는 데 사용됩니다. 이 경우 이름은 'Sherlock', 성은 'Holmes'입니다. 문자열 내의 큰따옴표는 백슬래시(\)로 이스케이프 처리됩니다.
이제 워크플로가 5분마다 실행됩니다.
gcloud scheduler 플래그에 대한 자세한 내용과 워크플로 실행 중 각 호출 단계가 로깅되도록 호출 로깅을 적용하는 방법은 워크플로 예약과 gcloud 참조를 확인하세요.
작업 실행 및 결과 확인
콘솔
- Google Cloud 콘솔에서 Cloud Scheduler 페이지로 이동합니다. - 작업이 표시되지 않는 경우 페이지를 새로고침해야 할 수 있습니다. 
- 이름이 - my-workflow-job인 작업에서 지금 실행을 클릭합니다.- 결과 값이 성공으로 업데이트됩니다. 
- Google Cloud 콘솔에서 Workflows 페이지로 이동합니다. 
- 워크플로 목록에서 myFirstWorkflow를 클릭하여 세부정보 페이지를 엽니다. - 워크플로의 실행 상태가 성공이어야 합니다. 
- 워크플로의 실행 ID를 클릭하여 세부정보 페이지를 열고 출력 창에서 워크플로 결과를 확인합니다. - 'Hello, Sherlock Holmes!'가 출력되어야 합니다. 
gcloud
- Cloud Scheduler 작업을 실행하여 워크플로를 실행합니다. - gcloud scheduler jobs run my-workflow-job 
- 워크플로의 실행 ID를 검색합니다. - gcloud workflows executions list myFirstWorkflow - 출력은 실행 ID가 굵게 표시된 다음과 유사해야 합니다. - projects/316710615161/locations/us-central1/workflows/myFirstWorkflow/executions/138b31e1-f3bb-4ba7-a6da-008d0cb4a320 
- 워크플로의 실행 결과를 검색합니다. - gcloud workflows executions describe EXECUTION_ID --workflow myFirstWorkflow - EXECUTION_ID를 이전 단계에서 반환된 실행 ID로 바꿉니다.- 다음과 유사한 결과가 출력됩니다. - argument: '{"firstName":"Sherlock","lastName":"Holmes"}' endTime: '2021-09-09T15:15:00.869350639Z' name: projects/316710615161/locations/us-central1/workflows/myFirstWorkflow/executions/138b31e1-f3bb-4ba7-a6da-008d0cb4a320 result: '"Hello, Sherlock Holmes!"' startTime: '2021-09-09T15:15:00.839175480Z' state: SUCCEEDED workflowRevisionId: 000001-4f9
수고하셨습니다. 특정 일정에 따라 워크플로를 자동으로 실행하는 Cloud Scheduler 작업을 성공적으로 만들었습니다.