워크플로 만들기 및 관리

Google Cloud 콘솔에서 또는 터미널이나 Cloud Shell에서 Google Cloud CLI를 사용하여 워크플로를 만들고 관리할 수 있습니다. Workflows API를 통해 워크플로를 관리할 수도 있습니다.

시작하기 전에

조직에서 정의한 보안 제약조건으로 인해 다음 단계를 완료하지 못할 수 있습니다. 문제 해결 정보는 제한된 Google Cloud 환경에서 애플리케이션 개발을 참조하세요.

Console

  1. Google Cloud 콘솔의 프로젝트 선택기 페이지에서 Google Cloud 프로젝트를 만들거나 선택합니다.

    프로젝트 선택자로 이동

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

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

    API 사용 설정

gcloud

  1. Google Cloud 콘솔에서 Cloud Shell을 활성화합니다.

    Cloud Shell 활성화

    Google Cloud 콘솔 하단에서 Cloud Shell 세션이 시작되고 명령줄 프롬프트가 표시됩니다. Cloud Shell은 Google Cloud CLI가 사전 설치된 셸 환경으로, 현재 프로젝트의 값이 이미 설정되어 있습니다. 세션이 초기화되는 데 몇 초 정도 걸릴 수 있습니다.

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

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

    gcloud services enable workflows.googleapis.com
    

REST

Workflows API를 사용하여 워크플로를 관리하려면 Google에서 제공하는 클라이언트 라이브러리를 사용하여 workflows.googleapis.com 서비스를 호출하는 것이 좋습니다. 자세한 내용은 Workflows API를 참조하세요.

서비스 계정 만들기

서비스 계정은 워크플로의 ID를 나타내며 워크플로에 포함된 권한과 액세스할 수 있는 Google Cloud 리소스를 확인합니다. 서비스 계정이 없으면 새로 만들고 워크플로 관리로그 만들기에 필요한 역할을 부여합니다.

워크플로를 만들 때 서비스 계정을 지정하지 않으면 워크플로에 해당 ID로 기본 Compute Engine 서비스 계정이 사용됩니다. 자세한 내용은 워크플로에 Google Cloud 리소스에 대한 액세스 권한 부여를 참조하세요.

필요한 리소스에 액세스하는 데 필요한 최소 권한이 포함된 서비스 계정을 사용하는 것이 좋습니다.

리소스를 만들고 서비스 계정을 연결하려면 리소스를 만들 수 있는 권한과 리소스에 연결할 서비스 계정을 가장할 수 있는 권한이 필요합니다. 자세한 내용은 서비스 계정 권한을 참조하세요.

콘솔

  1. Google Cloud 콘솔에서 서비스 계정 페이지로 이동합니다.

    서비스 계정으로 이동

  2. 프로젝트를 선택한 후 서비스 계정 만들기를 클릭합니다.

  3. 서비스 계정 이름 필드에 이름을 입력합니다.

    ID는 6~30자(영문 기준)여야 하며 소문자 영숫자 문자와 대시를 포함할 수 있습니다. 서비스 계정을 만든 후에는 이름을 변경할 수 없습니다.

  4. 만들고 계속하기를 클릭합니다.

  5. 역할 선택을 클릭합니다.

  6. 다음 역할을 선택하고 필요에 따라 다른 역할 추가를 클릭합니다.

    1. 워크플로를 생성, 업데이트, 실행하려면 Workflows > Workflows 편집자를 선택합니다.
    2. 로그를 Cloud Logging으로 전송하려면 Logging > 로그 작성자를 선택합니다.
  7. 완료를 클릭하여 서비스 계정 만들기를 마칩니다.

