我们正在对当前架构进行少量更改,并希望实施谷歌云工作流程,以跟踪项目创建的流程。所有处理程序都放置在 Cloud Run 中。现在,如何从 Cloud Run 调用工作流中的特定端点?
我只有一个云运行 URL?我是云新手。任何帮助都感激不尽。
我们正在对当前架构进行少量更改,并希望实施谷歌云工作流程,以跟踪项目创建的流程。所有处理程序都放置在 Cloud Run 中。现在,如何从 Cloud Run 调用工作流中的特定端点?
我只有一个云运行 URL?我是云新手。任何帮助都感激不尽。
总结一下您是否愿意 - 将工作流与 Cloud Run 和 Cloud Functions 结合使用。请看看这个 -这里
仅供参考,以下是以上面的抽象步骤为例,为您提供一个想法,您必须在其中创建一个工作流,一次连接一个服务:
摘录,举个例子(来自上面的参考),创建一个基于容器的 Cloud Run 服务并在 Workflows 中调用/附加它......
构建容器镜像:
export SERVICE_NAME=<your_svc_name>
gcloud builds submit --tag gcr.io/${GOOGLE_CLOUD_PROJECT}/${SERVICE_NAME}
将容器映像部署到 Cloud Run,确保它只接受经过身份验证的调用:
gcloud run deploy ${SERVICE_NAME} \
--image gcr.io/${GOOGLE_CLOUD_PROJECT}/${SERVICE_NAME} \
--platform managed \
--no-allow-unauthenticated
当您看到服务 URL时,部署完成。您需要在更新工作流定义时指定该 URL。
使用文件名创建一个文本文件,例如“workflows.yaml”,其内容如下:
- randomgen_function:
call: http.get
args:
url: https://us-central1-*****.cloudfunctions.net/randomgen
result: randomgen_result
- multiply_function:
call: http.post
args:
url: https://us-central1-*****.cloudfunctions.net/multiply
body:
input: ${randomgen_result.body.random}
result: multiply_result
- log_function:
call: http.get
args:
url: https://api.mathjs.org/v4/
query:
expr: ${"log(" + string(multiply_result.body.multiplied) + ")"}
result: log_result
- floor_function:
call: http.post
args:
url: https://**service URL**
auth:
type: OIDC
body:
input: ${log_result.body}
result: floor_result
- return_result:
return: ${floor_result}
注意:这里您将服务 URL替换为上面生成的 Cloud Run 服务 URL。
这将连接工作流中的 Cloud Run 服务。请注意,身份验证密钥可确保在对 Cloud Run 服务的调用中传递身份验证令牌。
部署工作流,传入服务帐户:
cd ~
gcloud workflows deploy <<your_workflows_name>> \
--source=workflow.yaml \
--service-account=${SERVICE_ACCOUNT}@${GOOGLE_CLOUD_PROJECT}.iam.gserviceaccount.com
执行工作流:
gcloud workflows run <<your_workflows_name>>
输出应类似于以下内容:
result: '{"body":............;
...
startTime: '2021-05-05T14:36:48.762896438Z'
state: SUCCEEDED