【发布时间】:2021-07-07 03:38:33
【问题描述】:
我正在寻求帮助,以解决我用 Python3/Flask 编写并托管在 Google App Engine 上的应用程序。部署成功,但 App Engine 存在无法访问 GCS 的问题。
代码如下:
gs_util_command = "gsutil "
gs_util_command = gs_util_command + " cp gs://"+ re.match(r"https.//storage.googleapis.com/(.*)",url1).group(1)
gs_util_command = gs_util_command + " "+str(destination_file_path)
我不断收到如下错误信息
错误消息:ServiceException: 401 Anonymous caller does not have storage.objects.get 访问 Google Cloud Storage 对象。
IAM 确认该服务拥有对 GCS 存储桶的所有者访问权限,但仍无法正常工作。
我尝试在 Python3 代码中运行以下语句并将其部署到 GCP:
os.system("gsutil version -l")
在云上部署和执行后,我在 shell 日志中收到以下消息:
2021-04-12 01:36:18 默认[20210412t013030] gsutil 版本:4.61 2021-04-12 01:36:18 默认[20210412t013030] 校验和: PACKAGED_GSUTIL_INSTALLS_DO_NOT_HAVE_CHECKSUMS (!= 61834ed701604b43c83de6cfae9b36a4) 2021-04-12 01:36:18 默认[20210412t013030] boto 版本:2.49.0 2021-04-12 01:36:18 默认[20210412t013030] python版本:3.7.10(默认,3月23日 2021, 05:09:08) [GCC 7.5.0] 2021-04-12 01:36:18 默认[20210412t013030] 操作系统:Linux 4.4.0 2021-04-12 01:36:18 默认 [20210412t013030] 多处理可用:真 2021-04-12 01:36:18 默认[20210412t013030] 使用云 sdk: False 2021-04-12 01:36:18 默认[20210412t013030] 将云 sdk 凭据传递给 gsutil:假 2021-04-12 01:36:18 默认 [20210412t013030] 配置 路径:未找到配置
当我尝试通过 Google Cloud Shell 在本地运行相同的命令时,它工作正常。
gsutil version -l
输出是:
gsutil version: 4.60 checksum: 4e34e1f62b6d54d4826625581f787044 (OK) boto version: 2.49.0 python version: 3.7.3 (default, Jan 22 2021,20:04:44) [GCC 8.3.0] 操作系统:Linux 5.4.89+ 多处理可用: True using cloud sdk:True 将 cloud sdk 凭据传递给 gsutil:True 配置路径:/home/jobsage_sai/.boto gsutil 路径: /usr/lib/google-cloud-sdk/bin/gsutil 编译 crcmod: 假安装 通过包管理器:False 可编辑安装:False
所有这些都在虚拟环境中。
请提出建议。
阿文德·R.
【问题讨论】:
标签: python-3.x google-app-engine google-cloud-platform gsutil google-cloud-sdk