google-cloud-platform - Google Cloud Composer 变量不会传播到 Airflow
问题描述
我正在尝试在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
而不是文章所说的。
我还要检查什么?自文档编写以来还有哪些变化?
编辑:这里描述了一个相关问题,似乎解决了第二个问题。
编辑:有趣的是,如果我运行这个免费实验室,第二个问题就不会发生。第一个还在。我正在比较一个和另一个中的角色,从与自动创建的作曲家项目无关的开始。并且没有以替代解决方案的格式创建服务帐户。
我将感谢任何人可以提供的任何帮助。
解决方案
从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 连接、机密和变量。(文档)
推荐阅读
- drupal - 如何从表单添加 Commerce Wishlist 共享邮件模板变量?
- python - '的无法解释的行为
在 [] == ' 构造 - intellij-idea - JetBrains IDE - 如何禁用影响 != == >= 和 <= 显示的精美条件运算符
- c# - 是否有技术原因通过传递回调参数传递状态,或通过闭包捕获它?
- css - 如何使 Grid 项目的所有内容拉伸到底部,减去排版?
- android - 杀死我启动的第三方应用程序
- python - AttributeError: 'function' 对象在 urls.py 中没有属性 'as_view'
- haskell - RecordWildCards 用于非记录功能
- python - 按水平顺序格式化 json 数据
- json - Ansible:json过滤