当发出 gsutil iam get gs://test-bucket/ cmd 时得到 "Failure: GetBucketIamPolicy must be overloaded"
got "Failure: GetBucketIamPolicy must be overloaded" when gsutil iam get gs://test-bucket/ cmd is issued
Google Cloud gsutil iam get gs://testBucket 命令应该 return 存储桶策略,但却收到了 "Failure: GetBucketIamPolicy must be overloaded"
已验证 storage.buckets.GetIamPolicy 和 storage.buckets.setIamPolicy 已就位。
如有任何帮助或建议,我们将不胜感激。
"Failure: GetBucketIamPolicy must be overloaded"
此错误表示 GetBucketIamPolicy
函数未在 gsutil
程序中实现。
这表明 Google Cloud SDK 未正确安装,Python 设置不正确,或者您的外部库与 Google 库名称冲突。
注意:我还没有确认这一点:昨天提到了一个关于 gsutil 的内部问题。如果您使用的是最新版本,请尝试回到两周前的版本。
以前的版本
以前版本的 Cloud SDK 在 Google 云存储的 download archive 中可用。
该功能仅存在于 JSON API 中;听起来您已经设法让 gsutil 尝试使用 XML API 进行此调用。
这是基础 API 客户端 class:
这里是实现 JSON 和 XML API 功能的子 classes(请注意,GetBucketIamPolicy 仅在 JSON API的客户class):
- https://github.com/GoogleCloudPlatform/gsutil/blob/0e4bdc80f90f42edd86c3da772c22087e63b21be/gslib/gcs_json_api.py#L334
- https://github.com/GoogleCloudPlatform/gsutil/blob/0e4bdc80f90f42edd86c3da772c22087e63b21be/gslib/boto_translation.py#L160
我最好的猜测是您在 boto 文件中配置了 HMAC 凭据,而不是 OAuth2 凭据。这将 强制 gsutil 使用 XML API(因为 HMAC 凭据仅适用于 API),无论该命令是否应该支持XMLAPI。 iam
命令是 supposed to only support the JSON API,但看起来我们没有为仅配置 HMAC 凭据的边缘情况添加测试。
我已提交 https://github.com/GoogleCloudPlatform/gsutil/issues/846 以跟踪 gsutil 中的此错误。
@mhouglum,@John Hanley 我能够在另一台机器上复制这个问题,解决方案是发出 "gcloud config set pass_credentials_to_gsutil true" 命令
就像@mhouglum 所说的那样,gsutil 将首先尝试从 "gcloud auth login" 读取 OAuth 凭据,但由于 pass_credentials_to_gsutil" 设置为 false,它将从 .boto 文件中读取 HMAC 凭据不支持 XML API。
感谢你们的时间和努力。
Google Cloud gsutil iam get gs://testBucket 命令应该 return 存储桶策略,但却收到了 "Failure: GetBucketIamPolicy must be overloaded"
已验证 storage.buckets.GetIamPolicy 和 storage.buckets.setIamPolicy 已就位。
如有任何帮助或建议,我们将不胜感激。
"Failure: GetBucketIamPolicy must be overloaded"
此错误表示 GetBucketIamPolicy
函数未在 gsutil
程序中实现。
这表明 Google Cloud SDK 未正确安装,Python 设置不正确,或者您的外部库与 Google 库名称冲突。
注意:我还没有确认这一点:昨天提到了一个关于 gsutil 的内部问题。如果您使用的是最新版本,请尝试回到两周前的版本。
以前的版本
以前版本的 Cloud SDK 在 Google 云存储的 download archive 中可用。
该功能仅存在于 JSON API 中;听起来您已经设法让 gsutil 尝试使用 XML API 进行此调用。
这是基础 API 客户端 class:
这里是实现 JSON 和 XML API 功能的子 classes(请注意,GetBucketIamPolicy 仅在 JSON API的客户class):
- https://github.com/GoogleCloudPlatform/gsutil/blob/0e4bdc80f90f42edd86c3da772c22087e63b21be/gslib/gcs_json_api.py#L334
- https://github.com/GoogleCloudPlatform/gsutil/blob/0e4bdc80f90f42edd86c3da772c22087e63b21be/gslib/boto_translation.py#L160
我最好的猜测是您在 boto 文件中配置了 HMAC 凭据,而不是 OAuth2 凭据。这将 强制 gsutil 使用 XML API(因为 HMAC 凭据仅适用于 API),无论该命令是否应该支持XMLAPI。 iam
命令是 supposed to only support the JSON API,但看起来我们没有为仅配置 HMAC 凭据的边缘情况添加测试。
我已提交 https://github.com/GoogleCloudPlatform/gsutil/issues/846 以跟踪 gsutil 中的此错误。
@mhouglum,@John Hanley 我能够在另一台机器上复制这个问题,解决方案是发出 "gcloud config set pass_credentials_to_gsutil true" 命令
就像@mhouglum 所说的那样,gsutil 将首先尝试从 "gcloud auth login" 读取 OAuth 凭据,但由于 pass_credentials_to_gsutil" 设置为 false,它将从 .boto 文件中读取 HMAC 凭据不支持 XML API。
感谢你们的时间和努力。