gcloud

  1. 서비스 계정을 만듭니다.

    gcloud iam service-accounts create SERVICE_ACCOUNT
  2. 역할을 할당하여 서비스 계정에 권한을 부여합니다.

    1. 워크플로를 만들고 업데이트하고 실행하려면 roles/workflows.editor 역할을 할당합니다.

      gcloud projects add-iam-policy-binding PROJECT_ID \
          --member "serviceAccount:SERVICE_ACCOUNT@PROJECT_ID.iam.gserviceaccount.com" \
          --role "roles/workflows.editor"
      
    2. 로그를 Cloud Logging으로 전송하려면 roles/logging.logWriter 역할을 할당합니다.

      gcloud projects add-iam-policy-binding PROJECT_ID \
          --member "serviceAccount:SERVICE_ACCOUNT@PROJECT_ID.iam.gserviceaccount.com" \
          --role "roles/logging.logWriter"
      

    다음을 바꿉니다.

    • SERVICE_ACCOUNT: 서비스 계정의 이름. 6~30자(영문 기준) 사이여야 하며 소문자 영숫자 문자와 대시를 포함할 수 있습니다. 서비스 계정을 만든 후에는 이름을 변경할 수 없습니다.

    • PROJECT_ID: 프로젝트의 ID입니다.

REST

serviceAccounts.create 메서드를 사용하여 서비스 계정을 만들 수 있습니다. 자세한 내용은 서비스 계정 만들기를 참조하세요.

setIamPolicy 메서드를 사용하여 리소스의 허용 정책을 수정하고 설정하여 여러 역할을 프로그래매틱 방식으로 부여할 수 있습니다. 자세한 내용은 프로그래매틱 방식으로 여러 역할 부여 또는 취소를 참조하세요.

워크플로 만들기

워크플로 정의는 YAML 또는 JSON 형식으로 작성할 수 있는 Workflows 구문을 사용하여 기술되는 일련의 단계들로 구성됩니다. 워크플로를 정의한 후 실행에 사용할 수 있도록 워크플로를 배포합니다. 또한 배포 단계 중 소스 파일을 실행할 수 있는지 확인합니다. 소스 파일에 유효한 워크플로 정의가 없으면 실패합니다.

YAML 파일을 수정하면 오류가 발생할 수 있습니다. 선호하는 IDE 또는 소스 코드 편집기를 사용하고 자동 완성 및 구문 유효성 검사를 설정하여 워크플로를 만들면 오류를 줄일 수 있습니다.

콘솔

  1. Google Cloud 콘솔에서 Workflows 페이지로 이동합니다.

    Workflows로 이동

  2. 만들기를 클릭합니다.

  3. 워크플로의 이름을 입력합니다(예: myFirstWorkflow). 이름에는 문자, 숫자, 밑줄, 하이픈을 포함할 수 있습니다. 문자로 시작하고 숫자 또는 문자로 끝나야 합니다.

  4. 원하는 경우 워크플로 설명을 추가합니다.

  5. 리전 목록에서 워크플로를 배포할 적절한 위치를 선택합니다(예: us-central1).

  6. 서비스 계정 목록에서 워크플로가 다른 Google Cloud 서비스에 액세스하는 데 사용할 서비스 계정을 선택합니다. 자세한 내용은 이 문서에서 서비스 계정 만들기를 참조하세요.

  7. 필요하면 다음과 같이 합니다.

    1. 워크플로 정의에 적용할 호출 로깅 수준을 지정합니다. 호출 로그 수준 목록에서 다음 중 하나를 선택합니다.

      • 지정되지 않음: 로깅 수준이 지정되지 않았습니다. 이 항목이 기본값입니다. 실행 로그 수준이 지정되지 않은(기본값) 한 실행 로그 수준이 워크플로 로그 수준보다 우선합니다. 이 경우 워크플로 로그 수준이 적용됩니다.
      • 오류만: 포착된 모든 예외 또는 예외로 인해 호출이 중지된 경우를 로깅합니다.
      • 모든 호출: 하위 워크플로 또는 라이브러리 함수에 대한 모든 호출과 결과를 로깅합니다.
      • 로그 없음: 호출 로깅이 없습니다.
    2. 워크플로에서 데이터 암호화에 사용해야 하는 Cloud Key Management Service 키를 지정합니다. 고객 관리 암호화 키(CMEK)를 선택합니다. 자세한 내용은 고객 관리 암호화 키 사용을 참조하세요.

    3. 런타임 시 워크플로에서 액세스할 수 있는 환경 변수를 지정합니다. 자세한 내용은 환경 변수 사용을 참조하세요.

    4. 라벨을 추가합니다. 라벨은 Google Cloud 인스턴스를 구성하는 데 도움이 되는 키-값 쌍입니다. 자세한 내용은 라벨이란 무엇인가요?를 참조하세요.

    5. 워크플로를 예약합니다. 새 트리거 추가 > Cloud Scheduler를 선택합니다. 자세한 내용은 Cloud Scheduler를 사용하여 워크플로 예약을 참조하세요.

    6. 이벤트 또는 Pub/Sub 메시지를 통해 워크플로를 트리거합니다. 새 트리거 추가 > Eventarc를 선택합니다. 자세한 내용은 이벤트 또는 Pub/Sub 메시지로 워크플로 트리거를 참조하세요.

  8. 다음을 클릭합니다.

  9. 워크플로 편집기에서 워크플로 정의를 입력합니다. 워크플로 예시를 참조하세요.

  10. 배포를 클릭합니다.

