【发布时间】:2019-11-30 07:38:12
【问题描述】:
我正在尝试在我的一个运行 PythonOperator 的 DAG 中使用 KMS 库,但在气流网络服务器中遇到错误:
details = "Cloud Key Management Service (KMS) API has not been used in project 'TENANT_PROJECT_ID' before or it is disabled. Enable it by visiting https://console.developers.google.com/apis/api/cloudkms.googleapis.com/overview?project='TENANT_PROJECT_ID' then retry. If you enabled this API recently, wait a few minutes for the action to propagate to our systems and retry."
气流网络服务器无法将我的特定 DAG 从我的宿主项目导入到租户项目(这是运行网络服务器的位置)。 DAG 运行没有问题,因为我的宿主项目设置正确,但没有机会在 UI 中监控它是一个巨大的缺点。
系统规格:
softwareConfig:
imageVersion: composer-1.8.2-airflow-1.10.3
pypiPackages:
google-cloud-kms: ==1.2.1
pythonVersion: '3'
如果能够利用 KMS 和气流 ui,那就太好了,否则我可能不得不将我的秘密添加到 Cloud Composer 环境变量中(这不是首选。)
对此有任何已知的解决方案吗?
【问题讨论】:
-
您是否为租户项目启用了 KMS API?如果没有,您可以访问此页面console.cloud.google.com/apis/dashboard。你能发布你的代码来检查你是如何处理密钥解密的吗?
-
我没有为租户项目启用 KMS API,我不确定如何访问租户项目以启用此功能,因为我没有直接访问此项目的权限。感谢您提供有关访问租户项目的任何提示!请注意,实际的 DAG 确实在我的工作节点上运行(因此它能够访问我的宿主项目上的 KMS,其中 composer 有它的工作节点等),并且我的 DAG 做了它应该做的事情。但是,当尝试将 dagbag 同步到运行气流网络服务器的租户项目时,它会引发错误,指出租户项目上未启用 KMS。
-
如果您无法登录仪表板或从项目列表中缺少租户项目,则无法启用。联系项目管理员。
-
似乎默认设置是气流网络服务器在租户项目管理 gcp 上的 appengine 上运行,没有最终用户访问权限:stackoverflow.com/questions/53762839/… - 但我会与我们的项目管理员确认。如果是这种情况,我们将不得不不使用 KMS 或自己运行网络服务器。我将在下面的评论中更新答案。感谢您的帮助!
-
似乎我们无权访问 Cloud Composer 上的租户项目。这有点不幸,因为我们在这里没有做任何处理,而只是为 UI 同步我们的 dags(但是可能还有其他东西在后台运行)。
标签: airflow google-cloud-composer google-cloud-kms