本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
适用于 CodeBuild 的私有注册表与 Amazon Secrets Manager 示例
此示例向您显示如何使用在私有注册表中存储的 Docker 映像作为您的 Amazon CodeBuild 运行时环境。私有注册表的凭证存储在 Amazon Secrets Manager 中。任何私有注册表都适用于 CodeBuild。 此示例使用 Docker Hub。
私有注册表示例要求
要将私有注册表与 Amazon CodeBuild 结合使用,您必须具有以下各项:
-
一个 Secrets Manager,用于存储您的 Docker Hub 凭证。该凭证可用于访问您的私有存储库。
-
一个私有存储库或账户。
-
一个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 中,它必须拥有公有 Internet 访问权限。CodeBuild无法从 VPC 中的私有 IP 地址拉取映像。
-
在环境中,选择自定义映像。
-
对于 Environment type (环境类型),选择 Linux 或 Windows。
-
对于自定义映像类型,选择其他位置。
-
In其他位置中,输入您的 Secrets Manager 凭证的映像位置和 ARN 或名称。
注意 如果您的凭证在当前区域中不存在,则必须使用 ARN。如果凭证存在于其他区域中,则无法使用凭证名称。
-