AWS CodeBuild
用户指南 (API 版本 2016-10-06)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

适用于 CodeBuild 的私有注册表与 AWS Secrets Manager 示例

此示例向您显示如何使用在私有注册表中存储的 Docker 映像作为您的 AWS CodeBuild 运行时环境。私有注册表的凭证存储在 AWS Secrets Manager 中。任何私有注册表都适用于 CodeBuild。​此示例使用 Docker Hub。

私有注册表示例要求

要将私有注册表与 AWS CodeBuild 结合使用,您必须具有以下各项:

  • 一个 Secrets Manager 密钥,用于储存您的 Docker Hub 凭证。该凭证可用于访问您的私有存储库。

  • 一个私有存储库或账户。

  • 一个 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:latest docker login docker push your-username/repository-name
  2. 按照 AWS Secrets Manager 用户指南中的创建基本密钥中的步骤进行操作。在第 3 步的选择密钥类型中,执行以下操作:

    1. 选择其他密钥类型

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

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

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

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

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

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

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

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

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

    注意

    如果您的私有注册表是在 VPC 中,它必须拥有公有 Internet 访问权限。CodeBuild 无法从 VPC 中的私有 IP 地址拉取映像。

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

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

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

    4. 其他位置中,输入映像位置以及 Secrets Manager 凭证的 ARN 或名称。

      注意

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