如何通过 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。
工作流是否需要 OAuth API?有什么变通办法吗?
如何在 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 网关调用该函数并传递密钥。恶心但有效
我改变了我的方法,转而使用之前有效的方法。我配置了一个 API 网关来调用 Google 云函数,当我传入 api 密钥时,它以适当的权限调用它们。我认为在尝试调用工作流时出错,因为我没有指定资源。虽然不确定......看起来 API 密钥正在工作,但 OAuth 失败了。自从我完成工作流后,我的 OAuth 配置了一个新连接。它在我这边进行了身份验证,我在 google 中单击了我的帐户以及所有内容。我 99.99% 确定 OAuth 配置正确。当我使用 API 网关调用 GCP 功能时,我不必使用 OAuth。
工作流是否需要 OAuth API?有什么变通办法吗?
如何在 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 网关调用该函数并传递密钥。恶心但有效