6

我正在尝试使用服务帐户密钥在 Google Cloud Composer 中设置 Google Cloud Platform 连接。所以我创建了一个 GCS 存储桶并将服务帐户密钥文件放入存储桶中。密钥存储在 JSON 中。在密钥文件路径字段中,我指定了 GCS 存储桶,在密钥文件 JSON 字段中,我指定了文件名。范围是https://www.googleapis.com/auth/cloud-platform

尝试使用此连接启动 Dataproc 集群时,出现找不到 JSON 文件的错误。

查看错误消息,代码尝试使用以下方法解析文件: with open(filename, 'r') as file_obj这显然不适用于 GCS 存储桶路径。

所以我的问题是,如果这个服务帐户密钥文件不能放在 GCS 路径中,我应该把它放在哪里?

4

6 回答 6

4

我假设您希望您的操作员使用不同于 Composer 运行的默认自动生成计算帐户的服务帐户。

文档表明您可以为服务帐户添加新的 Airflow Connection,其中包括将整个 JSON 密钥文件复制粘贴到 Airflow Connection 配置中(选择Keyfile JSON连接Google Cloud Platform类型后查找)。

于 2018-08-01T22:38:48.633 回答
2

这对我来说没有多大意义。我不使用谷歌云,所以可能只是我在这里缺乏知识:

如果您尝试建立与 GCP 的连接,您如何将您的凭据存储在 GCP 中并期望从您的气流服务器连接?鸡和蛋的事。

查看gcp_api_base_hook.py气流回购中的内容,它似乎希望您在连接的额外 json 属性中指定key_path和/或 akeyfile_dict以及如何连接的逻辑在这里

于 2018-06-06T10:22:56.737 回答
1

将以下内容添加到您的 Extra 字段中:

'{"extra__google_cloud_platform__scope":"https://www.googleapis.com/auth/cloud-platform", "extra__google_cloud_platform__project":"{GOOGLE_CLOUD_PROJECT}", "extra__google_cloud_platform__key_path":"/path/to/gce-key.json"}'
于 2018-08-03T03:10:28.263 回答
0

Cloud Composer 应该为您设置一个不需要您指定 JSON 密钥的默认连接。对我来说,它适用于 GCS 和 BigQuery,而无需做任何额外的工作。

如果您创建自己的服务帐户,则将 JSON 密钥复制到创建的 composer 存储桶。该文件/路径是您将在附加字段中使用的内容。我认为 Composer 使用 gs: 或 gcs: 挂载点为文件系统添加前缀。在存储桶中的 Airflow.cfg 文件中应该有对它的引用。

此刻我没有一个人可以确定地告诉你,所以我正在凭记忆工作。

于 2018-11-12T15:38:44.670 回答
0

Composer 实例创建一个 GCS 存储桶,其中存储了所有 dag 和插件。您需要将 json 文件保存在 data 文件夹中,然后将路径作为映射位置 ex '/home/airflow/gcs/data/<service.json>' 。有关更多详细信息,请参阅链接 - https://cloud.google.com/composer/docs/concepts/cloud-storage

于 2021-07-18T16:39:01.367 回答
0

由于 Cloud Composer 存在于 GKE 集群中,您可以将您的服务帐户设置为kubernetes secret,然后您应该能够将它与Kubernetes Operator结合使用

于 2019-02-28T17:43:25.293 回答