如何通过 API Gateway Config 调用 Workflows?

How to call Workflows via API Gateway Config?

我改变了我的方法,转而使用之前有效的方法。我配置了一个 API 网关来调用 Google 云函数,当我传入 api 密钥时,它以适当的权限调用它们。我认为在尝试调用工作流时出错,因为我没有指定资源。虽然不确定......看起来 API 密钥正在工作,但 OAuth 失败了。自从我完成工作流后,我的 OAuth 配置了一个新连接。它在我这边进行了身份验证,我在 google 中单击了我的帐户以及所有内容。我 99.99% 确定 OAuth 配置正确。当我使用 API 网关调用 GCP 功能时,我不必使用 OAuth。

  1. 工作流是否需要 OAuth API?有什么变通办法吗?

  2. 如何在 API 网关配置中指定工作流的参数?

命名凭据:

Label   GoogleCloudFunction
Name    GoogleCloudFunction
URL https://workflowexecutions.googleapis.com
Hide Section - AuthenticationAuthentication
Certificate  
Identity Type   Named Principal
Authentication Protocol OAuth 2.0
Authentication Provider GoogleCloudAuth
Scope   https://www.googleapis.com/auth/cloud-platform
Authentication Status   Authenticated

从 API 网关登录:

httpRequest: {
latency: "0.039s"
protocol: "http"
requestMethod: "POST"
requestSize: "1269"
requestUrl: "/create-site-tracker-site?key=HIDDEN"
responseSize: "743"
status: 401
}
insertId: "48330ec2-7114-4270-b465-68ae6308bdc34850908905639612439@a1"
jsonPayload: {
api_key: "HIDDEN"
api_key_state: "VERIFIED"
api_version: "1.0.0"
http_status_code: 401
location: "us-central1"
log_message: "1.create_site_tracker_site_0s5865srg8pbr_apigateway_quick_hangout_329722_cloud_goog.CreateSiteFunction is called"
response_code_detail: "via_upstream"
}

API 配置


# openapi2-functions.yaml
swagger: '2.0'
info:
  title: create-site-tracker-site with auth
  description: Create Site in Site Tracker using JSForce
  version: 1.0.0
schemes:
  - https
produces:
  - application/json
paths:
  /create-site-tracker-site:
    post:
      summary: Create Site
      operationId: createSiteFunction
      x-google-backend:
        address: https://workflowexecutions.googleapis.com/v1/projects/us-central1-quick-hangout-329722/locations/us-central1/workflows/create-site-and-project/executions
      security:
      - api_key: []
      responses:
        '200':
          description: A successful response
          schema:
            type: string
securityDefinitions:
  # This section configures basic authentication with an API key.
  api_key:
    type: "apiKey"
    name: "key"
    in: "query" 

您的 HTTP 请求似乎不包含“授权”header。否则,除非您的 Cloud Functions 允许未经身份验证的调用,否则您的调用不太可能成功。

很难理解你在做什么,因为例如“当我手动测试时有效”是不精确的,并且提供的信息很少关于你做了什么。我假设 (!?) 您正在使用 gcloud functions call 为您进行身份验证。

请为您的问题添加更多详细信息,包括您尝试过的命令以及成功和失败的命令,并包括错误消息。

Google 的大部分服务都公开为 REST API,因此您可以使用简单的 HTTP 命令调用几乎所有内容。

当前的解决方法是从 google 云函数调用工作流,然后通过 API 网关调用该函数并传递密钥。恶心但有效