gcloud

  1. 워크플로의 소스 코드가 MY_WORKFLOW.YAML 또는 MY_WORKFLOW.JSON과 같이 YAML 또는 JSON 파일로 저장되었는지 확인합니다. 워크플로 예시를 참조하세요.

  2. 터미널을 엽니다.

  3. gcloud workflows deploy 명령어를 사용하여 워크플로를 만들고 배포할 수 있습니다.

    gcloud workflows deploy WORKFLOW_NAME \
        --location=LOCATION \
        --call-log-level=CALL_LOGGING_LEVEL \
        --description="DESCRIPTION" \
        --labels="LABEL_KEY=LABEL_VALUE" \
        --set-env-vars="ENV_KEY=ENV_VALUE" \
        --kms-key=ENCRYPT_KEY \
        --service-account=SERVICE_ACCOUNT@PROJECT_ID.iam.gserviceaccount.com \
        --source=YAML_OR_JSON_SOURCE_FILE
    

    다음을 바꿉니다.

    • WORKFLOW_NAME: 워크플로의 이름입니다(예: myFirstWorkflow). 이름에는 문자, 숫자, 밑줄, 하이픈을 포함할 수 있습니다. 문자로 시작하고 숫자 또는 문자로 끝나야 합니다.

    • LOCATION: 워크플로를 배포할 리전입니다(예: us-central1).

    • CALL_LOGGING_LEVEL: 선택사항. 실행 중에 적용할 호출 로깅 수준입니다. 다음 중 하나일 수 있습니다.

      • none: 지정된 로깅 수준이 없습니다. 이 항목이 기본값입니다. 실행 로그 수준이 지정되지 않은(기본값) 한 실행 로그 수준이 워크플로 로그 수준보다 우선합니다. 이 경우 워크플로 로그 수준이 적용됩니다.
      • log-errors-only: 포착된 모든 예외 또는 예외로 인해 호출이 중지된 경우를 로깅합니다.
      • log-all-calls: 하위 워크플로 또는 라이브러리 함수와 해당 결과에 대한 모든 호출을 로깅합니다.
      • log-none: 호출 로깅이 없습니다.
    • DESCRIPTION: 선택사항. 워크플로에 대한 설명입니다.

    • LABEL_KEY=LABEL_VALUE: 선택사항. Google Cloud 인스턴스를 체계화하는 데 도움이 되는 라벨 키-값 쌍의 목록입니다(예: name=wrench). 자세한 내용은 라벨이란 무엇인가요?를 참조하세요.

    • ENV_KEY=ENV_VALUE: 선택사항. 환경 변수 키-값 쌍의 목록입니다(예: MONTH=January). 자세한 내용은 환경 변수 사용을 참조하세요.

    • ENCRYPT_KEY: 선택사항. 워크플로가 projects/PROJECT_NAME/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME 형식으로 데이터 암호화에 사용해야 하는 Cloud KMS 키입니다. 자세한 내용은 고객 관리 암호화 키 사용을 참조하세요.

    • SERVICE_ACCOUNT@PROJECT_ID.iam.gserviceaccount.com: (선택사항) 다른 Google Cloud 서비스에 액세스하기 위해 워크플로에 사용할 서비스 계정입니다. 자세한 내용은 이 문서에서 서비스 계정 만들기를 참조하세요.

    • YAML_OR_JSON_SOURCE_FILE: 워크플로의 소스 파일입니다. 예를 들면 myFirstWorkflow.yaml입니다.

REST

