【问题标题】:Google Cloud Composer DataflowJavaOperator: 403 Forbidden When Creating Job in Another ProjectGoogle Cloud Composer DataflowJavaOperator:在另一个项目中创建作业时出现 403 Forbidden
【发布时间】:2018-10-08 19:46:25
【问题描述】:

我正在尝试在我们的测试作曲家环境中使用 DataflowJavaOperator,但我遇到了 403 forbidden 错误。我的意图是使用测试作曲器环境在不同的项目上启动 Dataflow Java 作业。

t2 = DataFlowJavaOperator(
        task_id = "run-java-dataflow-job",
        jar="gs://path/to/dataflow-jar.jar",
        dataflow_default_options=config_params["dataflow_default_options"],
        gcp_conn_id=config_params["gcloud_config"]["conn_id"],
        dag=dag
)

我的默认选项看起来像

'dataflow_default_options': {
  'project': 'other-project',
  'input': 'other-project:dataset.table',
  'output': 'other-project:dataset.table'
  ...
}

我尝试在与 Dataflow 相同的项目中创建一个临时作曲家测试环境,这使我可以按预期使用 DataflowJavaOperator。只有当 Composer 环境与 Dataflow 位于不同的项目中时,DataflowJavaOperator 才会按预期工作。

我目前的解决方法是使用 BashOperator,使用“env”将 GOOGLE_APPLICATION_CREDENTIALS 设置为 gcp_conn_id 路径,将 jar 文件存储在我们的测试作曲家存储桶中,然后运行这个 bash 命令:

java -jar /path/to/dataflow-jar.jar \ 
[... all Dataflow job options]

是否可以使用 DataflowJavaOperator 在另一个项目上启动 Dataflow 作业?

【问题讨论】:

    标签: airflow google-cloud-composer


    【解决方案1】:

    您需要为 Composer 创建一个不同的 GCP 连接来与您的第二个 GCP 项目交互,并且您需要将该连接 ID 传递给 DataFlowJavaOperator 中的 gcp_conn_id

    【讨论】:

    • 刚刚编辑。使用 BashOperator,如果我将 GOOGLE_APPLICATION_CREDENTIALS 设置为与我在 DataflowJavaOperator 中使用的 GCP 连接相同的路径,我就能够运行 Dataflow 作业。看起来 GCP 连接很好。
    • 或者,您可以将 Dataflow IAM 策略绑定添加到您的 Composer 环境使用的服务帐户,以便它拥有其他项目的权限。
    猜你喜欢
    • 2019-05-15
    • 1970-01-01
    • 2016-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-04
    • 2020-06-23
    • 2020-07-31
    相关资源
    最近更新 更多