빠른 시작: 클라이언트 라이브러리 사용

이 빠른 시작에서는 클라이언트 라이브러리를 사용하여 워크플로를 실행하고 실행 결과를 확인하는 방법을 보여줍니다. 이 샘플에서는 먼저 Cloud Console 또는 gcloud 명령줄 도구를 사용하여 myFirstWorkflow 워크플로를 배포했다고 가정합니다.

시작하기 전에

  1. Google 계정으로 로그인합니다.

    아직 계정이 없으면 새 계정을 등록하세요.

  2. Google Cloud Console의 프로젝트 선택기 페이지에서 Google Cloud 프로젝트를 선택하거나 만듭니다.

    프로젝트 선택기 페이지로 이동

  3. Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다. 프로젝트에 결제가 사용 설정되어 있는지 확인하는 방법을 알아보세요.

  4. Workflows API를 사용 설정합니다.

    Workflows API 사용 설정
  5. Cloud Console에서 서비스 계정 페이지로 이동합니다.

    서비스 계정 만들기 페이지로 이동
  6. 서비스 계정 만들기를 선택합니다.
  7. 서비스 계정 이름 필드에 이름을 입력합니다.
  8. 만들기를 클릭합니다.
  9. 역할 목록에서 Logging > 로그 작성자를 선택합니다.

    참고: 역할 필드가 리소스에 액세스할 수 있도록 서비스 계정을 승인합니다. 로그를 Cloud Logging으로 전송하려면 roles/logging.logWriter 역할을 할당합니다. 프로덕션 앱을 개발할 때는 가능한 한 항상 최소 권한을 지닌 역할을 부여하세요. 자세한 내용은 서비스 계정에 역할 부여를 참조하세요. Workflows 역할 목록은 액세스 제어 참조를 확인하세요.
  10. 계속을 클릭합니다.
  11. 완료를 클릭합니다.

샘플 코드 가져오기

  1. 샘플 저장소를 로컬 머신에 클론합니다.

    git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git

    또는 zip 파일로 샘플을 다운로드하고 압축을 풀 수 있습니다.

  2. Cloud Functions 샘플 코드가 있는 디렉터리로 변경합니다.

    cd nodejs-docs-samples/workflows/quickstart/
  3. 샘플 코드를 검토합니다.

    const {ExecutionsClient} = require('@google-cloud/workflows');
    const client = new ExecutionsClient();
    
    /**
     * Sleeps the process N number of milliseconds.
     * @param {Number} ms The number of milliseconds to sleep.
     */
    function sleep(ms) {
      return new Promise(resolve => {
        setTimeout(resolve, ms);
      });
    }
    
    // Execute workflow
    try {
      const createExecutionRes = await client.createExecution({
        parent: client.workflowPath(projectId, location, workflow),
      });
      const executionName = createExecutionRes[0].name;
      console.log(`Created execution: ${executionName}`);
    
      // Wait for execution to finish, then print results.
      let executionFinished = false;
      let backoffDelay = 1000; // Start wait with delay of 1,000 ms
      console.log('Poll every second for result...');
      while (!executionFinished) {
        const [execution] = await client.getExecution({
          name: executionName,
        });
        executionFinished = execution.state !== 'ACTIVE';
    
        // If we haven't seen the result yet, wait a second.
        if (!executionFinished) {
          console.log('- Waiting for results...');
          await sleep(backoffDelay);
          backoffDelay *= 2; // Double the delay to provide exponential backoff.
        } else {
          console.log(`Execution finished with state: ${execution.state}`);
          console.log(execution.result);
          return execution.result;
        }
      }
    } catch (e) {
      console.error(`Error executing workflow: ${e}`);
    }

이 프로그램은 다음 작업을 수행합니다.

  1. Workflows 클라이언트 라이브러리를 설정합니다.
  2. 워크플로를 실행합니다.
  3. 실행이 종료될 때까지 워크플로 실행을 폴링합니다(지수 백오프 사용).
  4. 실행 결과를 출력합니다.

종속 항목 설치

npm install

샘플 실행

샘플을 실행하려면 다음 스크립트를 실행합니다.

node . PROJECT_ID [CLOUD_REGION] [WORKFLOW_NAME]

다음 명령줄 인수를 바꿉니다.

  • PROJECT_ID(필수): Cloud Platform 프로젝트의 프로젝트 ID
  • CLOUD_REGION: 워크플로의 Cloud 위치(기본값: us-central1)
  • WORKFLOW_NAME: 워크플로의 ID(기본값: myFirstWorkflow)

예를 들면 다음과 같습니다.

node . my-custom-project us-central1 userSignupWorkflow

출력 예시:

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)"]

삭제

이 빠른 시작에서 사용한 리소스의 비용이 Google Cloud 계정에 청구되지 않도록 하려면 다음 단계를 따르세요.

  1. Cloud Console의 Workflows 페이지로 이동합니다.
    Workflows

  2. 삭제 버튼을 선택합니다.

  3. 메시지가 나타나면 워크플로 이름을 입력합니다.

  4. 삭제를 선택합니다.

다음 단계