지정된 이름으로 새 워크플로를 만들려면 projects.locations.workflows.create 메서드를 사용하고 workflowId 쿼리 매개변수를 사용하여 워크플로의 ID를 지정합니다.

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • WORKFLOW_NAME: 워크플로의 이름입니다(예: myFirstWorkflow). 이름에는 문자, 숫자, 밑줄, 하이픈을 포함할 수 있습니다. 문자로 시작하고 숫자 또는 문자로 끝나야 합니다.
  • DESCRIPTION: 선택사항. 워크플로에 대한 설명입니다. 유니코드 문자 1,000개 이하여야 합니다.
  • LABEL_KEYLABEL_VALUE: 선택사항. Google Cloud 인스턴스를 구성하는 데 도움이 되는 라벨 키-값 쌍의 맵입니다. 예를 들면 {"name": "wrench", "mass": "1kg", "count": "3"}입니다. 자세한 내용은 라벨이란 무엇인가요?를 참조하세요. 새 라벨이 적용되는 데 최대 10분이 걸릴 수 있습니다.
  • SERVICE_ACCOUNT@PROJECT_ID.iam.gserviceaccount.com: 선택사항. 다른 Google Cloud 서비스에 액세스하기 위해 워크플로에 사용할 서비스 계정입니다. 프로젝트 ID는 Google Cloud 프로젝트 ID입니다. 자세한 내용은 이 문서에서 서비스 계정 만들기를 참조하세요.
  • ENCRYPT_KEY: 선택사항. 워크플로가 projects/PROJECT_NAME/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME 형식으로 데이터 암호화에 사용해야 하는 Cloud KMS 키입니다. 자세한 내용은 고객 관리 암호화 키 사용을 참조하세요.
  • CALL_LOGGING_LEVEL: 선택사항. 실행 중에 적용할 호출 로깅 수준입니다. 기본값은 로깅 수준이 지정되지 않고 대신 워크플로 로그 수준이 적용되는 것입니다. 자세한 내용은 Logging에 로그 전송을 참조하세요. 다음 필드 중 하나는 사용해야 합니다.
    • CALL_LOG_LEVEL_UNSPECIFIED: 로깅 수준이 지정되지 않고 대신 워크플로 로그 수준이 적용됩니다. 이 항목이 기본값입니다. 그렇지 않은 경우 실행 로그 수준이 적용되고 워크플로 로그 수준보다 우선 적용됩니다.
    • LOG_ERRORS_ONLY: 포착된 모든 예외 또는 예외로 인해 호출이 중지된 시기를 로깅합니다.
    • LOG_ALL_CALLS: 하위 워크플로 또는 라이브러리 함수와 해당 결과에 대한 모든 호출을 로깅합니다.
    • LOG_NONE: 호출 로깅이 없습니다.
  • ENV_KEYENV_VALUE: 선택사항. 환경 변수 키 및 값 쌍의 맵입니다(예: { "month": "January", "day": "Monday"}). 자세한 내용은 환경 변수 사용을 참조하세요.
  • SOURCE_CODE: 워크플로 정의입니다. YAML에서 새 줄을 이스케이프 처리해야 합니다. 예를 들면 main:\n params:\n - input\n steps:\n - returnOutput:\n return: Hello입니다.

    JSON에서 따옴표를 이스케이프 처리해야 합니다. 예를 들면 {\"main\":{\"params\":[\"input\"],\"steps\":[{\"returnOutput\":{\"return\":\"Hello\"}}]}}입니다.

  • LOCATION: 워크플로를 배포할 리전입니다(예: us-central1).

JSON 요청 본문:

{
  "name": "WORKFLOW_NAME",
  "description": "DESCRIPTION",
  "labels": {"LABEL_KEY":"LABEL_VALUE"},
  "serviceAccount": "SERVICE_ACCOUNT@PROJECT_ID.iam.gserviceaccount.com",
  "cryptoKeyName": "ENCRYPT_KEY",
  "callLogLevel": "CALL_LOGGING_LEVEL",
  "userEnvVars": {"ENV_KEY":"ENV_VALUE"},
  "sourceContents": "SOURCE_CODE"
}

요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

성공한 경우 응답 본문에 새로 생성된 Operation 인스턴스가 포함됩니다.

{
  "name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.workflows.v1.OperationMetadata",
    "createTime": "2023-12-05T14:06:06.338390918Z",
    "target": "projects/PROJECT_ID/locations/LOCATION/workflows/WORKFLOW_NAME",
    "verb": "create",
    "apiVersion": "v1"
  },
  "done": false
}

