4

我正在尝试在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

而不是文章所说的。

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

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

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

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

4

3 回答 3

5

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

例如:

AIRFLOW_VAR_GCS_BUCKET="example-bucket-name"

...会导致

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

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

于 2020-08-10T22:26:09.550 回答
3

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

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

于 2018-10-16T04:40:52.720 回答
1

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

于 2018-10-16T23:03:08.823 回答