0

我正在尝试在我的一个运行 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 会很好,否则我可能不得不将我的秘密添加到云作曲家环境变量中(这不是首选。)

对此有任何已知的解决方案吗?

4

1 回答 1

0

Airflow 网络服务器是 Cloud Composer 中的一个托管组件,因此正如其他人所说,它在您(作为环境所有者)无权访问的租户项目中运行。目前无法访问此项目。

如果您有在租户项目中启用额外 API 的有效用例,我建议您提交产品反馈。您可以从产品的公共文档中了解如何执行此操作(包括是否要向问题跟踪器提交功能请求)。

或者,如果您愿意尝试,AIP-24是一个名为DAG 数据库持久性的 Airflow 提案,它将 DAG 缓存在 Airflow 数据库中,而不是在网络服务器中解析/导入它们(这就是您需要 KMS 的原因情况)。如果您使用的是 Composer 1.8.1+,那么您可以通过设置core.store_serialized_dags=True. 请注意,它不能保证适用于所有 DAG,但在这里它可能对您有用。

于 2019-11-29T23:38:12.327 回答