"done" 값이 false이면 작업이 아직 진행 중인 것입니다.

워크플로 나열

워크플로를 나열하거나 필터를 사용하여 특정 워크플로를 검색할 수 있습니다.

콘솔

  1. Google Cloud 콘솔에서 Workflows 페이지로 이동합니다.

    Workflows로 이동

    이 페이지에서는 모든 위치의 워크플로가 나열되고 이름, 리전, 최신 버전 등의 세부정보가 포함됩니다.

  2. 워크플로를 필터링하려면 다음 안내를 따르세요.

    1. 필터 또는 워크플로 필터링 필드를 클릭합니다.
    2. 속성 목록에서 워크플로를 필터링하는 옵션을 선택합니다.

    단일 속성을 선택하거나 OR 논리 연산자를 사용하여 속성을 추가할 수 있습니다.

  3. 워크플로를 정렬하려면 지원되는 열 제목 옆에 있는 정렬을 클릭합니다.

gcloud

gcloud workflows list 명령어를 사용하여 워크플로를 나열합니다.

gcloud workflows list --location=LOCATION

LOCATION을 워크플로 위치의 ID 또는 정규화된 식별자로 바꿉니다.

이 명령어는 지정된 위치의 워크플로를 나열하고, 워크플로의 NAME, STATE, REVISION_ID, UPDATE_TIME과 같은 세부정보를 포함합니다.

REST

지정된 프로젝트 및 위치의 워크플로를 나열하려면 projects.locations.workflows.list 메서드를 사용합니다.

또는 단일 워크플로의 세부정보를 검색하려면 projects.locations.workflows.get 메서드를 사용합니다.

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • PROJECT_ID: Google Cloud 프로젝트 ID
  • LOCATION: 워크플로가 배포되는 리전입니다(예: us-central1).

요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

성공하면 응답 본문에 Workflow 인스턴스가 포함되고 응답은 다음과 유사해야 합니다.

{
  "workflows": [
    {
      "name": "projects/PROJECT_ID/locations/LOCATION/workflows/WORKFLOW_NAME",
      "state": "ACTIVE",
      "revisionId": "000001-0ce",
      "createTime": "2023-12-08T13:56:59.306770745Z",
      "updateTime": "2023-12-08T13:56:59.547021939Z",
      "revisionCreateTime": "2023-12-08T13:56:59.340161044Z",
      "serviceAccount": "projects/PROJECT_ID/serviceAccounts/PROJECT_NUMBER-compute@developer.gserviceaccount.com",
      "sourceContents": "main:\n    params: [input]\n [...] return: '${wikiResult.body[1]}'\n"
    },
    {
      object (Workflow)
    }
  ],
  "nextPageToken": string,
  "unreachable": [
    string
  ]
}

워크플로 업데이트

기존 워크플로를 업데이트할 수 있습니다. 업데이트하려는 워크플로의 이름과 소스를 지정해야 합니다. 워크플로의 이름이나 위치는 변경할 수 없습니다.

워크플로 업데이트는 진행 중인 실행 작업에 영향을 주지 않습니다. 이후에 워크플로를 실행할 때만 업데이트된 구성이 사용됩니다.

워크플로를 업데이트할 때마다 versionID가 업데이트됩니다. versionID는 하이픈으로 구분된 두 부분으로 구성됩니다.

  • 1부터 시작하고, 워크플로를 업데이트할 때마다 증가하는 숫자입니다.

  • 임의의 3자리 영숫자 문자열입니다.

예를 들어 000001-27f는 워크플로의 초기 버전을 나타내고 000002-d52는 한 번 업데이트된 워크플로를 나타냅니다.

