创建 google 数据实验室实例时出错

Error in creating google datalab instance

我正在尝试按照Datalab: Notebook in the Cloud video执行,在执行datalab create ai-adventures命令时,我遇到了这个错误。

ERROR: (gcloud.compute.instances.create) Could not fetch resource:
 - The user does not have access to service account '*@compute-system.iam.gserviceaccount.com'.  User: '*@gmail.com'.  Ask a project owner to grant you the iam.serviceAccountUser role on the service account

一些注意事项;

如有任何建议,我们将不胜感激!


编辑 1

下面是信息,正如您在通过 gcloud auth list 指令检查时看到的,我是所有者,但它告诉我我没有权限。

~ ⌚ 18:40:34
$ datalab create ai-adventures-3 --machine-type=n1-standard-4 --zone=us-central1-b
Creating the disk ai-adventures-3-pd
Creating the instance ai-adventures-3
ERROR: (gcloud.compute.instances.create) Could not fetch resource:
 - The user does not have access to service account 'service-510602609611@compute-system.iam.gserviceaccount.com'.  User: 'XXX@gmail.com'.  Ask a project owner to grant you the iam.serviceAccountUser role on the service account

A nested call to gcloud failed, use --verbosity=debug for more info.

~ ⌚ 15:02:59
$ gcloud auth list
          Credentialed Accounts
ACTIVE  ACCOUNT
*       XXX@gmail.com
        AAA@gmail.com

To set the active account, run:
    $ gcloud config set account `ACCOUNT`



~ ⌚ 15:03:45
$

我尝试在我自己的项目中重现您的错误,使用不同的方式连接到它,使用不同的用户和帐户服务。

我发现了一些可能对你有帮助的东西。

  • 首先,我使用 OS debian-9-drawfork-v20200207 创建了一个新的 VMInstance。
  • 我通过 SSH 登录到这个新实例
  • 但是当我尝试使用命令创建这个数据实验室实例时

datalab create --verbosity=debug example-datalab-2 --machine-type n1-standard-1

我收到一个错误。

  • 然后我发送以下命令

gcloud auth list

我收到了类似的东西:

                  Credentialed Accounts
ACTIVE  ACCOUNT
   *   XXXXX@developer.gserviceaccount.com

To set the active account, run:
    $ gcloud config set account `ACCOUNT`

这意味着如果我尝试使用此帐户服务创建新的数据实验室实例,但此帐户没有创建笔记本实例的角色。

  • 然后我使用 gcloud auth login 命令将用户更改为具有所有者角色的帐户和 re-ran datalab create 命令并且它起作用了。

  • 为了证实它运行良好,我使用了命令 datalab connect example-datalab-2

我收到了类似

的东西
Connecting to example-datalab-2.
This will create an SSH tunnel and may prompt you to create an rsa key pair. To manage these keys, see https://cloud.google.com/compute/docs/instances/adding-removing-ssh-keys
Waiting for Datalab to be reachable at http://localhost:8081/
This tool needs to create the directory [/home/directory/.ssh] before
being able to generate SSH keys.

Do you want to continue (Y/n)?  y

Generating public/private rsa key pair.
.
.
.
Updating project ssh metadata...done.
Waiting for SSH key to propagate.

The connection to Datalab is now open and will remain until this command is killed.
Click on the *Web Preview* (square button at top-right), select *Change port > Port 8081*, and start using Datalab.

然后如果我访问 http://localhost:8081/ 我可以看到:

值得一提的是,我在第一次尝试时收到了另一个错误消息

ERROR: (gcloud.source.repos.list) User [user@example.com] does not have permission to access project [myproject] (or it may not exist): Cloud Source Repositories API has not been used in project xxxxxxxx before or it is disabled.

我用命令

解决了这个启用服务的问题

gcloud beta services enable sourcerepo.googleapis.com

另一方面,为了更准确地解决此问题,我建议 re-run 使用带有以下调试标志的命令来帮助诊断问题:

datalab create --verbosity=debug datalab-instance-name

另外,我找到了 2 个可以帮助您完成任务的指南:

希望此信息对您有用。


编辑 1

关于您提到的服务帐户 tutorial@*.iam.gserviceaccount.com,我发现了以下内容 document 其中说您可以使用服务帐户而不是默认服务帐户来创建您的数据实验室,但是您需要添加以下角色:

roles/compute.instanceAdmin.v1

roles/iam.serviceAccountUser

因此,请检查您的 SA 是否具有这些角色,然后您可以 运行 相同的命令 + --service-account 类似于:

datalab create ai-adventures --service-account=tutorial@*.iam.gserviceaccount.com

您可以在以下内容中查看更多信息link

这个问题比我想象的更有趣,我在使用 Datalab 时遇到了几个问题,我们可以考虑到您 mentioned 的视频已于 2018 年 1 月 11 日发布并且 Google Cloud Platform 发展非常快,当时可以运行的东西可能会在 2 年后完全改变。

因此,我建议您使用 AI Platform Notebooks page since it has similar features as Datalab, and according with the following documentation 它于 2020 年 3 月 31 日正式发布。

试用后,它似乎适合您的用例,并且它还具有通过使用 R 笔记本连接到 Bigquery 的功能。