워크플로를 실행하면 워크플로와 연결된 현재 워크플로 정의가 실행됩니다.
워크플로 실행 요청에서 런타임 인수를 전달하고 워크플로 변수를 사용하여 이러한 인수에 액세스할 수 있습니다. 자세한 내용은 실행 요청에서 런타임 인수 전달을 참조하세요.
워크플로 실행이 완료되면 기록 및 결과가 제한된 기간 동안 보관됩니다. 자세한 내용은 할당량 및 한도를 참조하세요.
시작하기 전에
조직에서 정의한 보안 제약조건으로 인해 다음 단계를 완료하지 못할 수 있습니다. 문제 해결 정보는 제한된 Google Cloud 환경에서 애플리케이션 개발을 참조하세요.
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
- 워크플로가 다른 Google Cloud 리소스에 액세스하는 경우 올바른 권한이 있는 서비스 계정과 연결되어 있는지 확인합니다. 기존 워크플로와 연결된 서비스 계정에 대해 알아보려면 워크플로의 연결된 서비스 계정 확인을 참조하세요.
리소스를 만들고 서비스 계정을 연결하려면 리소스를 만들 수 있는 권한과 리소스에 연결할 서비스 계정을 가장할 수 있는 권한이 필요합니다. 자세한 내용은 서비스 계정 권한을 참조하세요.
- Google Cloud 콘솔 또는 Google Cloud CLI를 사용하여 워크플로를 배포합니다.
워크플로 실행
클라이언트 라이브러리를 사용하거나 Google Cloud 콘솔에서 gcloud CLI를 사용하거나 Workflows REST API로 요청을 전송하여 워크플로를 실행할 수 있습니다.
콘솔
워크플로를 실행하려면 Google Cloud 콘솔에서 Workflows 페이지로 이동합니다.
Workflows 페이지에서 워크플로를 선택하여 세부정보 페이지로 이동합니다.
워크플로 세부정보 페이지에서 play_arrow 실행을 클릭합니다.
워크플로 실행 페이지의 입력 창에서 실행 전에 워크플로에 전달할 선택적 런타임 인수를 입력할 수 있습니다. 인수는 JSON 형식이어야 합니다(예:
{"animal":"cat"}
). 워크플로에 런타임 인수가 사용되지 않으면 비워 둡니다.필요한 경우 워크플로 실행에 적용할 호출 로깅 수준을 지정하세요. 호출 로그 수준 목록에서 다음 중 하나를 선택합니다.
- 지정되지 않음: 로깅 수준이 지정되지 않았습니다. 이 항목이 기본값입니다. 실행 로그 수준이 지정되지 않은(기본값) 한 실행 로그 수준이 워크플로 로그 수준보다 우선합니다. 이 경우 워크플로 로그 수준이 적용됩니다.
- 오류만: 포착된 모든 예외 또는 예외로 인해 호출이 중지된 경우를 로깅합니다.
- 모든 호출: 하위 워크플로 또는 라이브러리 함수에 대한 모든 호출과 결과를 로깅합니다.
- 로그 없음: 호출 로깅이 없습니다.
실행을 클릭합니다.
실행 세부정보 페이지에서 모든 출력, 실행 ID 및 상태, 워크플로 실행의 현재 또는 최종 단계를 포함한 실행 결과를 볼 수 있습니다. 자세한 내용은 워크플로 실행 결과 액세스를 참조하세요.
gcloud
터미널을 엽니다.
실행하려는 워크플로의 이름을 찾습니다. 워크플로 이름을 모르면 다음 명령어를 입력하여 모든 워크플로를 나열할 수 있습니다.
gcloud workflows list
gcloud workflows run
명령어 또는gcloud workflows execute
명령어를 사용하여 워크플로를 실행할 수 있습니다.워크플로를 실행하고 실행이 완료될 때까지 기다립니다.
gcloud workflows run WORKFLOW_NAME \ --call-log-level=CALL_LOGGING_LEVEL \ --data=DATA
실행 시도가 완료될 때까지 기다리지 않고 워크플로를 실행합니다.
gcloud workflows execute WORKFLOW_NAME \ --call-log-level=CALL_LOGGING_LEVEL \ --data=DATA
다음을 바꿉니다.
WORKFLOW_NAME
: 워크플로의 이름입니다.CALL_LOGGING_LEVEL
(선택사항): 실행 중에 적용할 호출 로깅 수준입니다. 다음 중 하나일 수 있습니다.none
: 로깅 수준이 지정되지 않았습니다. 이 항목이 기본값입니다. 실행 로그 수준이 지정되지 않은(기본값) 한 실행 로그 수준이 워크플로 로그 수준보다 우선합니다. 이 경우 워크플로 로그 수준이 적용됩니다.log-errors-only
: 포착된 모든 예외 또는 예외로 인해 호출이 중지된 경우를 로깅합니다.log-all-calls
: 하위 워크플로 또는 라이브러리 함수와 해당 결과에 대한 모든 호출을 로깅합니다.log-none
: 호출 로깅이 없습니다.
DATA
(선택사항): JSON 형식의 워크플로 런타임 인수입니다.
gcloud workflows execute
를 실행한 경우 워크플로 실행 시도의 고유 ID가 반환되며 출력은 다음과 비슷합니다.To view the workflow status, you can use following command: gcloud workflows executions describe b113b589-8eff-4968-b830-8d35696f0b33 --workflow workflow-2 --location us-central1
실행 상태를 보려면 이전 단계에서 반환된 명령어를 입력합니다.
실행 시도가 성공하면 출력은 워크플로의 성공을 나타내는 state
와 실행의 최종 워크플로 단계를 지정하는 status
를 포함해 다음과 비슷합니다.
argument: '{"searchTerm":"Friday"}' endTime: '2022-06-22T12:17:53.086073678Z' name: projects/1051295516635/locations/us-central1/workflows/myFirstWorkflow/executions/c4dffd1f-13db-46a0-8a4a-ee39c144cb96 result: '["Friday","Friday the 13th (franchise)","Friday Night Lights (TV series)","Friday the 13th (1980 film)","Friday the 13th","Friday the 13th (2009 film)","Friday the 13th Part III","Friday the 13th Part 2","Friday (Rebecca Black song)","Friday Night Lights (film)"]' startTime: '2022-06-22T12:17:52.799387653Z' state: SUCCEEDED status: currentSteps: - routine: main step: returnOutput workflowRevisionId: 000001-ac2
클라이언트 라이브러리
다음 샘플에서는 myFirstWorkflow
워크플로를 이미 배포했다고 가정합니다.
클라이언트 라이브러리를 설치하고 개발 환경을 설정합니다. 자세한 내용은 Workflows 클라이언트 라이브러리 개요를 참조하세요.
샘플 앱 저장소를 로컬 머신에 클론합니다.
자바
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
또는 zip 파일로 샘플을 다운로드하고 압축을 풀 수 있습니다.
Node.js
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
또는 zip 파일로 샘플을 다운로드하고 압축을 풀 수 있습니다.
Python
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
또는 zip 파일로 샘플을 다운로드하고 압축을 풀 수 있습니다.
Workflows 샘플 코드가 포함된 디렉터리로 변경합니다.
자바
cd java-docs-samples/workflows/cloud-client/
Node.js
cd nodejs-docs-samples/workflows/quickstart/
Python
cd python-docs-samples/workflows/cloud-client/
다음 샘플 코드를 살펴봅니다.
자바
Node.js(자바스크립트)
Node.js(TypeScript)
Python
이 샘플은 다음을 수행합니다.
- Workflows용 클라우드 클라이언트 라이브러리를 설정합니다.
- 워크플로를 실행합니다.
- 실행이 종료될 때까지 워크플로 실행을 폴링합니다(지수 백오프 사용).
- 실행 결과를 출력합니다.
샘플을 실행하려면 먼저 종속 항목을 설치합니다.
자바
mvn compile
Node.js(자바스크립트)
npm install
Node.js(TypeScript)
npm install && npm run build
Python
pip3 install -r requirements.txt
스크립트를 실행합니다.
자바
GOOGLE_CLOUD_PROJECT=PROJECT_ID LOCATION=CLOUD_REGION WORKFLOW=WORKFLOW_NAME mvn compile exec:java -Dexec.mainClass=com.example.workflows.WorkflowsQuickstart
Node.js(자바스크립트)
npm start PROJECT_ID CLOUD_REGION WORKFLOW_NAME
Node.js(TypeScript)
npm start PROJECT_ID CLOUD_REGION WORKFLOW_NAME
Python
GOOGLE_CLOUD_PROJECT=PROJECT_ID LOCATION=CLOUD_REGION WORKFLOW=WORKFLOW_NAME python3 main.py
다음을 바꿉니다.
PROJECT_ID
(필수): Google Cloud 프로젝트의 프로젝트 IDCLOUD_REGION
: 워크플로의 위치(기본값:us-central1
)WORKFLOW_NAME
: 워크플로의 ID(기본값:myFirstWorkflow
)
출력은 다음과 비슷합니다.
Execution finished with state: SUCCEEDED ["Sunday","Sunday in the Park with George","Sunday shopping","Sunday Bloody Sunday","Sunday Times Golden Globe Race","Sunday All Stars","Sunday Night (South Korean TV series)","Sunday Silence","Sunday Without God","Sunday Independent (Ireland)"]
REST API
지정된 워크플로의 최신 버전을 사용하여 새 실행을 만들려면 projects.locations.workflows.executions.create
메서드를 사용합니다.
인증하려면 워크플로를 실행할 수 있는 충분한 권한이 포함된 서비스 계정이 필요합니다. 예를 들어 계정에 워크플로 실행을 트리거할 수 있는 권한이 있도록 서비스 계정에 Workflows 호출자 역할(roles/workflows.invoker
)을 부여할 수 있습니다. 자세한 내용은 Workflows 호출을 참조하세요.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
PROJECT_NUMBER
: IAM 및 관리자 설정 페이지에 나열된 Google Cloud 프로젝트 번호입니다.LOCATION
: 워크플로가 배포되는 리전입니다(예:us-central1
).WORKFLOW_NAME
: 워크플로의 사용자 정의 이름입니다(예:myFirstWorkflow
).PARAMETER
: 선택사항입니다. 실행 중인 워크플로에서 실행 요청의 일부로 전달하는 런타임 인수를 수신할 수 있는 경우 값이 하나 이상 있는 이스케이프 처리된 매개변수-값 쌍인 JSON 형식 문자열(예:"{\"searchTerm\":\"asia\"}"
)을 요청 본문에 추가할 수 있습니다.VALUE
: 선택사항입니다. 워크플로에서 런타임 인수로 수신할 수 있는 매개변수-값 쌍의 값입니다.CALL_LOGGING_LEVEL
: 선택사항입니다. 실행 중에 적용할 호출 로깅 수준입니다. 기본값은 로깅 수준이 지정되지 않고 대신 워크플로 로그 수준이 적용되는 것입니다. 자세한 내용은 Logging에 로그 전송을 참조하세요. 다음 필드 중 하나는 사용해야 합니다.CALL_LOG_LEVEL_UNSPECIFIED
: 로깅 수준이 지정되지 않고 대신 워크플로 로그 수준이 적용됩니다. 이 항목이 기본값입니다. 그렇지 않은 경우 실행 로그 수준이 적용되고 워크플로 로그 수준보다 우선 적용됩니다.LOG_ERRORS_ONLY
: 포착된 모든 예외 또는 예외로 인해 호출이 중지된 시기를 로깅합니다.LOG_ALL_CALLS
: 하위 워크플로 또는 라이브러리 함수와 해당 결과에 대한 모든 호출을 로깅합니다.LOG_NONE
: 호출 로깅이 없습니다.
BACKLOG_EXECUTION
: 선택사항.true
로 설정하면 동시 실행 할당량이 소진될 때 실행이 백로그되지 않습니다. 자세한 내용은 실행 백로그 관리를 참조하세요.
JSON 요청 본문:
{ "argument": "{\"PARAMETER\":\"VALUE\"}", "callLogLevel": "CALL_LOGGING_LEVEL", "disableConcurrencyQuotaOverflowBuffering": "BACKLOG_EXECUTION" }
요청을 보내려면 다음 옵션 중 하나를 펼칩니다.
성공한 경우 응답 본문에 새로 생성된 Execution
인스턴스가 포함됩니다.
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/workflows/WORKFLOW_NAME/executions/EXECUTION_ID", "startTime": "2023-11-07T14:35:27.215337069Z", "state": "ACTIVE", "argument": "{\"PARAMETER\":\"VALUE\"}", "workflowRevisionId": "000001-2df", "callLogLevel": "CALL_LOGGING_LEVEL", "status": {} }
실행 상태 확인
워크플로 실행 상태를 확인하는 데에는 유용한 몇 가지 명령어가 있습니다.
워크플로의 실행 시도와 해당 ID의 목록을 검색하려면 다음 명령어를 입력합니다.
gcloud workflows executions list WORKFLOW_NAME
WORKFLOW_NAME
을 워크플로 이름으로 바꿉니다.이 명령어는 다음과 비슷한
NAME
값을 반환합니다.projects/PROJECT_NUMBER/locations/REGION/workflows/WORKFLOW_NAME/executions/EXECUTION_ID
다음 명령어에서 사용할 실행 ID를 복사합니다.
실행 시도 상태를 확인하고 시도가 완료될 때까지 기다리려면 다음 명령어를 입력합니다.
gcloud workflows executions wait EXECUTION_ID
EXECUTION_ID
를 실행 시도의 ID로 바꿉니다.이 명령어는 실행 시도가 완료될 때까지 기다린 후 결과를 반환합니다.
마지막 실행이 완료될 때까지 기다린 후 완료된 실행의 결과를 반환하려면 다음 명령어를 입력합니다.
gcloud workflows executions wait-last
동일한
gcloud
세션에서 이전 실행 시도를 수행한 경우 이 명령어는 이전 실행 시도가 완료될 때까지 기다린 후 완료된 실행의 결과를 반환합니다. 이전 시도가 없으면gcloud
가 다음 오류를 반환합니다.ERROR: (gcloud.workflows.executions.wait-last) [NOT FOUND] There are no cached executions available.
마지막 실행 상태를 가져오려면 다음 명령어를 입력합니다.
gcloud workflows executions describe-last
동일한
gcloud
세션에서 이전 실행 시도를 수행한 경우에는 이 명령어가 실행 중인 상태일지라도 마지막 실행 결과를 반환합니다. 이전 시도가 없으면gcloud
가 다음 오류를 반환합니다.ERROR: (gcloud.beta.workflows.executions.describe-last) [NOT FOUND] There are no cached executions available.
실행 필터링
workflows.executions.list
메서드에서 반환된 워크플로 실행 목록에 필터를 적용할 수 있습니다.
다음 필드에서 필터링할 수 있습니다.
createTime
disableOverflowBuffering
duration
endTime
executionId
label
startTime
state
stepName
workflowRevisionId
예를 들어 라벨(labels."fruit":"apple"
)을 필터링하려면 다음과 비슷한 API 요청을 수행할 수 있습니다.
GET https://workflowexecutions.googleapis.com/v1/projects/MY_PROJECT/locations/MY_LOCATION/workflows/MY_WORKFLOW/executions?view=full&filter=labels.%22fruit%22%3A%22apple%22"
각 항목의 의미는 다음과 같습니다.
view=full
는 반환된 실행에 입력해야 하는 필드를 정의하는 뷰를 지정합니다. 이 경우에는 모든 데이터입니다.labels.%22fruit%22%3A%22apple%22
는 URL 인코딩 필터 구문입니다.
자세한 내용은 AIP-160 - 필터링을 참조하세요.
실행 백로그 관리
실행 백로그를 사용하면 클라이언트 측 재시도를 방지하고, 실행 지연을 제거하고, 처리량을 극대화할 수 있습니다. 백로그된 실행은 실행 동시 실행 할당량을 사용할 수 있게 되는 즉시 자동으로 실행됩니다.
활성 워크플로 실행이 동시에 발생할 수 있는 최대 개수가 존재합니다. 이 할당량이 소진되고 실행 백로그가 사용 중지되었거나 백로그된 실행의 할당량에 도달하면 HTTP 429 Too many requests
상태 코드와 함께 새 실행이 실패합니다. 실행 백로그가 사용 설정된 경우 새 실행이 성공하고 QUEUED
상태로 생성됩니다. 실행 동시 실행 할당량을 사용할 수 있게 되면 실행이 자동으로 실행되고 ACTIVE
상태로 전환됩니다.
기본적으로 Cloud Tasks에서 트리거된 요청을 포함한 모든 요청에 실행 백로그가 사용 설정되지만 다음 예외가 적용됩니다.
- 워크플로에서
executions.run
또는executions.create
커넥터를 사용하여 실행을 만들 때 실행 백로그는 기본적으로 사용 중지됩니다. 실행의disableConcurrencyQuotaOverflowBuffering
필드를false
로 명시적으로 설정하여 구성할 수 있습니다. - Pub/Sub에서 트리거된 실행의 경우 실행 백로그가 사용 중지되며 구성할 수 없습니다.
다음에 유의하세요.
- 큐에 추가된 실행은 최선의 방식으로 선입 선출(FIFO) 순서로 시작됩니다.
createTime
타임스탬프 필드는 실행이 생성된 시간을 나타냅니다.startTime
타임스탬프는 실행이 백로그 큐에서 자동으로 팝되고 실행을 시작하는 시점을 나타냅니다. 백로그되지 않은 실행의 경우 두 타임스탬프 값이 동일합니다.- 백로그된 실행의 한도는
workflowexecutions.googleapis.com/executionbacklogentries
할당량 측정항목을 사용하여 확인할 수 있습니다. 자세한 내용은 할당량 보기 및 관리를 참조하세요.
실행 백로그 사용 중지
Google Cloud CLI를 사용할 때 플래그를 설정하여 실행 백로그를 사용 중지할 수 있습니다. 예를 들면 다음과 같습니다.
gcloud workflows execute WORKFLOW_NAME --disable-concurrency-quota-overflow-buffering
또는 Workflows REST API에 실행 요청을 보낼 때 요청 JSON 본문에서 disableConcurrencyQuotaOverflowBuffering
필드를 true
로 설정하여 실행 백로그를 사용 중지할 수 있습니다.
예를 들면 다음과 같습니다.
{ "argument": {"arg1":"value1"}, "callLogLevel": "LOG_NONE", "disableConcurrencyQuotaOverflowBuffering": true }
자세한 내용은 워크플로 실행을 참조하세요.