Google Cloud Composer 变量不会传播到 Airflow
Google Cloud Composer variables do not propagate to Airflow
我正在尝试 运行 Google Cloud Composer documentation 中的示例,我发现问题主要有两个:
通过 gcloud 命令行或 Web 界面创建的环境变量不会传播到 Airflow 层,导致 DAG 失败并报错 "Variable gcs_bucket do not exist"。如果我从 Airflow UI 添加变量,那么它就可以工作了。
DAG 已正确执行,但在任何阶段我都看不到人们会在 Airflow 中看到的链接组(树、图、...)。即使执行成功完成。
我已经检查了服务帐户(默认情况下使用环境创建)有权编辑和更新变量(编辑者角色)也可以通过 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)
我正在尝试 运行 Google Cloud Composer documentation 中的示例,我发现问题主要有两个:
通过 gcloud 命令行或 Web 界面创建的环境变量不会传播到 Airflow 层,导致 DAG 失败并报错 "Variable gcs_bucket do not exist"。如果我从 Airflow UI 添加变量,那么它就可以工作了。
DAG 已正确执行,但在任何阶段我都看不到人们会在 Airflow 中看到的链接组(树、图、...)。即使执行成功完成。
我已经检查了服务帐户(默认情况下使用环境创建)有权编辑和更新变量(编辑者角色)也可以通过 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)