谷歌云应用引擎-gsutil访问问题



我正在寻求帮助,以解决我用Python3/Flask编写的应用程序在谷歌应用引擎上的故障。部署成功,但存在应用程序引擎无法访问地面军事系统的问题。

代码如下:

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匿名调用方没有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.612021-04-12 01:36:18默认[2020412t013030]校验和:PACKAGED_GSUTIL_INSTALLS_DO_NOT_HAVE_CHECKSUMS(=61834ed701604b43c83de6cfae9b36a4(2021-04-12 01:36:18默认[2210412t013030]僵尸版本:2.49.0 2021-04-12 01:36:18default[2210412t013030]python版本:3.7.10(默认,3月23日2021,05:09:08([GCC 7.5.0]2021-04-12 01:36:18默认[2020412t013030]操作系统:Linux 4.4.0 2021-04-12 01:36:18默认[2210412t013030]多处理可用:True 2021-04-1201:36:18使用云sdk的默认值[2020412t013030]:False 2021-04-1201:36:18默认[2020412t013030]将云sdk凭据传递到gsutil:False 2021-04-12 01:36:18默认值[20210412t01330]配置路径:找不到配置

当我试图通过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+可用的多处理:使用cloud-sdk:TTrue将cloud-sdk凭据传递给gsutil:TTrue配置路径:/home/jobstage_sai/.boto gsutil路径:/usr/lib/google-cloud-sdk/bin/gsutil编译的crcmod:安装错误通过软件包管理器:错误的可编辑安装:错误的

所有这些都在虚拟环境中。

请提出建议。

Arvind R.

当您在AppEngine标准上部署代码时,您只部署您的代码。它由谷歌云获取,创建一个容器(使用Buildpacks(,然后进行部署。

当您使用应用程序引擎创建应用程序时,它已经创建了一个默认存储桶和与GCS的连接。你不需要在你的项目中设置任何其他东西就可以使用

注意:;容器由Google Cloud构建";。这意味着,你不能控制执行环境,在你自己的代码下面,不在基本映像上的执行环境。也许今天安装了gsutil,但将来没有任何保证!

因此,正如Dishant所说,使用客户端库,或者直接使用API来实现您想要的。


如果你使用App Engine Flex或Cloud Run,那就不一样了。在这两种情况下,您都可以部署自己的容器(在应用程序Engine flex上使用自定义运行时(。因此,您可以依赖底层运行时,因为您可以自己选择和管理它。

在应用程序引擎上使用云存储python客户端而不是gsutil。

相关内容

  • 没有找到相关文章

最新更新