我有一个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上部署容器的选项,但我没有访问权限(我使用的是服务帐户)。
是否有一种方法可以容器化使用服务帐户访问云存储的应用程序?
1条答案
按热度按时间eimct9ow1#
您可以将应用程序容器化并在Cloud Run上运行,同时继续使用服务帐户访问Google Cloud Storage。
1.您可以使用具有访问Google Cloud Storage存储桶权限的服务帐户。特别是
storage.objects.get
. Identity and Access Management1.对于您的应用程序,创建一个Dockerfile。
1.如果您还没有安装
google-auth
和google-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