워크플로 실행 요청에서 런타임 인수를 전달하고 워크플로 변수를 사용하여 이러한 인수에 액세스할 수 있습니다.
런타임 인수를 수신하는 워크플로 설정
실행 요청 중에 전달하는 런타임 인수를 수신하도록 워크플로를 설정하려면 다음 안내를 따르세요.
새 워크플로 create 단계를 따르거나 업데이트할 기존 워크플로를 선택합니다. 하지만 아직 배포하지는 않습니다.
워크플로 정의에
params
필드를 추가합니다. 인수 이름이 대괄호 안에 있고 기본 워크플로가main
블록에 배치되어 있는지 확인합니다.YAML
main: params: [ARG_NAME] steps: ...
JSON
{ "main": { "params": ["ARG_NAME"], "steps": [ ... ] ... } }
main
블록은 배열, 객체, 문자열 같이 유효한 JSON 데이터 유형의 이름인 단일 인수를 허용합니다.권장사항에 따라 이름이 지정된 여러 개의 인수로 객체를 전달하면 간편하게 목적을 이해하고 인수를 추가할 수 있습니다. 그런 다음 점 표기법을 사용하여 인수에 액세스할 수 있습니다.
다른 하위 워크플로에는 여러 인수가 있을 수 있습니다.
예를 들어 다음 워크플로는 런타임 인수로 전달하는 이름 및 성에 해당하는 사람에 대해 'Hello' 인사를 반환합니다.
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}" } } ] } }
워크플로를 배포하여 생성 또는 업데이트를 완료합니다.
실행 요청에서 데이터 전달
런타임 인수를 수신하도록 워크플로를 설정한 후 실행 요청에서 {"firstName":"Workflows","lastName":"User"}
와 같은 JSON 형식의 문자열을 워크플로에 전달할 수 있습니다.
콘솔
워크플로를 실행하려면 Google Cloud 콘솔에서 Workflows 페이지로 이동합니다.
Workflows 페이지에서 워크플로를 선택하여 세부정보 페이지로 이동합니다.
워크플로 세부정보 페이지에서 play_arrow 실행을 클릭합니다.
'워크플로 실행' 페이지가 표시되면 매개변수 이름과 인수 값(예:
{"firstName":"Workflows","lastName":"User"}
)이 포함된 JSON 문자열을 '입력' 영역에 입력합니다.실행을 클릭합니다.
실행 세부정보 페이지에서
Hello, Workflows User!
출력, 실행 ID 및 상태, 워크플로 실행의 현재 또는 최종 단계를 포함하는 실행 결과를 볼 수 있습니다. 자세한 내용은 워크플로 실행 결과 액세스를 참조하세요.
gcloud
워크플로 실행에 사용되는 gcloud workflow run 명령어에 --data 플래그를 추가합니다. 이 플래그는 데이터의 JSON 문자열을 사용합니다. 예를 들어 이전 예시 워크플로에 firstName
및 lastName
를 전달하려면 다음 안내를 따르세요.
gcloud workflows run WORKFLOW_NAME \ --data='{"firstName":"FIRST","lastName":"LAST"}'
다음을 바꿉니다.
WORKFLOW_NAME
: 워크플로의 이름FIRST
:firstName
의 워크플로에 전달할 문자열LAST
:lastName
의 워크플로에 전달할 문자열
출력은 다음과 비슷하게 표시됩니다.
Waiting for execution [9379b067-306a-4db1-a58d-c9fc99aebfd4] to complete...done.
argument: '{"firstName":"Workflows","lastName":"User"}'
endTime: '2022-07-19T13:52:47.659199466Z'
name: projects/1051295516635/locations/us-central1/workflows/workflow-6/executions/9379b067-306a-4db1-a58d-c9fc99aebfd4
result: '"Hello, Workflows User!"'
startTime: '2022-07-19T13:52:47.623862835Z'
state: SUCCEEDED
status:
currentSteps:
- routine: main
step: step2
workflowRevisionId: 000002-138
클라이언트 라이브러리
클라이언트 라이브러리 언어에 따라 실행 요청에서 런타임 인수를 전달할 수 있습니다.
예를 들어 자바스크립트를 사용하는 경우는 다음과 같습니다.
// Execute workflow
try {
const createExecutionRes = await client.createExecution({
parent: client.workflowPath(projectId, location, workflow),
execution: {
argument: JSON.stringify({"firstName":"Workflows","lastName":"User"})
}
});
const executionName = createExecutionRes[0].name;
또는 자바를 사용하는 경우는 다음과 같습니다.
// Creates the execution object.
CreateExecutionRequest request =
CreateExecutionRequest.newBuilder()
.setParent(parent.toString())
.setExecution(Execution.newBuilder().setArgument("{\"firstName\":\"Workflows\",\"lastName\":\"User\"}").build())
.build();
Google API 클라이언트 라이브러리를 사용한 워크플로 실행에 대한 자세한 내용은 워크플로 실행을 참조하세요.
REST API
워크플로 실행에 사용되는 명령어에
data
플래그를 추가합니다.data
값은 하나 이상의 해당 값이 이스케이프 처리된 매개변수-값 쌍인 인수를 포함하는 JSON 형식 문자열입니다. 예를 들어 이전 예시 워크플로에firstName
및lastName
를 전달하려면 다음 안내를 따르세요.curl --request POST \ --header "Authorization: Bearer "$(gcloud auth application-default print-access-token) \ --header 'Content-Type: application/json' \ --data '{"argument":"{\"firstName\":\"FIRST\",\"lastName\":\"LAST\"}"}' \ "https://workflowexecutions.googleapis.com/v1/projects/PROJECT_NUMBER/locations/us-central1/workflows/WORKFLOW_NAME/executions"
다음을 바꿉니다.
PROJECT_NUMBER
: Google Cloud 프로젝트 번호WORKFLOW_NAME
: 워크플로의 이름FIRST
:firstName
의 워크플로에 전달할 문자열LAST
:lastName
의 워크플로에 전달할 문자열
출력은 다음과 비슷하게 표시됩니다.
{ "name": "projects/PROJECT_NUMBER/locations/us-central1/workflows/WORKFLOW_NAME/executions/EXECUTION_ID", "startTime": "2020-11-09T23:51:31.765761331Z", "state": "ACTIVE", "argument": "{\"firstName\":\"Workflows\",\"lastName\":\"User\"}", "workflowRevisionId": "000001-08c" } ```
실행 결과를 가져오려면 다음 명령어를 실행합니다.
curl --request GET \ --header "Authorization: Bearer "$(gcloud auth application-default print-access-token) \ --header 'Content-Type: application/json' \ "https://workflowexecutions.googleapis.com/v1/projects/PROJECT_NUMBER/locations/us-central1/workflows/WORKFLOW_NAME/executions/EXECUTION_ID"
EXECUTION_ID
를 첫 번째 명령어로 반환된 출력의 ID로 바꿉니다.이 출력에는 다음과 비슷한 줄이 포함됩니다.
"argument": "{\"firstName\":\"Workflows\",\"lastName\":\"User\"}", "result": "\"Hello, Workflows User!\"",
REST API를 사용한 워크플로 실행에 대한 자세한 내용은 워크플로 실행을 참조하세요.
런타임 인수 액세스
이 샘플은 실행 요청 중에 워크플로에 전달된 런타임 인수에 액세스합니다. 모든 인수는 동일한 지도에 저장되며 기본 워크플로의 매개변수로 선언됩니다.
이 워크플로를 실행할 때 다음 형식을 사용하여 런타임 인수를 전달합니다.
{"firstName":"Sherlock", "lastName":"Holmes"}
YAML
JSON
표준 라이브러리 함수인 map.get과 함께 default
를 사용하여 선택적 런타임 인수에 액세스하고 키를 찾을 수 없는 경우 기본값을 반환할 수 있습니다. 다음 예시에서는 region
이 지정되지 않은 경우 northamerica-northeast1
이 사용됩니다.
YAML
main: params: [input] steps: - init: assign: - region: ${default(map.get(input, "region"), "northamerica-northeast1")}
JSON
{ "main": { "params": [ "input" ], "steps": [ { "init": { "assign": [ { "region": "${default(map.get(input, \"region\"), \"northamerica-northeast1\")}" } ] } } ] } }