gpt4 book ai didi

python - 尝试使用 python 连接到 Google 云存储(GCS)

转载 作者:行者123 更新时间:2023-12-01 09:15:48 25 4
gpt4 key购买 nike

我构建了以下脚本:

import boto
import sys
import gcs_oauth2_boto_plugin

def check_size_lzo(ds):

# URI scheme for Cloud Storage.

CLIENT_ID = 'myclientid'
CLIENT_SECRET = 'mysecret'

GOOGLE_STORAGE = 'gs'

dir_file= 'date_id={ds}/apollo_export_{ds}.lzo'.format(ds=ds)



gcs_oauth2_boto_plugin.SetFallbackClientIdAndSecret(CLIENT_ID, CLIENT_SECRET)
uri = boto.storage_uri('my_bucket/data/apollo/prod/'+ dir_file, GOOGLE_STORAGE)
key = uri.get_key()



if key.size < 45379959:
raise ValueError('umg lzo file is too small, investigate')
else:
print('umg lzo file is %sMB' % round((key.size/1e6),2))



if __name__ == "__main__":

check_size_lzo(sys.argv[1])

它在本地工作正常,但当我尝试在 kubernetes 集群上运行时,出现以下错误:

boto.exception.GSResponseError: GSResponseError: 403 Access denied to 'gs://my_bucket/data/apollo/prod/date_id=20180628/apollo_export_20180628.lzo'

我已经更新了集群上的 .boto 文件并添加了我的 oauth 客户端 ID 和 key ,但仍然遇到相同的问题。

非常感谢您帮助解决此问题。

非常感谢!

最佳答案

如果它在一种环境中工作而在另一种环境中失败,我假设您从 .boto 文件(或者可能从 OAUTH2_CLIENT_ID 环境变量)获取身份验证,但您的 kubernetes 实例缺少这样的文件。如果您收到 403 而不是 401,则说明您的远程服务器已正确验证某人的身份,但某人无权访问该对象,因此您可能正在以其他用户的身份进行调用。

除非你做了一些改变,否则我猜你会得到 the default Kubernetes Engine auth ,意味着 a service account associated with your project 。该服务帐户可能尚未被授予对您的对象的读取权限,这就是您收到 403 的原因。授予它对您的 GCS 资源的读/写权限,这应该可以解决问题。

另请注意,默认情况下,默认凭据的范围不包括 GCS,因此 you'll need to add that as well然后重新启动实例。

关于python - 尝试使用 python 连接到 Google 云存储(GCS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51268208/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com