クイックスタート: gcloud CLI を使用してワークフローを作成する

gcloud CLI を使用してワークフローを作成する

このクイックスタートでは、Google Cloud CLI を使用して最初のワークフローを作成、デプロイ、実行する方法について説明します。サンプル ワークフローでは、公開 API にリクエストを送信して、API のレスポンスを返します。

すべての Workflows gcloud CLI コマンドのリストについては、Workflows gcloud CLI のリファレンス ページをご覧ください。

準備

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

  1. Google Cloud アカウントにログインします。Google Cloud を初めて使用する場合は、アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
  2. Google Cloud CLI をインストールします。
  3. gcloud CLI を初期化するには:

    gcloud init
  4. Google Cloud プロジェクトを作成または選択します

    • Google Cloud プロジェクトを作成します。

      gcloud projects create PROJECT_ID

      PROJECT_ID は、作成する Google Cloud プロジェクトの名前に置き換えます。

    • 作成した Google Cloud プロジェクトを選択します。

      gcloud config set project PROJECT_ID

      PROJECT_ID は、実際の Google Cloud プロジェクト名に置き換えます。

  5. Google Cloud プロジェクトで課金が有効になっていることを確認します

  6. Google Cloud CLI をインストールします。
  7. gcloud CLI を初期化するには:

    gcloud init
  8. Google Cloud プロジェクトを作成または選択します

    • Google Cloud プロジェクトを作成します。

      gcloud projects create PROJECT_ID

      PROJECT_ID は、作成する Google Cloud プロジェクトの名前に置き換えます。

    • 作成した Google Cloud プロジェクトを選択します。

      gcloud config set project PROJECT_ID

      PROJECT_ID は、実際の Google Cloud プロジェクト名に置き換えます。

  9. Google Cloud プロジェクトで課金が有効になっていることを確認します

  10. ワークフロー API を有効にします。

    gcloud services enable workflows.googleapis.com
  11. サービス アカウントを作成して名前を付けます。例: sa-name
    gcloud iam service-accounts create sa-name
  12. Cloud Logging にログを送信するには、サービス アカウントに roles/logging.logWriter ロールを付与します。
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member "serviceAccount:sa-name@PROJECT_ID.iam.gserviceaccount.com" \
        --role "roles/logging.logWriter"
    

    サービス アカウントのロールと権限の詳細については、ワークフローに Google Cloud リソースへのアクセス権限を付与するをご覧ください。

ワークフローを作成、デプロイ、実行する

  1. ホーム ディレクトリで、myFirstWorkflow.yaml または myFirstWorkflow.json という名前の新しいファイルを作成します。

  2. 次のワークフローをコピーして新しいファイルに貼り付け、保存します。

    YAML

    main:
      params: [input]
      steps:
        - checkSearchTermInInput:
            switch:
              - condition: '${"searchTerm" in input}'
                assign:
                  - searchTerm: '${input.searchTerm}'
                next: readWikipedia
        - getLocation:
            call: sys.get_env
            args:
              name: GOOGLE_CLOUD_LOCATION
            result: location
        - setFromCallResult:
            assign:
              - searchTerm: '${text.split(location, "-")[0]}'
        - readWikipedia:
            call: http.get
            args:
              url: 'https://en.wikipedia.org/w/api.php'
              query:
                action: opensearch
                search: '${searchTerm}'
            result: wikiResult
        - returnOutput:
            return: '${wikiResult.body[1]}'

    JSON

    {
      "main": {
        "params": [
          "input"
        ],
        "steps": [
          {
            "checkSearchTermInInput": {
              "switch": [
                {
                  "condition": "${\"searchTerm\" in input}",
                  "assign": [
                    {
                      "searchTerm": "${input.searchTerm}"
                    }
                  ],
                  "next": "readWikipedia"
                }
              ]
            }
          },
          {
            "getLocation": {
              "call": "sys.get_env",
              "args": {
                "name": "GOOGLE_CLOUD_LOCATION"
              },
              "result": "location"
            }
          },
          {
            "setFromCallResult": {
              "assign": [
                {
                  "searchTerm": "${text.split(location, \"-\")[0]}"
                }
              ]
            }
          },
          {
            "readWikipedia": {
              "call": "http.get",
              "args": {
                "url": "https://en.wikipedia.org/w/api.php",
                "query": {
                  "action": "opensearch",
                  "search": "${searchTerm}"
                }
              },
              "result": "wikiResult"
            }
          },
          {
            "returnOutput": {
              "return": "${wikiResult.body[1]}"
            }
          }
        ]
      }
    }
    

    独自の検索キーワードを入力しない限り、このワークフローでは Google Cloud のロケーションを使用して検索キーワードが作成されます。この検索キーワードは Wikipedia API に渡されます。関連する Wikipedia の記事のリストが返されます。

  3. ワークフローをデプロイし、指定されたサービス アカウントに関連付けます。

    gcloud workflows deploy myFirstWorkflow --source=myFirstWorkflow.EXTENSION \
        --service-account=sa-name@PROJECT_ID.iam.gserviceaccount.com
    

    次のように置き換えます。

    • EXTENSION: ワークフローのファイル拡張子。YAML バージョンには yaml を使用し、JSON バージョンには json を使用する
    • PROJECT_ID: プロジェクト ID
  4. ワークフローを実行します。

    gcloud workflows run myFirstWorkflow \
        --data='SEARCH_TERM'
    

    SEARCH_TERM は、検索キーワードで置き換えます。例: {"searchTerm":"North"}{}」と入力すると、Google Cloud のロケーションを使用して検索キーワードが作成されます。

    実行の試行結果が返されます。出力は次のようになります。

    argument: '{"searchTerm":"North"}'
    duration: 0.210616856s
    endTime: '2023-05-10T21:56:39.465899376Z'
    name: projects/734581694262/locations/us-central1/workflows/workflow-1/executions/eae31f11-a5c3-47e2-8014-05b400820a79
    result: '["North","North America","Northern Ireland","North Korea","North Macedonia","North
      Carolina","Northrop Grumman B-2 Spirit","Northrop F-5","Northern Cyprus","North
      Dakota"]'
    startTime: '2023-05-10T21:56:39.255282520Z'
    state: SUCCEEDED
    status:
      currentSteps:
      - routine: main
        step: returnOutput
    workflowRevisionId: 000001-ac2
    

これで最初のワークフローのデプロイと実行が完了しました。

クリーンアップ

このページで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、Google Cloud プロジェクトとそのリソースをまとめて削除してください。

  1. 作成したワークフローを削除します。

    gcloud workflows delete myFirstWorkflow
    
  2. 続行を確認するメッセージが表示されたら、「y」と入力します。

ワークフローが削除されます。

次のステップ