airflow - Google Cloud Composer DataflowJavaOperator:在另一个项目中创建作业时出现 403 Forbidden
问题描述
我正在尝试在我们的测试作曲家环境中使用 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 作业?
解决方案
您需要为 Composer 创建一个不同的 GCP 连接以与您的第二个 GCP 项目交互,并且您需要将该连接 ID 传递gcp_conn_id
给DataFlowJavaOperator
推荐阅读
- angular - Angular 6 - Dynamic Routing with Prefix
- powershell - 从作为文本文件加载到 powershell 中的 Cisco IOS 配置中读取部分行
- php - 更新页面内容而不刷新页面?
- php - 多张图片上传时间不会在Laravel的文件夹中上传相同的图片
- php - PHP create recursive list of header tags from DOM
- javascript - 如果值与 React Selectbox 中的其他值匹配,如何默认获取选定值?
- cordova - 扫描对象在 cordova-plugin-document-scanner 中被低估
- node.js - 安全级别访问nodejs和passport
- python - 跨唯一键组合两个查询集
- wordpress - wordpress htaccess http www redirect to https non-www