You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Packer实例访问GCP Artifact Registry YUM仓库遇403权限错误求助

解决Packer实例访问GCP Artifact Registry私有YUM仓库403问题

核心原因

私有Artifact Registry YUM仓库需要通过Google Cloud身份验证才能访问,公共访问模式下无需验证,因此切换到服务账号权限控制后,必须在YUM配置中添加认证逻辑,否则会返回403。

分步解决方案

1. 在Packer构建实例中安装Google Cloud YUM认证插件

在Packer的provisioner阶段执行安装命令(以RHEL8为例):

sudo dnf install -y yum-plugin-google-cloud-auth

若系统默认使用yum命令:

sudo yum install -y yum-plugin-google-cloud-auth

2. 配置YUM仓库启用认证

修改你的YUM仓库配置文件(例如/etc/yum.repos.d/MyRepository.repo),在仓库段添加gcp_auth = 1参数:

[MyRepository]
name=My Repository
baseurl=https://us-central1-yum.pkg.dev/projects/project-xyz/repo-rhel8/
enabled=1
gpgcheck=0
gcp_auth=1

该参数会让YUM自动使用实例绑定的服务账号身份完成认证。

3. 验证服务账号权限绑定

  • 确认Packer配置的服务账号,已被授予roles/artifactregistry.reader(或更高权限)角色,且角色绑定范围覆盖目标Artifact Registry仓库(或其所在项目)。
  • 避免仅在组织层级绑定角色,确保绑定关系直接作用于仓库资源或所属项目。

4. 确认Packer实例服务账号生效

检查Packer模板中的服务账号配置是否正确:

source "googlecompute" "example" {
  # 其他配置项...
  service_account_email = "your-service-account@project-xyz.iam.gserviceaccount.com"
  account_file          = "/path/to/your-service-account-key.json"
  scopes                = ["https://www.googleapis.com/auth/cloud-platform"]
}

可在provisioner阶段添加调试命令,验证实例使用的身份:

gcloud auth list

输出应显示你指定的服务账号为活跃身份。

5. 检查网络访问规则

默认网络通常允许出站HTTPS访问,若使用自定义防火墙,需确保出站规则放行443端口到us-central1-yum.pkg.dev域名。


内容的提问来源于stack exchange,提问作者Sasi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 20:15:41