google-cloud-platform - 使用云部署管理器解决部署数据流
问题描述
我用命令注册了数据流:gcloud deployment-manager type-providers create dataflow --descriptor-url='https://dataflow.googleapis.com/$discovery/rest?version=v1b3'
当我运行这个脚本
- name: "my-topic-to-avro"
type: 'project_id/dataflow:dataflow.projects.locations.templates.launch'
properties:
projectId: project_id
gcsPath: "gs://test-create-123"
jobName: "my-topic-to-avro"
location: "europe-west1"
parameters:
inputTopic: "projects/project_id/topics/test"
outputDirectory: "gs://test-create-123/"
avroTempDirectory: "gs://test-create-123/"
在输出中我有这个:
ERROR: (gcloud.beta.deployment-manager.deployments.update) Error in Operation [operation-1598980583c2a0ec69]: errors:
- code: RESOURCE_ERROR
location: /deployments/quick-deployment/resources/my-topic-to-avro
message: '{"ResourceType":"project_id/dataflow:dataflow.projects.locations.templates.launch","ResourceErrorCode":"401","ResourceErrorMessage":{"code":401,"message":"Request
is missing required authentication credential. Expected OAuth 2 access token,
login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.","status":"UNAUTHENTICATED","statusMessage":"Unauthorized","requestPath":"https://dataflow.googleapis.com/v1b3/projects/project_id/locations/europe-west1/templates:launch","httpMethod":"POST"}}'
我可以让我的令牌运行命令:gcloud auth print-access-token,但我不知道在哪里插入我的值以及我的 yaml 的架构以插入所有值以创建数据流。
任何帮助表示赞赏。
解决方案
向 Dataflow API 发出 POST 请求时触发的“401 - 请求缺少所需的身份验证凭据”错误消息是由于缺少凭据所致。以下公开参考详细说明了如何使用 OAuth 2.0 访问 Google API。请仔细阅读并确保按照上述步骤操作以避免任何错误。
检查这一点的另一个地方是仔细检查 Dataflow API 是否已启用,并尝试将“GOOGLE_APPLICATION_CREDENTIALS”设置为指向您正在使用的服务帐户的 JSON。
我找到了这个Authentication文档,其中提到您可以使用 Authorization 标头从项目的服务帐户提供访问令牌,您也可以尝试使用此方法,但重要的是要澄清这是 GKE 集群的示例。
我注意到这个问题在这篇文章中得到了解决。
推荐阅读
- angular - MSAL读取配置后如何更改clientId、权限值?[msal]
- swift - 在 SwiftUI 中的 makeUIView 中设置的值中访问 GeometryReader
- c# - 使用c#linq将listBox中的多个项目值插入一列
- javascript - 事件监听器由于某种原因没有触发
- javascript - 如何正确使用 Firestore 的 serverTimestamp 来设置正在订阅的文档的值?
- node.js - 如何充当代理服务器并修改传入的请求,然后在 NodeJS 中转发它们?
- python-3.x - 如何标记短语
- javascript - 在显示之前在表格中预加载视频
- c - 有没有更好的方法来迭代指针而不将其重新分配给不同的变量?
- sql - 如何使用 SQL 从数组中提取数据