GEE-python 更新提示(含网页上Colab / JupyterLab 和基于本地的操作 )

举报
此星光明 发表于 2022/06/02 10:31:08 2022/06/02
【摘要】 今天收到了来在GEE开发中心的邮件,作为 Google 对安全性改进的一部分,您将看到(Python)ee.Authenticate()和(命令行)earthengine 身份验证调用的行为方式发生了一些变化。他们将继续生成凭证文件,但审批步骤会有所不同。具体修改部分:这仅适用于使用 Python 库或命令行工具的情况;代码编辑器没有变化。请将您的 Python 客户端升级到版本 0.1.3...

今天收到了来在GEE开发中心的邮件,作为 Google 对安全性改进的一部分,您将看到(Pythonee.Authenticate()和(命令行)earthengine 身份验证调用的行为方式发生了一些变化。他们将继续生成凭证文件,但审批步骤会有所不同。

具体修改部分:

这仅适用于使用 Python 库或命令行工具的情况;代码编辑器没有变化。

请将您的 Python 客户端升级到版本 0.1.304(从 3 30 日起)或更高版本

运行身份验证命令时请注意不同的说明。

 

细节:

以前,身份验证命令会将您发送到 Google 帐户页面,询问“Google Earth Engine Authenticator”应用程序访问您的帐户的权限,并为您提供一个十六进制令牌以粘贴回控制台或脚本。 

命令行更改。您必须在运行earthengine 验证之前安装 gcloud - 所有新逻辑都将由 gcloud 处理。在本地计算机上运行时,该过程比以前更快,并且令牌粘贴会自动发生。如果命令行在远程机器上运行,gcloud 会要求您在本地机器上安装第二份 gcloud,步骤比较复杂:请仔细阅读说明!

Python  Colab更改。在笔记本中,您无需在任何地方安装 gcloud,而且设置也不同。  ee.Authenticate()会将您带到一个新的“笔记本验证器”页面,您需要在其中选择一个 Google Cloud 项目。如果您以前没有这样做过:您需要做的就是选择一个项目 ID,我们建议您使用“ee-xyz”,其中 xyz 是您常用的 Earth Engine 用户名。虽然某些 Google Cloud 服务是收费的,但使用云项目进行身份验证是免费的

然后,您将单击 Generate Token,其余步骤将类似,但身份验证器应用程序将特定于您的项目。还有一些额外的警告和额外的复选框来确认访问 Earth Engine 数据。


在上述某些情况下,这将需要您进行更多点击,才能达到相同的结果。这是不幸的,但我们必须这样做才能消除已知的潜在安全漏洞。您可以通过运行ee.Authenticate(auth_mode=' paste')earthengine authenticate --auth_mode=paste来使用旧方法,但这些选项将来将被禁用。在某些情况下,在笔记本中运行!earthengine authenticate或在远程 shell 中运行earthengine authenticate --auth_mode=notebook会很有用。

 

在接下来的几周内,每个人都需要升级他们的图书馆以使用新系统。我们建议您立即升级到 0.1.304 或更高版本。


需要采取的措施:请将您的 Python 客户端升级 0.1.304 或更高版本。

细节:

最后,请注意粘贴”auth_mode 将在下周被禁用,正如 4 月的邮件中提到的那样。

更新的具体操作流程:

Colab 或 JupyterLab 笔记本

您可以在 Colab 或 JupyterLab 环境中通过执行辅助函数ee.Authenticate()并按照它生成的说明进行身份验证。

分步说明

  1. 浏览器:笔记本
    1. 在笔记本代码单元中,运行以下代码以使用“笔记本”模式启动身份验证流程。

      import ee
      ee.Authenticate()
      单击单元格输出中的链接以在新选项卡中打开 Notebook Authenticator 页面。
  2. 浏览器:笔记本验证器
      1. 验证是否列出了正确的用户帐户。
      2. 选择要用于身份验证的 Google Cloud 项目。如果您需要创建一个新项目,我们建议使用命名约定“ee-xyz”,其中 xyz 是您常用的 Earth Engine 用户名。(如果您无法选择或创建 Cloud 项目,请参阅下面的 故障排除部分。)
    1. 单击生成令牌。
  3. 浏览器:帐户选择
    • 您将看到一个帐户选择页面。单击要从笔记本授予访问权限的用户帐户。
  4. 浏览器:警告页面
    • 出现一个警告页面,表明 Google 没有创建应用程序(即笔记本中的 Colab 代码)。单击继续确认。
  5. 浏览器:同意屏幕
    • 指明您是否愿意授予请求的范围,然后单击 Continue
  6. 浏览器:授权码屏幕
    • 复制授权验证码/令牌。
  7. 浏览器:笔记本
    • 切换回 Colab 选项卡,并将验证码/令牌粘贴到代码单元格输出中。
    • 单元格输出应指示 “已成功保存授权令牌”。
  8. 继续初始化。

命令行

earthengine authenticate您可以通过执行命令函数并按照它生成的指令 从命令行进行身份验证。此身份验证流程需要 在具有 Web 浏览器的计算机上 安装Google Cloud 命令行界面 (gcloud) 。

分步说明(本地机器)

  1. 验证gcloud是否安装在本地计算机上。
    • 在终端中,运行gcloud help. 如果未安装 gcloud ,请按照这些说明 安装gcloud
  2. 本地机终端
    • 在终端中,运行earthengine authenticate.
    • 命令输出将表明gcloud正在用于获取凭据。
    • 浏览器窗口将打开一个帐户选择页面。
  3. 浏览器:帐户选择
    • 选择要用于身份验证的帐户。
  4. 浏览器:同意屏幕
    • 指明您是否愿意授予请求的范围,然后单击“允许”。
  5. 浏览器:确认画面
    • 浏览器将显示确认您已通过身份验证的页面,并且 earthengine authenticate终端窗口中的命令将报告“已成功保存授权令牌”。
  6. 继续初始化。

分步说明(远程机器)

  1. 验证gcloud是否安装在本地机器和远程机器上。
    • 在终端中,运行gcloud help. 如果未安装 gcloud ,请按照这些说明 安装gcloud
  2. 远程机器终端
    • 在终端中,运行earthengine authenticate.
    • 命令输出将表明gcloud正在用于获取凭据。
    • gcloud auth将显示一个命令。复制整个命令。不要单击作为命令一部分的 URL。
  3. 本地机终端
    • 粘贴并运行gcloud auth命令。
    • 阅读警告,并表明您要继续。这将打开一个本地浏览器窗口。
  4. 浏览器:帐户选择
    • 选择要用于身份验证的帐户。
  5. 浏览器:同意屏幕
    • 指明您是否愿意授予请求的范围,然后单击“允许”。
  6. 浏览器:确认画面
    • 浏览器将显示一个页面,确认您已通过身份验证。
  7. 本地机终端
    • 复制以https://localhost:开头的 URL,该 URL出现在终端中。
  8. 远程机器终端
    • 粘贴 URL 以回答提示“输入上述命令的输出:” ,然后按 Enter。
    • 终端会报“已成功保存授权令牌”。
  9. 继续初始化。

使用服务帐户

如果您正在验证将在无人参与的情况下运行的 Python 代码,您可能希望使用服务帐户而不是用户帐户进行身份验证。有关在 Earth Engine 中使用服务帐户的 信息,请参阅 这些文档。

如果我无法创建云项目怎么办?

一些组织控制谁可以创建云项目。如果您在尝试创建项目时在 Notebook Authenticator 页面上收到错误消息,可以尝试以下方法:

  1. 尝试直接创建项目 以确认您是否具有必要的权限。
  2. 与您组织的管理员交谈,了解哪些流程可用于创建项目。
  3. 从非组织帐户创建项目,并将您用于工作的帐户添加为项目的所有者。
  4. 如果您在笔记本中运行,请在笔记本中运行 !earthengine authenticate --auth_mode=gcloud并按照说明进行操作。此身份验证流程不需要 Cloud 项目,但需要访问安装了 gcloud 的机器和 Web 浏览器。


错误:“项目具有不兼容的 OAuth2 客户端配置”

Cloud 项目只能有一个 OAuth2 客户端配置。您可以通过检查凭据页面上的 OAuth 2.0 客户端 ID 来检查云项目是否设置了 OAuth2 客户端配置。您需要选择另一个具有兼容配置的云项目,或者创建一个新的云项目并进行配置。

错误:“gcloud failed 请检查上述任何错误并在需要时安装 gcloud 

如果 gcloud 未安装或不在您的 PATH 上,则可能会发生此错误。如果您ee.Authenticate(auth_mode='gcloud')从笔记本代码单元中调用,也可能会发生这种情况。改为使用ee.Authenticate(),这将默认使用笔记本模式身份验证。如果您无法创建项目,请参阅上面的解决方案。

如果我无权访问本地计算机来安装 gcloud 怎么办?

如果您在没有本地终端访问的纯网络环境中工作,并且仍然需要使用远程终端,您仍然可以通过运行earthengine authenticate --auth_mode=notebook 命令触发笔记本模式来初始化命令行工具。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。