ワークフローの作成と管理

ワークフローの作成と管理は、 Google Cloud コンソールで行うか、ターミナルまたは Cloud Shell で Google Cloud CLI を使用して行えます。Workflows API を使用してワークフローを管理することもできます。

始める前に

組織で定義されているセキュリティの制約により、次の手順を完了できない場合があります。トラブルシューティング情報については、制約のある Google Cloud 環境でアプリケーションを開発するをご覧ください。

コンソール

  1. 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.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Workflows API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  6. Verify that billing is enabled for your Google Cloud project.

  7. Enable the Workflows API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  8. gcloud

    1. 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.
    2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

      Roles required to select or create a project

      • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
      • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

      Go to project selector

    3. Verify that billing is enabled for your Google Cloud project.

    4. Enable the Workflows API.

      Roles required to enable APIs

      To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

      Enable the API

    5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

      Roles required to select or create a project

      • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
      • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

      Go to project selector

    6. Verify that billing is enabled for your Google Cloud project.

    7. Enable the Workflows API.

      Roles required to enable APIs

      To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

      Enable the API

    8. REST

      Workflows API を使用してワークフローを管理するには、Google が提供するクライアント ライブラリを使用して workflows.googleapis.com サービスを呼び出すことをおすすめします。詳細については、Workflows API をご覧ください。

サービス アカウントを作成する

サービス アカウントはワークフローの ID を表し、ワークフローが持つ権限と、アクセスできる Google Cloud リソースを定めます。まだ作成していない場合はサービス アカウントを作成し、ワークフローの管理ログの作成に必要なロールを付与します。

ワークフローの作成時にサービス アカウントを指定しない場合、ワークフローは、デフォルトの Compute Engine サービス アカウントをその ID に対して使用します。詳細については、 Google Cloud リソースにアクセスする権限をワークフローに付与するをご覧ください。

必要なリソースにアクセスするために必要な最小権限を持つサービス アカウントを使用することを強くおすすめします。

リソースを作成してサービス アカウントを関連付けるには、対象のリソースを作成し、リソースに関連付けるサービス アカウントになりすますための権限が必要です。詳細については、サービス アカウント権限をご覧ください。

コンソール

  1. Google Cloud コンソールで、[サービス アカウント] ページに移動します。

    [サービス アカウント] に移動

  2. プロジェクトを選択し、[サービス アカウントを作成] をクリックします。

  3. [サービス アカウント名] フィールドに名前を入力します。

    この名前は 6~30 文字で指定する必要があり、小文字の英数字とダッシュを含めることができます。サービス アカウントを作成した後にその名前を変更することはできません。

  4. [作成して続行] をクリックします。

  5. [ロールを選択] をクリックします。

  6. 次のロールを選択し、必要に応じて [別のロールを追加] をクリックします。

    1. ワークフローを作成、更新、実行するには、[ワークフロー] >[ワークフロー編集者] を選択します。
    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 メソッドを使用してリソースの許可ポリシーを変更および設定することにより、プログラムで複数のロールを付与できます。詳細については、プログラムでの複数のロールの付与または取り消すをご覧ください。

ワークフローを作成する

ワークフローは、Workflows 構文で記述された一連のステップで構成され、YAML 形式または JSON 形式のいずれでも記述できます。ワークフローを定義したら、デプロイして実行できるようにします。デプロイの手順では、ソースファイルを実行できることも検証されます。ソースファイルに有効なワークフロー定義が含まれていない場合、デプロイは失敗します。

YAML ファイルの編集では、エラーがよく発生します。ワークフローを作成する場合は、任意の IDE またはソースコード エディタを使用し、予測入力と構文検証を設定してエラーを減らします。

