GCS with GKE,403写入GCS bu权限不足

2024-09-30 20:19:38 发布

您现在位置:Python中文网/ 问答频道 /正文

目前我正在尝试将文件写入Google云存储桶。为此,我使用了django-storages包。在

我已经部署了我的代码,并通过kuberneteskubectl实用程序进入正在运行的容器,以检查GCS bucket的工作情况。在

$ kubectl exec -it foo-pod -c foo-container --namespace=testing python manage.py shell

我可以读取存储桶,但如果我尝试写入存储桶,则会显示以下回溯。在

^{pr2}$

似乎完全和bucket权限有关。因此,我已经将Storage admin、Storage object creator角色分配给google cloud build service account(通过bucket->manage权限),但仍然显示相同的错误。在


Tags: 文件django代码实用程序权限bucketmanagefoo
1条回答
网友
1楼 · 发布于 2024-09-30 20:19:38

一个可能的解释是,如果您没有为集群分配正确的作用域。如果是这样的话,集群中的节点将没有写入Google云存储所需的授权/权限,这可以解释您看到的403错误。在

如果在创建集群时没有设置作用域,则会分配默认作用域,这只为云存储提供读取权限。在

为了使用Cloud SDK检查集群的当前作用域,可以尝试从云Shell运行“describe”命令,例如:

gcloud container clusters describe CLUSTER-NAME  zone ZONE

输出的oauthScopes部分包含分配给集群/节点的当前作用域。在

默认的只读云存储范围将显示:

^{pr2}$

如果设置了云存储读/写范围,则输出将显示:

https://www.googleapis.com/auth/devstorage.read_write

在集群创建期间,可以使用scope开关和所需的作用域标识符来设置作用域。在您的例子中,这将是“存储rw”。例如,您可以运行类似于:

gcloud容器集群创建CLUSTER-NAME区域范围存储rw

storage-rw作用域与您的服务帐户相结合,应该允许集群中的节点写入云存储。在

或者,如果不想重新创建集群,可以使用新的所需作用域创建一个新的节点池,然后删除旧的节点池。有关如何实现这一点的信息,请参阅Is it necessary to recreate a Google Container Engine cluster to modify API permissions?的公认答案。在

相关问题 更多 >