Google Cloud Composer 变量不会传播到 Airflow

Google Cloud Composer variables do not propagate to Airflow

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

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

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

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

而不是文章所说的。

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

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

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

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

您是否已将角色 'composer.worker' 分配给您的服务帐户?然后和我一起出现在 UI.

一个非常重要的注意事项'environment_variables'与气流中的变量不同。所以更新你的环境变量将不起作用,尽管你可以使用环境变量而不是气流变量。确实可以通过 UI.

分配气流变量

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

Airflow v1.10.10 开始(从 2020 年 9 月 17 日起在 Composer 中可用),all-uppercase 中遵循格式 AIRFLOW_VAR_<VARIABLE_NAME> 的环境变量将作为名为 <variable_name>,小写。

例如:

AIRFLOW_VAR_GCS_BUCKET="example-bucket-name"

...会导致

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

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