コンソール

  1. Google Cloud コンソールで [ワークフロー] ページに移動します。

    [ワークフロー] に移動

  2. [ 作成] をクリックします。

  3. ワークフローの名前を入力します(例: myFirstWorkflow)。名前には、英数字、アンダースコア、ハイフンを使用できます。先頭は英字、末尾は数字または英字にする必要があります

  4. 必要に応じて、ワークフローの説明を追加します。

  5. [リージョン] リストで、ワークフローをデプロイする適切なロケーションus-central1 など)を選択します。

  6. [サービス アカウント] リストで、ワークフローが他の Google Cloud サービスにアクセスするために使用するサービス アカウントを選択します。詳細については、このドキュメントのサービス アカウントを作成するをご覧ください。

  7. 必要に応じて、次の操作が可能です。

    1. ワークフロー定義に適用する呼び出しロギングのレベルを指定します。[呼び出しログレベル] リストで、次のいずれかを選択します。

      • 指定なし: ロギングレベルは指定されません。この設定がデフォルトです。 実行ログレベルが指定されていない場合(デフォルト)を除き、実行ログレベルがワークフローのログレベルよりも優先されます。実行ログレベルが指定されていない場合、ワークフローのログレベルが適用されます。
      • エラーのみ: キャッチされた例外をすべてログに記録します。または、例外により呼び出しが停止した場合についてもログに記録します。
      • すべてのコール: サブワークフローまたはライブラリ関数のすべての呼び出しとその結果を記録します。
      • ログ​なし: コールロギングはありません。
    2. ワークフロー定義に適用する実行履歴のレベルを指定します。[実行履歴] リストで、次のいずれかを選択します。

      • Basic: 基本的な実行履歴を有効にします。これがデフォルトです。
      • 詳細: スコープ内の変数と予想される反復回数を含む、詳細な実行履歴を有効にします。
    3. ワークフローでデータの暗号化に使用する Cloud Key Management Service 鍵を指定し、[Customer-managed encryption key (CMEK)] を選択します。詳細については、顧客管理の暗号鍵をご覧ください。

    4. 実行時にワークフローがアクセスできる環境変数を指定します。詳細については、環境変数を使用するをご覧ください。

    5. ラベルを追加する: ラベルは Key-Value ペアで、Google Cloud インスタンスを整理するのに役立ちます。詳細については、ラベルとはをご覧ください。ワークフロー ラベルは、ワークフローの実行によって継承されます。実行ラベルを表示するには、workflows.executions.list メソッドを使用して、ワークフローの実行を一覧表示してフィルタします。

    6. ワークフローのスケジュールを設定する: [新しいトリガーを追加] > [Cloud Scheduler] の順に選択します。詳細については、Cloud Scheduler を使用したワークフローのスケジュール設定をご覧ください。

    7. イベントまたは Pub/Sub メッセージを使用してワークフローをトリガーする: [新しいトリガーを追加] > [Eventarc] の順に選択します。詳細については、イベントまたは Pub/Sub メッセージでワークフローをトリガーするをご覧ください。

  8. [次へ] をクリックします。

  9. ワークフロー エディタで、ワークフローの定義を入力します。ワークフローの例をご覧ください。

  10. [デプロイ] をクリックします。

gcloud

  1. ワークフローのソースコードが YAML ファイルまたは JSON ファイル(MY_WORKFLOW.YAMLMY_WORKFLOW.JSON など)に保存されていることを確認します。ワークフローの例をご覧ください。

  2. ターミナルを開きます。

  3. gcloud workflows deploy コマンドを使用してワークフローを作成しデプロイできます。

    gcloud workflows deploy WORKFLOW_NAME \
        --location=LOCATION \
        --call-log-level=CALL_LOGGING_LEVEL \
        --description="DESCRIPTION" \
        --execution-history-level="EXECUTION_HISTORY_LEVEL" \
        --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: 省略可。ワークフローの説明。

    • EXECUTION_HISTORY_LEVEL: 省略可。実行中に適用する実行履歴のレベル。以下のいずれかになります。

      • none: 実行履歴レベルは指定されていません。これがデフォルトです。実行の実行履歴レベルが指定されていない場合、ワークフローに適用されたレベルによって決定されます。レベルが異なる場合、この実行では、実行レベルで適用された設定がワークフロー レベルで適用された設定をオーバーライドします。
      • execution-history-basic: 基本的な実行履歴を有効にします。
      • execution-history-detailed: スコープ内の変数と予想される反復回数を含む、詳細な実行履歴を有効にします。
    • LABEL_KEY=LABEL_VALUE: 省略可。 Google Cloud インスタンスの整理に役立つラベルの Key-Value ペアのリスト(例: name=wrench)。詳細については、ラベルとはをご覧ください。ワークフロー ラベルは、ワークフローの実行によって継承されます。実行ラベルを表示するには、workflows.executions.list メソッドを使用して、ワークフローの実行を一覧表示してフィルタします。

    • ENV_KEY=ENV_VALUE: 省略可。環境変数の Key-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 個の Unicode 文字以下にする必要があります。
  • LABEL_KEYLABEL_VALUE: 省略可。 Google Cloud インスタンスの整理に役立つラベルの Key-Value ペアのマップ。例: {"name": "wrench", "mass": "1kg", "count": "3"}。詳細については、ラベルとはをご覧ください。ワークフロー ラベルは、ワークフローの実行によって継承されます。実行ラベルを表示するには、workflows.executions.list メソッドを使用して、ワークフローの実行を一覧表示してフィルタします
  • 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: コールロギングなし。
  • EXECUTION_HISTORY_LEVEL: 省略可。実行中に適用する実行履歴のレベル。詳細については、実行ステップの履歴を表示するをご覧ください。次のいずれかになります。
    • EXECUTION_HISTORY_LEVEL_UNSPECIFIED: 実行履歴レベルは指定されていません。この設定がデフォルトです。実行の実行履歴レベルが指定されていない場合、ワークフローに適用されたレベルによって決定されます。レベルが異なる場合、実行レベルで適用された設定は、この実行のワークフロー レベルで適用された設定をオーバーライドします。
    • EXECUTION_HISTORY_BASIC: 基本的な実行履歴を有効にします。
    • EXECUTION_HISTORY_ADVANCED: スコープ内の変数と予想される反復回数を含む、詳細な実行履歴を有効にします。
  • 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",
  "executionHistoryLevel": "EXECUTION_HISTORY_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 コンソールで [ワークフロー] ページに移動します。

    [ワークフロー] に移動

    このページには、すべてのロケーションのワークフローが一覧表示されます。それには、名前、リージョン、最新のリビジョンなどが含まれます。

  2. ワークフローをフィルタするには:

    1. [ フィルタ] フィールドまたは [ワークフローをフィルタリング] フィールドをクリックします。
    2. [プロパティ] リストで、ワークフローをフィルタするオプションを選択します。

    1 つのプロパティを選択することも、論理演算子 OR を使用して複数のプロパティを追加することもできます。

  3. ワークフローを並べ替えるには、サポートされている列見出しの横にある [ 並べ替え] をクリックします。

