GDAL:从私有 google 云存储桶中读取栅格

GDAL: reading rasters from a private google cloud bucket

我想使用 GDAL 通过 gs:// URI 从私有 google 云存储桶中读取栅格数据集。根据 VSI documentation 的一种验证方式是 GS_SECRET_ACCESS_KEYGS_ACCESS_KEY_ID.

我拥有可以访问目标存储桶的服务帐户的这些凭据,但是当将它们设置为环境变量时,我得到了 403 响应。

此外,尝试访问 public 数据集,如

gdalinfo /vsigs/gcp-public-data-sentinel-2/tiles/32/V/LQ/S2B_MSIL1C_20181108T111249_N0207_R137_T32VLQ_20181108T113514.SAFE/MTD_MSIL1C.xml

还有 returns 403 凭据设置错误。

通过 gsutil config -a 的动议时,我需要指定 project-id,我没有这些凭据。

我尝试使用不同的凭据,我知道 project-id 并且一切似乎突然都有效。

我找到的唯一相关讨论 ([1], [2]) 没有提及任何关于 project-id 的内容。

所以,我的问题是

似乎与凭据混淆了。没有(有效)凭据,也无法读取 public 数据集。

一种身份验证方法是对具有足够权限的服务帐户使用有效的 GS_ACCESS_KEY_ID + GS_SECRET_ACCESS_KEY 组合。

这些可以设置为环境变量或存储在 .boto 文件中。

如果存储在 .boto 文件中,这可以手动完成

[Credentials]
gs_access_key_id=<YOURKEY>
gs_secret_access_key=<YOURSECRET>

或 运行 gsutil config -a 哪种情况下你会被要求 project-id。但至少为了这个目的,只要输入一个东西,这个id是否正确似乎没有什么不同。