带有Amazon Secrets Manager示例的私有注册表 CodeBuild - Amazon CodeBuild
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

带有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 项目

  1. 有关如何创建免费的私有存储库的更多信息,请参阅 Docker Hub 上的存储库。您还可以在终端中运行以下命令来提取映像、获取其ID,并将其推送到新的存储库。

    docker pull amazonlinux docker images amazonlinux --format {{.ID}} docker tag image-id your-username/repository-name:tag docker login docker push your-username/repository-name
  2. 按照《Amazon Secrets Manager用户指南》创建基本密钥中的步骤进行操作。在第 3 步的选择密钥类型中,执行以下操作:

    1. 选择其他密钥类型

    2. 密钥键/值中,为您的 Docker Hub 用户名创建一个键值对,为您的 Docker Hub 密码创建一个键值对。

    3. 对于密钥名称,输入一个名称,例如 dockerhub。您可以输入可选说明以帮助您记住这是 Docker Hub 的密钥。

    4. 禁用自动轮换选定,因为密钥对应于您的 Docker Hub 凭证。

    5. 选择 Store secret (存储密钥)。

    6. 当您检查设置时,请记下要在此示例中稍后使用的ARN。

    有关更多信息,请参阅什么是 Amazon Secrets Manager?

  3. 在控制台中创建Amazon CodeBuild项目时,会为您 CodeBuild 附加所需的权限。如果您使用的是 DefaultEncryptionKey 之外的 Amazon KMS 密钥,您必须将其添加到服务角色。有关更多信息,请参阅 IAM 用户指南中的修改角色(控制台)

    为使您的服务角色与 Secrets Manager 一起使用,它至少必须具有secretsmanager:GetSecretValue权限。

  4. 要使用控制台创建一个具有在私有注册表中存储的环境的项目,请在创建项目时执行以下操作。有关信息,请参阅创建构建项目 (控制台)

    注意

    如果您的私有注册表位于您的 VPC 中,则它必须具有公共互联网访问权限。 CodeBuild 无法从 VPC 中的私有 IP 地址提取映像。

    1. 环境中,选择自定义映像

    2. 对于 Environment type (环境类型),选择 LinuxWindows

    3. 对于自定义映像类型,选择其他位置

    4. 在 “其他位置” 中,输入图像位置和 Secrets Manager 凭据的 ARN 或名称。

      注意

      如果您的凭证在当前区域中不存在,则必须使用 ARN。如果凭证存在于其他区域中,则无法使用凭证名称。