gcloud

gcloud workflows list コマンドを使用してワークフローを一覧表示します。

gcloud workflows list --location=LOCATION

LOCATION は、ワークフローのロケーションの ID か完全修飾された ID に置き換えます。

このコマンドは、指定されたロケーションにあるワークフローを一覧表示します。ワークフローの NAMESTATEREVISION_IDUPDATE_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 は、ハイフンで区切られた次の 2 つの部分で構成されます。

  • 1 で始まる数字で、ワークフローを更新する度に増加する数値。

  • ランダムな 3 文字の英数字文字列。

たとえば、000001-27f はワークフローの最初のバージョンを示し、000002-d52 は一度更新されたワークフローを示します。

コンソール

  1. Google Cloud コンソールで [ワークフロー] ページに移動します。

    [ワークフロー] に移動

  2. 更新するワークフローの名前をクリックします。ワークフローの名前は変更できません。

    [Workflow の詳細] ページが表示されます。

  3. ワークフローは次の方法で編集できます。

    • ソースを編集するには:

      1. [ソース] タブをクリックします。
      2. [編集] をクリックします。
      3. 変更を保存するには、[Save] をクリックします。更新されたワークフローがデプロイされます。
    • 説明、ワークフローが認証に使用するサービス アカウント、呼び出しログレベル、環境変数、ラベル、暗号鍵を更新するには:

      1. [詳細] タブをクリックします。
      2. 該当する アイコンをクリックします。
      3. 呼び出しログレベルを更新する場合は、次のいずれかを選択します。
        • 指定なし: ロギングレベルは指定されません。この設定がデフォルトです。 実行ログレベルが指定されていない場合(デフォルト)を除き、実行ログレベルがワークフローのログレベルよりも優先されます。実行ログレベルが指定されていない場合、ワークフローのログレベルが適用されます。
        • エラーのみ: キャッチされた例外をすべてログに記録します。または、例外により呼び出しが停止した場合についてもログに記録します。
        • すべてのコール: サブワークフローまたはライブラリ関数のすべての呼び出しとその結果を記録します。
        • ログ​なし: コールロギングはありません。
      4. 実行履歴レベルを更新する場合は、次のいずれかを選択します。
        • Basic: 基本的な実行履歴を有効にします。これがデフォルトです。
        • 詳細: スコープ内の変数と予想される反復回数を含む、詳細な実行履歴を有効にします。
      5. 既存のラベルを更新したり、新しいラベルを追加したりした場合、新しいラベルが有効になるまでに最大 10 分かかることがあります。ワークフロー ラベルは、ワークフローの実行によって継承されます。実行ラベルを表示するには、workflows.executions.list メソッドを使用して、ワークフローの実行を一覧表示してフィルタします。
      6. 変更を保存するには、[保存] をクリックします。更新されたワークフローがデプロイされます。
    • 前のフィールドを同時に編集する、またはトリガーを追加あるいは更新するには:

      1. [ 編集] をクリックします。
      2. ソースを編集するには、[次へ] をクリックします。
      3. 変更を保存して更新済みのワークフローをデプロイするには、[デプロイ] をクリックします。
  4. サービス アカウントのロールを更新する場合は、[権限] タブをクリックします。

    1. プリンシパルは、ユーザー、グループ、ドメイン、またはサービス アカウントです。 既存のプリンシパルを更新するには:

      1. プリンシパルを含む行を見つけます。
      2. その行の [ プリンシパルを編集します] をクリックします。
      3. [ 別のロールを追加] または [ ロールを削除] をクリックします。
    2. ロールを追加する場合は、[ロールを選択] リストで、適切なロールを選択します。

    3. 別のロールを追加するには、[別のロールを追加] をクリックします。

    4. [保存] をクリックします。

