【发布时间】:2018-12-18 11:24:29
【问题描述】:
我已经构建了以下脚本:
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 和密码,但仍然遇到同样的问题。
非常感谢帮助解决此问题。
非常感谢!
【问题讨论】:
-
假设你使用的是服务账号,你激活了吗?如果没有,请运行此命令
gcloud auth activate-service-account --key-file=service-account-key-file,然后再次尝试执行代码。此外,请确保集群的所有节点都有服务帐户密钥文件。
标签: python kubernetes google-cloud-platform google-cloud-storage