GCP CDN服务账号未自动创建,配置签名URL访问私有存储桶报错如何解决
解决Google Cloud CDN搭配GCS私有存储桶时服务账号不存在、访问403问题
核心原因
你手动创建的服务账号无法被Cloud CDN识别调用,必须使用Google官方自动生成的CDN专属服务账号,未生成是因为缺少触发创建的操作。
解决步骤
第一步:主动触发CDN专属服务账号创建
运行如下命令,替换为你自己的项目ID即可主动生成官方CDN服务账号,无需手动创建:gcloud beta services identity create --service=cloudcdn.googleapis.com --project=你的项目ID运行完成后即可在项目IAM列表中看到
service-你的项目号@cloud-cdn-fill.iam.gserviceaccount.com账号。第二步:为服务账号授予存储桶访问权限
服务账号生成成功后,重新运行授权命令,替换对应参数即可:gsutil iam ch \ serviceAccount:service-你的项目号@cloud-cdn-fill.iam.gserviceaccount.com:objectViewer \ gs://你的存储桶名第三步:修正签名URL生成规则
你之前生成签名URL时使用了GCS原生域名storage.cloud.google.com,该域名对应存储桶直接访问场景,CDN场景下生成签名URL必须使用你配置的负载均衡外部IP/绑定的自定义域名,示例如下:gcloud compute sign-url \ "https://你的负载均衡IP/sampleFile" \ --key-name test-sign \ --key-file test-sign \ --expires-in 30m \ --validate第四步:验证配置并清理缓存
关闭存储桶之前配置的公共访问权限,清理CDN现有缓存后重新用生成的签名URL访问即可恢复正常。
内容的提问来源于stack exchange,提问作者Stevetro
相关产品推荐
相关产品推荐

