

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

# 使用私有注册表创建 CodeBuild 项目
<a name="private-registry-sample-create-project"></a>

1. 有关如何创建免费的私有存储库的更多信息，请参阅 [Docker Hub 上的存储库](https://docs.docker.com/docker-hub/repos/)。您还可以在终端中运行以下命令来提取映像、获取其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
   ```

1.  按照《*AWS Secrets Manager 用户指南》*中[创建 AWS Secrets Manager 密钥](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html)中的步骤进行操作。

   

   1.  在步骤 3 中，在**选择密钥类型**，选择**其他密钥类型**。

   1. 在**密钥/值对**中，为您的 Docker Hub 用户名创建一个键值对，为您的 Docker Hub 密码创建一个键值对。

   1.  继续按照[创建 AWS Secrets Manager 密钥中的步骤进行](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html)操作。

   1.  在步骤 5 中，在**配置自动轮换**页面上，将其关闭，因为密钥对应于您的 Docker Hub 凭证。

   1.  按照[创建 AWS Secrets Manager 密钥](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html)中的步骤完成操作。

    有关更多信息，请参阅[什么是 AWS Secrets Manager？](https://docs.aws.amazon.com/secretsmanager/latest/userguide/) 

1.  在控制台中创建 AWS CodeBuild 项目时，会 CodeBuild 附上所需的权限。如果您使用的 AWS KMS 密钥除外`DefaultEncryptionKey`，则必须将其添加到服务角色中。有关更多信息，请参阅《IAM 用户指南》**中的[修改角色（控制台）](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage_modify.html#roles-managingrole-editing-console)。

    要使您的服务角色与 Secrets Manager 配合使用，它必须至少具有 `secretsmanager:GetSecretValue` 权限。  
![\[服务角色配置。\]](http://docs.aws.amazon.com/zh_cn/codebuild/latest/userguide/images/private-registry-sample-iam.png)

1.  要使用控制台创建一个具有在私有注册表中存储的环境的项目，请在创建项目时执行以下操作。有关信息，请参阅[创建构建项目（控制台）](create-project.md#create-project-console)。
**注意**  
 如果您的私有注册表位于您的 VPC 中，则它必须具有公共互联网访问权限。 CodeBuild 无法从 VPC 中的私有 IP 地址提取镜像。

   1.  对于**环境映像**，选择**自定义映像**。

   1.  对于**环境类型**，选择 **Linux** 或 **Windows**。

   1.  对于**映像注册表**，请选择**其他注册表**。

   1.  在**外部注册表 URL** 中，输入映像位置，在**注册表凭证 - 可选**中输入您的 Secrets Manager 凭证的 ARN 或名称。
**注意**  
 如果您的凭证在当前区域中不存在，则必须使用 ARN。如果凭证存在于其他区域中，则无法使用凭证名称。