콘솔

  1. Google Cloud 콘솔에서 Workflows 페이지로 이동합니다.

    Workflows로 이동

  2. 업데이트할 워크플로의 이름을 클릭합니다. 워크플로 이름은 변경할 수 없습니다.

    워크플로 세부정보 페이지가 표시됩니다.

  3. 다음과 같은 방법으로 워크플로를 수정할 수 있습니다.

    • 소스를 수정하려면 다음 안내를 따르세요.

      1. 소스 탭을 클릭합니다.
      2. 수정을 클릭합니다.
      3. 변경사항을 저장하려면 저장을 클릭합니다. 업데이트된 워크플로가 배포됩니다.
    • 설명을 업데이트하려면 워크플로에서 인증에 사용하는 서비스 계정, 호출 로그 수준, 환경 변수, 라벨, 암호화 키를 업데이트합니다.

      1. 세부정보 탭을 클릭합니다.
      2. 적절한 아이콘을 클릭합니다.
      3. 호출 로그 수준을 업데이트하는 경우 다음 중 하나를 선택합니다.
        • 미지정: 로깅 수준이 지정되지 않았습니다. 이 항목이 기본값입니다. 실행 로그 수준이 지정되지 않은(기본값) 한 실행 로그 수준이 워크플로 로그 수준보다 우선합니다. 이 경우 워크플로 로그 수준이 적용됩니다.
        • 오류만: 포착된 모든 예외 또는 예외로 인해 호출이 중지된 경우를 로깅합니다.
        • 모든 호출: 하위 워크플로 또는 라이브러리 함수에 대한 모든 호출과 결과를 로깅합니다.
        • 로그 없음: 호출 로깅이 없습니다.
      4. 변경사항을 저장하려면 저장을 클릭합니다. 업데이트된 워크플로가 배포됩니다.
    • 이전 필드를 동시에 수정하거나 트리거를 추가 또는 업데이트하려면 다음 안내를 따르세요.

      1. 수정을 클릭합니다.
      2. 소스를 수정하려면 다음을 클릭합니다.
      3. 변경사항을 저장하고 업데이트된 워크플로를 배포하려면 배포를 클릭합니다.
  4. 서비스 계정의 역할을 업데이트하려면 권한 탭을 클릭합니다.

    1. 주 구성원은 사용자, 그룹, 도메인 또는 서비스 계정입니다. 기존 주 구성원을 업데이트하려면 다음 안내를 따르세요.

      1. 주 구성원이 포함된 행을 찾습니다.
      2. 그런 다음 해당 행에서 주 구성원 수정을 클릭합니다.
      3. 다른 역할 추가 또는 역할 삭제를 클릭합니다.
    2. 역할을 추가하려면 역할 선택 목록에서 적절한 역할을 선택합니다.

    3. 다른 역할을 추가하려면 다른 역할 추가를 클릭합니다.

    4. 저장을 클릭합니다.

