google-cloud-platform - 无法使用 GCP 的打包程序创建映像(使用 VM)
问题描述
我想用 packer build 命令创建图像,但是当我这样做时,我遇到了这个错误:
googlecompute: * The user does not have access to service account 'service-76100000418@compute-system.iam.gserviceaccount.com'. User: 'farzin-second-test-project@farzin-second-test-project.iam.gserviceaccount.com'. Ask a project owner to grant you the iam.serviceAccountUser role on the service account
我已将服务帐户用户角色、计算管理员和计算实例管理员 (v1) 添加到我的服务帐户。我还启用了计算 API,但在我的虚拟盒子中我使用了 centos,在这里我使用了这个无法正常工作的打包程序构建。在那里我创建了一个带有名称凭据的文件并将 json 密钥放入其中,并且我制作了我的打包程序模板,我还应该说我的模板已经过验证。
有人有什么想法吗?奇怪的是它要求我将此权限授予用户,但添加后仍然无法正常工作。
解决方案
您必须在您的 GCP 帐户上启用所有闲置 API:
gcloud services enable sourcerepo.googleapis.com
gcloud services enable compute.googleapis.com
gcloud services enable servicemanagement.googleapis.com
gcloud services enable storage-api.googleapis.com
还要确保您的服务帐户具有适当的权限(并且您使用的是正确的帐户):
CLOUD_BUILD_ACCOUNT=$(gcloud projects get-iam-policy $PROJECT --filter="(bindings.role:roles/cloudbuild.builds.builder)" --flatten="bindings[].members" --format="value(bindings.members[])")
gcloud projects add-iam-policy-binding $PROJECT \
--member $CLOUD_BUILD_ACCOUNT \
--role roles/editor
您还可以查看文档:Building VM images using Packer和Create a Cloud Build image factory using Packer。
推荐阅读
- powershell - 使用 Powershell 访问时,如何以编程方式防止来自 Outlook 的“可疑活动”对话框?
- gcc - 在 gcc-arm-none-eabi 中启用浮点仿真
- deep-learning - 如何将onedrive挂载到google colaboratory?
- javascript - 沿着 Promise 链传递价值
- postgresql - 返回 PostgreSQL 中更新值的变化
- ios - 无法在真实设备中安装项目
- sass - Scss/sass 编译它将字符串变量(内容)转换为不同的字符串
- c++ - Dlib 中的小批量大小和效果
- java - Snake - 按键响应时间慢
- html - 我无法弄清楚如何在 CSS 中将导航栏居中