Cloud Functions または Cloud Run を呼び出す

Cloud Functions や Cloud Run Workflows などの Google Cloud サービスの呼び出しは、HTTP リクエストを介して行われます。最も一般的な HTTP リクエスト メソッドには、呼び出しショートカット(http.gethttp.post など)がありますが、call フィールドを http.request に設定し、method フィールドでリクエストのタイプを指定することであらゆるタイプの HTTP リクエストを作成できます。詳細については、HTTP リクエストを行うをご覧ください。

認証済みリクエストを送信するには、次のようにする必要があります。

  • ワークフローは、必要な権限を持つ 1 つ以上の Identity and Access Management(IAM)ロールが付与されているサービス アカウントに関連付ける必要があります。

  • 認証情報は、明示的にワークフロー定義に追加する必要があります。デフォルトでは、セキュリティ上の理由から、HTTP リクエストには ID やアクセス トークンが含まれていません。

なお、Cloud Functions や Cloud Run サービスは、パブリック トラフィックを受け入れる必要があります。詳細については、ワークフローの認証をご覧ください。

必要な権限を持つサービス アカウントを使用する

他の Google Cloud サービス対してリクエストを行う場合は、リクエストされたリソースにアクセスするのに適切な権限を持つサービス アカウントにワークフローを関連付ける必要があります。既存のワークフローに関連付けられているサービス アカウントについては、ワークフローに関連付けられたサービス アカウントの確認をご覧ください。

サービス アカウントを設定するときに、リクエスト対象の ID をアクセス権を付与するリソースと関連付けます。リクエスト元 ID は、そのリソースのプリンシパルとし、適切なロールを指定します。このロールでは、リソースのコンテキストで ID が持つ権限を定義します。

たとえば、受信側の Cloud Functions の関数が特定の呼び出し側関数やサービスからのリクエストを受け入れるように構成するには、呼び出し元のサービス アカウントを受信側の関数のプリンシパルとして追加し、そのプリンシパルに Cloud Functions 起動元(roles/cloudfunctions.invoker)ロールを付与する必要があります。同様に、Cloud Run のサービス アカウントを設定するには、そのサービス アカウントに Cloud Run 起動元(roles/run.invoker)ロールを付与します。詳細については、Cloud Functions の認証情報または Cloud Run 認証の概要をご覧ください。

ワークフローに認証情報を追加する

Cloud Functions や Cloud Run にリクエストを送信するときは、OIDC を使用して認証します。

OIDC を使用して HTTP リクエストを行うには、URL を指定した後に、ワークフローの定義の args セクションに auth セクションを追加します。この例では、Cloud Functions を呼び出すために、リクエストが送信されます。

YAML

  - step_A:
      call: http.get
      args:
          url: https://us-central1-project.cloudfunctions.net/functionA
          query:
              firstNumber: 4
              secondNumber: 6
              operation: sum
          auth:
              type: OIDC
              [audience: OIDC_AUDIENCE]
    

JSON

    [
      {
        "step_A": {
          "call": "http.get",
          "args": {
            "url": "https://us-central1-project.cloudfunctions.net/functionA",
            "query": {
              "firstNumber": 4,
              "secondNumber": 6,
              "operation": "sum"
            },
            "auth": {
              "type": "OIDC",
              ["audience": "OIDC_AUDIENCE"]
            }
          }
        }
      }
    ]
      
audience パラメータは省略できますが、これを使用することで、トークンの OIDC オーディエンスを指定できます。デフォルトでは、url と同じ値に設定されています。

次のステップ