libcloud和GCP。如何使用服务帐户进行身份验证

我正在尝试使用Apache libcloud访问GCP,并希望能够启动计算实例。因此,根据文档,我在与电子邮件相关联的GCP上创建了一个服务帐户,并为其提供了所有者访问权限。之后,我将如下使用libcloud:

from libcloud.compute.types import Provider
from libcloud.compute.providers import get_driver
ComputeEngine = get_driver(Provider.GCE)

driver = ComputeEngine('luca@googlemail.com','gcp-key.json',project='first-gcp')

这实际上显示一个URL,并要求我输入一个代码。当我单击URL时,出现错误消息:

The OAuth client was not found.

这不是我所设想的工作流程。我以为提供密钥只会让我进入,然后我便可以使用方法启动实例等。因此,我不确定是否通过在GCP上使用服务帐户来执行正确的操作。

因此,我得到以下询问代码:

所以我明白了:

Please Go to the following URL and sign in:

https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=xxx&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcompute+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdevstorage.full_control+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fndev.clouddns.readwrite&state=Libcloud+Request
Enter Code: 

我应该如何处理?最终,我们将是少数远程工作的人,因此理想情况下,每个人都将拥有自己的密钥,并且在不需要手动输入代码的意义上,这应该以某种自治的方式进行,这很好。 / p>

c363121143 回答:libcloud和GCP。如何使用服务帐户进行身份验证

从控制台(https://cloud.google.com/console)中,选择您的项目。当您的项目打开时,选择“ API和身份验证”,然后选择“凭据”,如下所示:

开发中:最好每个做一个,可以将一个全部用于测试。

在生产中:为每个要使用此服务的用户创建一个服务帐户。

下载服务帐户时,应将其保存为.pem.json文件。使用服务帐户中的电子邮件地址(如果打开json / pem,则可以看到该电子邮件),并为其提供正确的值region / project / email以及pem文件的路径。

您使用的代码是正确的,请避免使用名称“ ComputeEngine”,因为它可能是关键字(尽管可能不是最佳做法)

from libcloud.compute.types import Provider
from libcloud.compute.providers import get_driver
Driver = get_driver(Provider.GCE)
gce = Driver('your_service_account_email','path_to_pem_file',datacenter='us-central1-a',project='your_project_id')

看看here,如果您对任何步骤感到困惑。但这应该有效。

本文链接:https://www.f2er.com/3167346.html

大家都在问