GEE-python 更新提示(含网页上Colab / JupyterLab 和基于本地的操作 )
【摘要】 今天收到了来在GEE开发中心的邮件,作为 Google 对安全性改进的一部分,您将看到(Python)ee.Authenticate()和(命令行)earthengine 身份验证调用的行为方式发生了一些变化。他们将继续生成凭证文件,但审批步骤会有所不同。具体修改部分:这仅适用于使用 Python 库或命令行工具的情况;代码编辑器没有变化。请将您的 Python 客户端升级到版本 0.1.3...
今天收到了来在GEE开发中心的邮件,作为 Google 对安全性改进的一部分,您将看到(Python)ee.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 或更高版本。
细节:
- 如前所述,这只适用于使用 Python 库或命令行工具的情况;代码编辑器没有变化。
- 重要提示:从下周开始,从我们的 Python 库的过期版本向 Google 地球引擎进行身份验证的请求将出错,并显示以下消息:
“错误 400:invalid_request。您使用的应用程序版本不包括最新的安全功能以保护您。请确保从受信任的来源下载并更新到最新、最安全的版本。” - Python 安装指南的身份验证部分提供了新的身份验证说明。我们有说明
最后,请注意“粘贴”auth_mode 将在下周被禁用,正如 4 月的邮件中提到的那样。
更新的具体操作流程:
Colab 或 JupyterLab 笔记本
您可以在 Colab 或 JupyterLab 环境中通过执行辅助函数ee.Authenticate()
并按照它生成的说明进行身份验证。
分步说明
- 浏览器:笔记本
- 在笔记本代码单元中,运行以下代码以使用“笔记本”模式启动身份验证流程。
单击单元格输出中的链接以在新选项卡中打开 Notebook Authenticator 页面。import ee ee.Authenticate()
- 在笔记本代码单元中,运行以下代码以使用“笔记本”模式启动身份验证流程。
- 浏览器:笔记本验证器
- 验证是否列出了正确的用户帐户。
- 选择要用于身份验证的 Google Cloud 项目。如果您需要创建一个新项目,我们建议使用命名约定“ee-xyz”,其中 xyz 是您常用的 Earth Engine 用户名。(如果您无法选择或创建 Cloud 项目,请参阅下面的 故障排除部分。)
- 单击生成令牌。
- 浏览器:帐户选择
- 您将看到一个帐户选择页面。单击要从笔记本授予访问权限的用户帐户。
- 浏览器:警告页面
- 出现一个警告页面,表明 Google 没有创建应用程序(即笔记本中的 Colab 代码)。单击继续确认。
- 浏览器:同意屏幕
- 指明您是否愿意授予请求的范围,然后单击 Continue。
- 浏览器:授权码屏幕
- 复制授权验证码/令牌。
- 浏览器:笔记本
- 切换回 Colab 选项卡,并将验证码/令牌粘贴到代码单元格输出中。
- 单元格输出应指示 “已成功保存授权令牌”。
- 继续初始化。
命令行
earthengine authenticate
您可以通过执行命令函数并按照它生成的指令 从命令行进行身份验证。此身份验证流程需要 在具有 Web 浏览器的计算机上 安装Google Cloud 命令行界面 (gcloud) 。
分步说明(本地机器)
- 验证gcloud是否安装在本地计算机上。
- 在终端中,运行
gcloud help
. 如果未安装 gcloud ,请按照这些说明 安装gcloud。
- 在终端中,运行
- 本地机终端
- 在终端中,运行
earthengine authenticate
. - 命令输出将表明gcloud正在用于获取凭据。
- 浏览器窗口将打开一个帐户选择页面。
- 在终端中,运行
- 浏览器:帐户选择
- 选择要用于身份验证的帐户。
- 浏览器:同意屏幕
- 指明您是否愿意授予请求的范围,然后单击“允许”。
- 浏览器:确认画面
- 浏览器将显示确认您已通过身份验证的页面,并且
earthengine authenticate
终端窗口中的命令将报告“已成功保存授权令牌”。
- 浏览器将显示确认您已通过身份验证的页面,并且
- 继续初始化。
分步说明(远程机器)
- 验证gcloud是否安装在本地机器和远程机器上。
- 在终端中,运行
gcloud help
. 如果未安装 gcloud ,请按照这些说明 安装gcloud。
- 在终端中,运行
- 远程机器终端
- 在终端中,运行
earthengine authenticate
. - 命令输出将表明gcloud正在用于获取凭据。
gcloud auth
将显示一个命令。复制整个命令。不要单击作为命令一部分的 URL。
- 在终端中,运行
- 本地机终端
- 粘贴并运行
gcloud auth
命令。 - 阅读警告,并表明您要继续。这将打开一个本地浏览器窗口。
- 粘贴并运行
- 浏览器:帐户选择
- 选择要用于身份验证的帐户。
- 浏览器:同意屏幕
- 指明您是否愿意授予请求的范围,然后单击“允许”。
- 浏览器:确认画面
- 浏览器将显示一个页面,确认您已通过身份验证。
- 本地机终端
- 复制以https://localhost:开头的 URL,该 URL出现在终端中。
- 远程机器终端
- 粘贴 URL 以回答提示“输入上述命令的输出:” ,然后按 Enter。
- 终端会报“已成功保存授权令牌”。
- 继续初始化。
使用服务帐户
如果您正在验证将在无人参与的情况下运行的 Python 代码,您可能希望使用服务帐户而不是用户帐户进行身份验证。有关在 Earth Engine 中使用服务帐户的 信息,请参阅 这些文档。
如果我无法创建云项目怎么办?
一些组织控制谁可以创建云项目。如果您在尝试创建项目时在 Notebook Authenticator 页面上收到错误消息,可以尝试以下方法:
- 尝试直接创建项目 以确认您是否具有必要的权限。
- 与您组织的管理员交谈,了解哪些流程可用于创建项目。
- 从非组织帐户创建项目,并将您用于工作的帐户添加为项目的所有者。
- 如果您在笔记本中运行,请在笔记本中运行
!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)