本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
带有Amazon Secrets Manager示例的私有注册表 CodeBuild
此示例向您显示如何使用在私有注册表中存储的 Docker 映像作为您的 Amazon CodeBuild 运行时环境。私有注册表的凭证存储在 Amazon Secrets Manager 中。任何私有注册表均可使用 CodeBuild。此示例使用 Docker Hub。
密钥对操作可见,写入文件时不会被屏蔽。
私有注册表示例要求
要将私有注册表与 Amazon CodeBuild 结合使用,您必须具有以下各项:
-
用于存储 Docker Hub 凭证的 Secrets Manager 密钥 该凭证可用于访问您的私有存储库。
-
一个私有存储库或账户。
-
一项 CodeBuild 服务角色 IAM 策略,用于授予对您的密Secrets Manager 密钥的访问权限。
按照以下步骤创建这些资源,然后使用存储在您的私有注册表中的 Docker 镜像创建 CodeBuild 构建项目。
使用私有注册表创建 CodeBuild 项目
-
有关如何创建免费的私有存储库的更多信息,请参阅 Docker Hub 上的存储库
。您还可以在终端中运行以下命令来提取映像、获取其ID,并将其推送到新的存储库。 docker pull amazonlinux docker images amazonlinux --format {{.ID}} docker tag
image-id
your-username
/repository-name
:tag
docker login docker pushyour-username
/repository-name
-
按照《Amazon Secrets Manager用户指南》中创建基本密钥中的步骤进行操作。在第 3 步的选择密钥类型中,执行以下操作:
-
选择其他密钥类型。
-
在密钥键/值中,为您的 Docker Hub 用户名创建一个键值对,为您的 Docker Hub 密码创建一个键值对。
-
对于密钥名称,输入一个名称,例如
dockerhub
。您可以输入可选说明以帮助您记住这是 Docker Hub 的密钥。 -
将禁用自动轮换选定,因为密钥对应于您的 Docker Hub 凭证。
-
选择 Store secret (存储密钥)。
-
当您检查设置时,请记下要在此示例中稍后使用的ARN。
有关更多信息,请参阅什么是 Amazon Secrets Manager?
-
-
在控制台中创建Amazon CodeBuild项目时,会为您 CodeBuild 附加所需的权限。如果您使用的是
DefaultEncryptionKey
之外的 Amazon KMS 密钥,您必须将其添加到服务角色。有关更多信息,请参阅 IAM 用户指南中的修改角色(控制台)。为使您的服务角色与 Secrets Manager 一起使用,它至少必须具有
secretsmanager:GetSecretValue
权限。 -
要使用控制台创建一个具有在私有注册表中存储的环境的项目,请在创建项目时执行以下操作。有关信息,请参阅创建构建项目 (控制台)。
注意 如果您的私有注册表位于您的 VPC 中,则它必须具有公共互联网访问权限。 CodeBuild 无法从 VPC 中的私有 IP 地址提取映像。
-
在环境中,选择自定义映像。
-
对于 Environment type (环境类型),选择 Linux 或 Windows。
-
对于自定义映像类型,选择其他位置。
-
在 “其他位置” 中,输入图像位置和 Secrets Manager 凭据的 ARN 或名称。
注意 如果您的凭证在当前区域中不存在,则必须使用 ARN。如果凭证存在于其他区域中,则无法使用凭证名称。
-