gcloud

  1. ターミナルを開きます。

  2. 更新するワークフローの名前を見つけます。ワークフローの名前がわからない場合は、次のコマンドを入力して、すべてのワークフローを一覧表示できます。

    gcloud workflows list
  3. ワークフロー ソースが保存されている YAML または JSON ファイル(WORKFLOW_NAME.YAMLWORKFLOW_NAME.JSON など)を見つけます。

  4. gcloud workflows deploy コマンドを使用して、既存のワークフローを更新して、そのソース、説明、ラベル、環境変数、呼び出しログレベル、暗号化鍵、または関連するサービス アカウントを変更できます。

    更新するワークフローの名前とソースを指定する必要がありますが、残りのフラグは省略可能です。 顧客管理の暗号鍵を削除するには、--clear-kms-key フラグを使用します。

    gcloud workflows deploy WORKFLOW_NAME \
        --call-log-level=CALL_LOGGING_LEVEL \
        --description="DESCRIPTION" \
        --execution-history-level="EXECUTION_HISTORY_LEVEL" \
        --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: 省略可。ワークフローの説明。

    • EXECUTION_HISTORY_LEVEL: 省略可。実行中に適用する実行履歴のレベル。以下のいずれかになります。

      • none: 実行履歴レベルは指定されていません。これがデフォルトです。実行の実行履歴レベルが指定されていない場合、ワークフローに適用されたレベルによって決定されます。レベルが異なる場合、この実行では、実行レベルで適用された設定がワークフロー レベルで適用された設定をオーバーライドします。
      • execution-history-basic: 基本的な実行履歴を有効にします。
      • execution-history-detailed: スコープ内の変数と予想される反復回数を含む、詳細な実行履歴を有効にします。
    • LABEL_KEY=LABEL_VALUE: 省略可。 Google Cloud インスタンスの整理に役立つラベルの Key-Value ペアのリスト(例: name=wrench)。詳細については、ラベルとはをご覧ください。ワークフロー ラベルは、ワークフローの実行によって継承されます。実行ラベルを表示するには、workflows.executions.list メソッドを使用して、ワークフローの実行を一覧表示してフィルタします。

    • ENV_KEY=ENV_VALUE: 省略可。環境変数の Key-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 個の Unicode 文字以下にする必要があります。
  • LABEL_KEYLABEL_VALUE: 省略可。 Google Cloud インスタンスの整理に役立つラベルの Key-Value ペアのマップ。例: {"name": "wrench", "mass": "1kg", "count": "3"}。詳細については、ラベルとはをご覧ください。ワークフロー ラベルは、ワークフローの実行によって継承されます。実行ラベルを表示するには、workflows.executions.list メソッドを使用して、ワークフローの実行を一覧表示してフィルタします
  • 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: コールロギングなし。
  • EXECUTION_HISTORY_LEVEL: 省略可。実行中に適用する実行履歴のレベル。詳細については、実行ステップの履歴を表示するをご覧ください。次のいずれかになります。
    • EXECUTION_HISTORY_LEVEL_UNSPECIFIED: 実行履歴レベルは指定されていません。この設定がデフォルトです。実行の実行履歴レベルが指定されていない場合、ワークフローに適用されたレベルによって決定されます。レベルが異なる場合、実行レベルで適用された設定は、この実行のワークフロー レベルで適用された設定をオーバーライドします。
    • EXECUTION_HISTORY_BASIC: 基本的な実行履歴を有効にします。
    • EXECUTION_HISTORY_ADVANCED: スコープ内の変数と予想される反復回数を含む、詳細な実行履歴を有効にします。
  • 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",
  "executionHistoryLevel": "EXECUTION_HISTORY_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 の場合は、オペレーションが引き続き進行中です。

ワークフローの削除

既存のワークフローは削除できます。ワークフローを削除すると、そのワークフローの実行内容も削除され、実行中のワークフローもキャンセルされます。

コンソール

  1. Google Cloud コンソールで [ワークフロー] ページに移動します。

    [ワークフロー] に移動

  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 の場合は、オペレーションが引き続き進行中です。

次のステップ