docker gcsfs.retry.HttpError:匿名调用者没有storage.objects.get对Google Cloud Storage对象的访问权限

sdnqo3pr  于 2023-04-20  发布在  Docker
关注(0)|答案(1)|浏览(217)

我有一个Python API应用程序,它通过服务帐户从Google Cloud Storage访问数据。当我在PC上运行代码时,它工作得很好,但是当我容器化应用程序并尝试访问端点时,我得到以下traceback:

gcsfs.retry.HttpError: Anonymous caller does not have storage.objects.get access to the Google Cloud Storage object. Permission 'storage.objects.get' denied on resource (or it may not exist)., 401

我看到了在Cloud上部署容器的选项,但我没有访问权限(我使用的是服务帐户)。
是否有一种方法可以容器化使用服务帐户访问云存储的应用程序?

eimct9ow

eimct9ow1#

您可以将应用程序容器化并在Cloud Run上运行,同时继续使用服务帐户访问Google Cloud Storage。
1.您可以使用具有访问Google Cloud Storage存储桶权限的服务帐户。特别是storage.objects.get . Identity and Access Management
1.对于您的应用程序,创建一个Dockerfile
1.如果您还没有安装google-authgoogle-cloud-storage软件包,请在requirements.txt文件中包含这两个软件包。这些软件包可为您的应用程序启用Google Cloud Storage访问权限和服务帐户身份验证。
1.使用google.auth模块在Python代码中验证您的服务帐户。Python Client for Google Cloud Storage
1.使用gcloud命令构建容器并将其部署到Cloud Run。要为应用程序启用服务帐户身份验证,请注意将GOOGLE APPLICATION CREDENTIALS环境变量设置为服务帐户密钥文件的位置。Deploy a Python service to Cloud Run

相关问题