google-cloud-composer - Cloud Composer 缺少变量文件
问题描述
我一直在尝试使用气流 CLI将环境变量的 JSON 文件导入新创建的 Cloud Composer 实例,但是在运行以下命令时出现错误:Missing variables file.
gcloud composer environments run ${COMPOSER_NAME} \
--location=${COMPOSER_LOCATION} \
variables -- \
-i ${VARIABLES_JSON}
从查看源代码来看,这似乎是在预期位置不存在环境变量文件时发生的。这是因为 Cloud Composer 在不同的位置设置了它的变量,所以这个 CLI 不起作用?我注意到env_var.json
在实例的 GCS 存储桶上创建了一个文件,我意识到我可以覆盖这个文件,但这似乎不是最佳实践。
解决方案
感觉就像是 hack,但我将其复制variables.json
到 Composer 的 GCS 存储桶数据文件夹中,然后它就起作用了。
这是由于os.path.exists()
检查了 Airflow 正在运行的容器。我选择了这种覆盖覆盖的方法,env_var.json
因为我使用这种方法在 Airflow 的 UI 中获得了变量。
任何有兴趣的人的脚本:
COMPOSER_DATA_FOLDER=/home/airflow/gcs/data
COMPOSER_GCS_BUCKET=$(gcloud composer environments describe ${COMPOSER_NAME} --location ${COMPOSER_LOCATION} | grep 'dagGcsPrefix' | grep -Eo "\S+/")
gsutil cp ${ENV_VARIABLES_JSON_FILE} ${COMPOSER_GCS_BUCKET}data
gcloud composer environments run ${COMPOSER_NAME} \
--location ${COMPOSER_LOCATION} variables -- \
-i ${COMPOSER_DATA_FOLDER}/variables.json
推荐阅读
- javascript - 使图形框架适合内容 InDesign
- html - CSS opacity 属性在 Chrome 上不起作用
- python - 如何将数据框中的 JSON 列分解为可用部分?
- python - 如何在python中使用Falcon将客户端'GET'请求从一个API路由到另一个具有相同端点的API?
- javascript - 导出独立的 swagger-ui
- python - 图轴文本、刻度和标签
- r - 在 r 中创建一个与 end 匹配的序列
- android - Android Kotlin 从 Activity 中获取 Fragment 中的 Zxing 条码结果
- python - Pandas 聚合 - 如何根据活动日期查找最近的活动
- c# - 使用 Fiddler 和 Web REST API