【问题标题】:Google Cloud Composer variables do not propagate to AirflowGoogle Cloud Composer 变量不会传播到 Airflow
【发布时间】:2019-03-19 10:52:05
【问题描述】:

我正在尝试在Google Cloud Composer documentation 上运行该示例,但我发现了问题,主要是两个:

  • 通过 gcloud 命令行或 Web 界面创建的环境变量不会传播到 Airflow 层,从而导致 DAG 无法抱怨“变量 gcs_bucket 不存在”。如果我从 Airflow UI 添加变量,那么它可以工作。

  • DAG 已正确执行,但在任何阶段我都看不到在 Airflow 中看到的链接组(树、图、...)。即使在执行成功完成之后。

我已经检查了服务帐户(默认情况下使用环境创建)是否有权编辑和更新变量(编辑角色)也可以通过 API 访问。

我发现文档不是最新的,例如创建我需要使用的变量:

gcloud composer environments update test-environment \ 
--location=us-central1 \
--update-env-variables=gcs_bucket=gs://airflow2

而不是文章所说的。

我还要检查什么? 自文档编写以来还有哪些变化?

编辑:here 描述了一个相关问题,似乎解决了第二个问题。

编辑:有趣的是,如果我免费运行此lab,则不会发生第二个问题。第一个还在。我正在比较一个和另一个中的角色,从与自动创建的作曲家项目无关的开始。并且没有以替代解决方案的格式创建服务帐户。

如果有人能提供任何帮助,我将不胜感激。

【问题讨论】:

  • 是的,这似乎是我遇到的问题之一。问题是,当我按照说明进行操作时,我收到错误消息说“变量”不是可识别的子命令(或类似的东西)。我今天早上又试了一次,效果很好。
  • 我把它放在里面作为答案。请接受我的回答,这样这个问题就解决了。

标签: google-cloud-platform airflow google-cloud-composer


【解决方案1】:

Airflow v1.10.10 开始(自 2020 年 9 月 17 日起在 Composer 中可用),格式为 AIRFLOW_VAR_<VARIABLE_NAME> 的全大写环境变量将作为名为 <variable_name> 的 Airflow 变量以小写形式提供给 Airflow。

例如:

AIRFLOW_VAR_GCS_BUCKET="example-bucket-name"

...会导致

models.Variable.get("gcs_bucket") # --> example-bucket-name

您现在还可以使用 Secret Manager 来存储 Airflow 连接、机密和变量。 (Documentation)

【讨论】:

  • 1.10.10 现在是 available,截至 2020 年 9 月 17 日。感谢您的提示!
  • 非常感谢!它解决了我的问题。
【解决方案2】:

您是否为您的服务帐号分配了“composer.worker”角色?然后我会在 UI 中显示 dag。

一个非常重要的注意事项“环境变量”与气流中的变量不同。因此,尽管您可以使用环境变量而不是气流变量,但更新您的环境变量将不起作用。气流变量确实可以通过 UI 分配。

【讨论】:

    【解决方案3】:

    按照教程一步一步失败了,这让我尝试了其他事情。在这个测试替代方案中,我犯了将 Composer 变量与 Airflow 变量混淆的错误,这就是我对问题的表述。但根本问题是教程步骤失败可能是由于环境设置过程中的一些故障。显然,该工具存在限制,特别是如果您在澳大利亚,就像我的情况一样,例如发布在 herehere 的那些。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-08-15
      • 2022-07-05
      • 1970-01-01
      • 2021-01-27
      • 2020-07-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多