gcloud

  1. 터미널을 엽니다.

  2. 업데이트할 워크플로의 이름을 찾습니다. 워크플로 이름을 모르면 다음 명령어를 입력하여 모든 워크플로를 나열할 수 있습니다.

    gcloud workflows list
    
  3. WORKFLOW_NAME.YAML 또는 WORKFLOW_NAME.JSON과 같이 업데이트된 워크플로 소스가 저장된 YAML 또는 JSON 파일을 찾으세요.

  4. gcloud workflows deploy 명령어를 사용하여 기존 워크플로를 업데이트하여 소스, 설명, 라벨, 환경 변수, 호출 로그 수준, 암호화 키, 연결된 서비스 계정을 변경할 수 있습니다.

    업데이트하려는 워크플로의 이름과 소스를 지정해야 하며, 나머지 플래그는 선택사항입니다. 고객 관리 암호화 키를 삭제하려면 --clear-kms-key 플래그를 사용합니다.

    gcloud workflows deploy WORKFLOW_NAME \
        --call-log-level=CALL_LOGGING_LEVEL \
        --description="DESCRIPTION" \
        --labels="LABEL_KEY=LABEL_VALUE" \
        --set-env-vars="ENV_KEY=ENV_VALUE" \
        --kms-key=ENCRYPT_KEY \
        --service-account=SERVICE_ACCOUNT@PROJECT_ID.iam.gserviceaccount.com \
        --source=YAML_OR_JSON_SOURCE_FILE
    

    다음을 바꿉니다.

    • WORKFLOW_NAME: (필수) 워크플로의 이름입니다.

    • CALL_LOGGING_LEVEL: 선택사항. 워크플로에 적용할 호출 로깅 수준입니다. 다음 중 하나일 수 있습니다.

      • none: 지정된 로깅 수준이 없습니다. 이 항목이 기본값입니다. 실행 로그 수준이 지정되지 않은(기본값) 한 실행 로그 수준이 워크플로 로그 수준보다 우선합니다. 이 경우 워크플로 로그 수준이 적용됩니다.
      • log-errors-only: 포착된 모든 예외 또는 예외로 인해 호출이 중지된 경우를 로깅합니다.
      • log-all-calls: 하위 워크플로 또는 라이브러리 함수와 해당 결과에 대한 모든 호출을 로깅합니다.
      • log-none: 호출 로깅이 없습니다.
    • DESCRIPTION: 선택사항. 워크플로에 대한 설명입니다.

    • LABEL_KEY=LABEL_VALUE: 선택사항. Google Cloud 인스턴스를 체계화하는 데 도움이 되는 라벨 키-값 쌍의 목록입니다(예: name=wrench). 자세한 내용은 라벨이란 무엇인가요?를 참조하세요.

    • ENV_KEY=ENV_VALUE: 선택사항. 환경 변수 키-값 쌍의 목록입니다(예: MONTH=January). 자세한 내용은 환경 변수 사용을 참조하세요.

    • ENCRYPT_KEY: 선택사항. 워크플로가 projects/PROJECT_NAME/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME 형식으로 데이터 암호화에 사용해야 하는 Cloud KMS 키입니다. 자세한 내용은 고객 관리 암호화 키 사용을 참조하세요.

    • SERVICE_ACCOUNT@PROJECT_ID.iam.gserviceaccount.com: (선택사항) 다른 Google Cloud 서비스에 액세스하기 위해 워크플로에 사용할 서비스 계정입니다. 서비스 계정의 역할을 업데이트하려면 워크플로에 Google Cloud 리소스에 대한 액세스 권한을 부여하고 프로젝트, 폴더, 조직에 대한 액세스를 관리합니다.

    • YAML_OR_JSON_SOURCE_FILE: (필수) YAML 또는 JSON 형식의 워크플로 소스 파일입니다. 예를 들면 myFirstWorkflow.yaml입니다.

REST

