

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# CodeBuild용 AWS Secrets Manager 샘플이 포함된 프라이빗 레지스트리
<a name="sample-private-registry"></a>

 이 샘플은 프라이빗 레지스트리에 AWS CodeBuild 런타임 환경으로 저장된 Docker 이미지를 사용하는 방법을 보여줍니다. 프라이빗 레지스트리의 보안 인증은 AWS Secrets Manager에 저장됩니다. 프라이빗 레지스트리는 모두 CodeBuild와 함께 작동합니다. 이 샘플은 Docker Hub를 사용합니다.

**참고**  
보안 암호는 작업에 표시되며 파일에 기록될 때 가려지지 않습니다.

**Topics**
+ [프라이빗 레지스트리 샘플 요구 사항](#sample-private-registry-requirements)
+ [프라이빗 레지스트리로 CodeBuild 프로젝트 생성](private-registry-sample-create-project.md)
+ [자체 호스팅 러너에 대한 프라이빗 레지스트리 자격 증명 구성](private-registry-sample-configure-runners.md)

## 프라이빗 레지스트리 샘플 요구 사항
<a name="sample-private-registry-requirements"></a>

 에서 프라이빗 레지스트리를 사용하려면 다음이 있어야 AWS CodeBuild합니다.
+  Docker Hub 보안 인증을 저장하는 Secrets Manager 보안 암호. 보안 인증은 프라이빗 리포지토리 액세스에 사용합니다.
**참고**  
생성한 보안 암호에 대해 요금이 청구됩니다.
+  프라이빗 리포지토리 또는 계정 
+  Secrets Manager 보안 암호 액세스 권한을 부여하는 CodeBuild 서비스 역할의 IAM 정책 

 다음 단계를 따라 해당 리소스를 만든 다음, 프라이빗 레지스트리에 저장된 도커 이미지를 사용하여 CodeBuild 빌드 프로젝트를 생성합니다.

# 프라이빗 레지스트리로 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.  키는 Docker Hub 보안 인증에 해당하므로 5단계의 **자동 교체 구성** 페이지에서 이 옵션을 끕니다.

   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/ko_kr/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을 사용해야 합니다. 다른 리전에 있는 보안 인증의 이름은 사용할 수 없습니다.

# 자체 호스팅 러너에 대한 프라이빗 레지스트리 자격 증명 구성
<a name="private-registry-sample-configure-runners"></a>

다음 지침에 따라 자체 호스팅 러너에 대한 레지스트리 자격 증명을 구성합니다.

**참고**  
이러한 자격 증명은 이미지가 프라이빗 레지스트리의 자격 증명으로 재정의되는 경우에만 사용됩니다.

------
#### [ AWS Management Console ]

1. [https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home) AWS CodeBuild 콘솔을 엽니다.

1. 빌드 프로젝트를 생성하거나 기존 프로젝트를 선택합니다. 자세한 내용은 [빌드 프로젝트 만들기(콘솔)](create-project.md#create-project-console) 및 [빌드 프로젝트 설정 변경(콘솔)](change-project.md#change-project-console) 섹션을 참조하세요.

1.  **환경**에서 **추가 구성**을 선택합니다.

1.  **추가 구성**에서 **레지스트리 자격 증명 - 선택** 사항으로에서 보안 암호의 이름 또는 ARN AWS Secrets Manager 을 입력합니다.  
![\[레지스트리 자격 증명 구성입니다.\]](http://docs.aws.amazon.com/ko_kr/codebuild/latest/userguide/images/registry-credential.png)

------
#### [ AWS CLI ]

1. 새 프로젝트를 생성하려면 **create-project** 명령을 실행합니다.

   ```
   aws codebuild create-project \
       --name project-name \
       --source type=source-type,location=source-location \
       --environment "type=environment-type,image=image,computeType=compute-type,registryCredential={credentialProvider=SECRETS_MANAGER,credential=secret-name-or-arn},imagePullCredentialsType=CODEBUILD|SERVICE_ROLE" \
       --artifacts type=artifacts-type \
       --service-role arn:aws:iam::account-ID:role/service-role/service-role-name
   ```

1. 기존 프로젝트를 업데이트하려면 **update-project** 명령을 실행합니다.

   ```
   aws codebuild update-project \
       --name project-name \
       --environment "type=environment-type,image=image,computeType=compute-type,registryCredential={credentialProvider=SECRETS_MANAGER,credential=secret-name-or-arn}"
   ```

------