【问题标题】:Access Denied to Bucket while creating a GCP Load Balancer创建 GCP 负载均衡器时拒绝访问存储桶
【发布时间】:2022-02-21 21:03:20
【问题描述】:
在 GCP 中创建和配置负载均衡器时出现以下错误。
该问题似乎与后端存储桶的创建有关,因为我收到以下错误:
拒绝访问 Cloud Storage 存储分区“[存储分区的名称]。
存储桶拥有allUser access 公开访问权限,并配置为网站。
谁能帮帮我?
【问题讨论】:
标签:
google-cloud-platform
google-cloud-storage
load-balancing
【解决方案1】:
问题是我试图配置一个 HTTPS 负载均衡器,同时我已经配置了一个带有重定向规则到 HTTPS 的 HTTP 负载均衡器。
我解决了在创建 HTTPS 负载均衡器之前从 HTTP 负载均衡器中删除规则的问题。成功创建负载均衡器后,我再次配置 HTTP 负载均衡器以将流量重定向到 HTTPS。
两个负载均衡器都使用相同的 IP 来重定向流量,但使用不同的协议(HTTP 和 HTTPS)
- 负载平衡器 1:HTTP://IP:80 -> HTTPS://IP:443
- 负载平衡器 2:HTTPS://IP:443 -> 后端存储桶
【解决方案2】:
首先,请确认当前设置是必需的,并且通过检查凭据是否正确来正确设置:即,如果您使用的是gsutil,请检查存储在您的.boto 文件是准确的。此外,通过使用命令 gsutil version -l 并检查 config path(s) 条目,确认 gsutil 正在使用您期望的 .boto 文件。
如果凭据正确,则验证您的请求是否通过代理路由,使用 HTTP(而不是 HTTPS)。如果是这样,请检查您的代理是否配置为从此类请求中删除 Authorization 标头。如果是这样,请确保您的请求使用 HTTPS 而不是 HTTP。
最后,进入控制台,点击存储桶菜单中的“设置存储桶权限”。在添加成员中输入"allUsers",并分配Role -> Storage -> Storage Object Viewer。
或者,如果您更喜欢使用gsutil,运行gsutil -m acl set -R -a public-read gs://bucket 应该将该存储桶中所有文件的访问权限设置为公开。要在存储桶上设置默认权限,以便在添加这些文件时默认公开这些文件,请使用 gsutil defacl set public-read gs://bucket。
您可以使用以下GCP’s Official Documentation 和以下thread 作为参考。