首页 > 解决方案 > 使用云部署管理器解决部署数据流

问题描述

我用命令注册了数据流: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 的架构以插入所有值以创建数据流。

任何帮助表示赞赏。

标签: google-cloud-platformgoogle-cloud-dataflowgoogle-deployment-manager

解决方案


向 Dataflow API 发出 POST 请求时触发的“401 - 请求缺少所需的身份验证凭据”错误消息是由于缺少凭据所致。以下公开参考详细说明了如何使用 OAuth 2.0 访问 Google API。请仔细阅读并确保按照上述步骤操作以避免任何错误。

检查这一点的另一个地方是仔细检查 Dataflow API 是否已启用,并尝试将“GOOGLE_APPLICATION_CREDENTIALS”设置为指向您正在使用的服务帐户的 JSON。

我找到了这个Authentication文档,其中提到您可以使用 Authorization 标头从项目的服务帐户提供访问令牌,您也可以尝试使用此方法,但重要的是要澄清这是 GKE 集群的示例。

我注意到这个问题在这篇文章中得到了解决。


推荐阅读