기존 워크플로를 업데이트하려면 projects.locations.workflows.patch 메서드를 사용하고 선택적으로 updateMask 쿼리 매개변수를 사용하여 업데이트할 필드 목록을 지정합니다.

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • WORKFLOW_NAME: 워크플로의 이름입니다(예: myFirstWorkflow).
  • DESCRIPTION: 선택사항. 워크플로에 대한 설명입니다. 유니코드 문자 1,000개 이하여야 합니다.
  • LABEL_KEYLABEL_VALUE: 선택사항. Google Cloud 인스턴스를 구성하는 데 도움이 되는 라벨 키-값 쌍의 맵입니다. 예를 들면 {"name": "wrench", "mass": "1kg", "count": "3"}입니다. 자세한 내용은 라벨이란 무엇인가요?를 참조하세요. 새 라벨이 적용되는 데 최대 10분이 걸릴 수 있습니다.
  • SERVICE_ACCOUNT@PROJECT_ID.iam.gserviceaccount.com: 선택사항. 다른 Google Cloud 서비스에 액세스하기 위해 워크플로에 사용할 서비스 계정입니다. 프로젝트 ID는 Google Cloud 프로젝트 ID입니다. 자세한 내용은 이 문서에서 서비스 계정 만들기를 참조하세요.
  • ENCRYPT_KEY: 선택사항. 워크플로가 projects/PROJECT_NAME/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME 형식으로 데이터 암호화에 사용해야 하는 Cloud KMS 키입니다. 자세한 내용은 고객 관리 암호화 키 사용을 참조하세요.
  • CALL_LOGGING_LEVEL: 선택사항. 실행 중에 적용할 호출 로깅 수준입니다. 기본값은 로깅 수준이 지정되지 않고 대신 워크플로 로그 수준이 적용되는 것입니다. 자세한 내용은 Logging에 로그 전송을 참조하세요. 다음 필드 중 하나는 사용해야 합니다.
    • CALL_LOG_LEVEL_UNSPECIFIED: 로깅 수준이 지정되지 않고 대신 워크플로 로그 수준이 적용됩니다. 이 항목이 기본값입니다. 그렇지 않은 경우 실행 로그 수준이 적용되고 워크플로 로그 수준보다 우선 적용됩니다.
    • LOG_ERRORS_ONLY: 포착된 모든 예외 또는 예외로 인해 호출이 중지된 시기를 로깅합니다.
    • LOG_ALL_CALLS: 하위 워크플로 또는 라이브러리 함수와 해당 결과에 대한 모든 호출을 로깅합니다.
    • LOG_NONE: 호출 로깅이 없습니다.
  • ENV_KEYENV_VALUE: 선택사항. 환경 변수 키 및 값 쌍의 맵입니다(예: { "month": "January", "day": "Monday"}). 자세한 내용은 환경 변수 사용을 참조하세요.
  • SOURCE_CODE: 축소된 워크플로 정의입니다. 예를 들면 {\"main\":{\"params\":[\"input\"],\"steps\":[{\"returnOutput\":{\"return\":\"Hello\"}}]}}입니다.
  • LOCATION: 워크플로가 배포되는 리전입니다(예: us-central1).
  • UPDATE_FIELDS: 선택사항. 업데이트할 필드의 쉼표로 구분된 목록입니다. 제공하지 않으면 전체 워크플로가 업데이트됩니다. 예를 들면 description,callLogLevel입니다.

JSON 요청 본문:

{
  "name": "WORKFLOW_NAME",
  "description": "DESCRIPTION",
  "labels": {"LABEL_KEY":"LABEL_VALUE"},
  "serviceAccount": "SERVICE_ACCOUNT@PROJECT_ID.iam.gserviceaccount.com",
  "cryptoKeyName": "ENCRYPT_KEY",
  "callLogLevel": "CALL_LOGGING_LEVEL",
  "userEnvVars": {"ENV_KEY":"ENV_VALUE"},
  "sourceContents": "SOURCE_CODE"
}

요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

성공한 경우 응답 본문에 새로 생성된 Operation 인스턴스가 포함됩니다.

{
  "name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.workflows.v1.OperationMetadata",
    "createTime": "2023-12-05T14:06:06.338390918Z",
    "target": "projects/PROJECT_ID/locations/LOCATION/workflows/WORKFLOW_NAME",
    "verb": "update",
    "apiVersion": "v1"
  },
  "done": false
}

"done" 값이 false이면 작업이 아직 진행 중인 것입니다.

워크플로 삭제

기존 워크플로를 삭제할 수 있습니다. 워크플로를 삭제하면 해당 실행도 삭제되고 워크플로의 진행 주인 실행이 취소됩니다.

Console

  1. Google Cloud 콘솔에서 Workflows 페이지로 이동합니다.

    Workflows로 이동

  2. 삭제하려는 워크플로의 이름을 클릭한 다음 삭제를 클릭합니다.

  3. 삭제를 확인하는 프롬프트가 표시되면 워크플로 이름을 입력합니다.

  4. 확인을 클릭합니다.

gcloud

  1. 터미널을 엽니다.

  2. 삭제하려는 워크플로의 이름을 찾습니다. 워크플로 이름을 모르면 다음 명령어를 입력하여 모든 워크플로를 나열할 수 있습니다.

    gcloud workflows list
    
  3. gcloud workflows delete 명령어를 사용하여 워크플로를 삭제합니다.

    gcloud workflows delete WORKFLOW_NAME
    

    WORKFLOW_NAME을 워크플로의 이름으로 바꿉니다.

REST

지정된 이름의 워크플로를 삭제하려면 projects.locations.workflows.delete 메서드를 사용합니다.

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • WORKFLOW_NAME: 삭제하려는 워크플로의 이름입니다.
  • PROJECT_ID: Google Cloud 프로젝트 ID
  • LOCATION: 워크플로가 배포되는 리전입니다(예: us-central1).

요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

성공하면 응답 본문에 Operation 인스턴스가 포함됩니다.

{
  "name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.workflows.v1.OperationMetadata",
    "createTime": "2023-12-05T14:06:06.338390918Z",
    "target": "projects/PROJECT_ID/locations/LOCATION/workflows/WORKFLOW_NAME",
    "verb": "delete",
    "apiVersion": "v1"
  },
  "done": false
}

"done" 값이 false이면 작업이 아직 진행 중인 것입니다.

다음 단계