Google Cloud Composer 变量不会传播到 Airflow

Pic*_*rus 3 google-cloud-platform airflow google-cloud-composer

我正在尝试运行Google Cloud Composer 文档中的示例,但我发现了问题,主要有两个:

  • 通过 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
Run Code Online (Sandbox Code Playgroud)

而不是文章所说的。

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

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

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

我将感谢任何人可以提供的任何帮助。

Tyl*_*r W 5

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

例如:

AIRFLOW_VAR_GCS_BUCKET="example-bucket-name"
Run Code Online (Sandbox Code Playgroud)

...会导致

models.Variable.get("gcs_bucket") # --> example-bucket-name
Run Code Online (Sandbox Code Playgroud)

您现在还可以使用 Secret Manager 来存储 Airflow 连接、秘密和变量。(文档

  • 截至 2020 年 9 月 17 日,1.10.10 现已[可用](https://cloud.google.com/composer/docs/release-notes#September_17_2020)。感谢您的提示! (2认同)