

Amazon CodeCatalyst는 더 이상 신규 고객에게 공개되지 않습니다. 기존 고객은 정상적으로 서비스를 계속 이용할 수 있습니다. 자세한 내용은 [CodeCatalyst에서 마이그레이션하는 방법](migration.md) 단원을 참조하십시오.

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

# 런타임 환경 이미지 지정
<a name="build-images"></a>

*런타임 환경 이미지*는 CodeCatalyst가 워크플로 작업을 실행하는 Docker 컨테이너입니다. Docker 컨테이너는 선택한 컴퓨팅 플랫폼을 기반으로 실행되며, 운영 체제와 AWS CLI, Node.js, .tar 등 워크플로 작업에 필요할 수 있는 추가 도구를 포함합니다.

기본적으로 워크플로 작업은 CodeCatalyst에서 제공하고 유지 관리하는 [활성 이미지](#build-curated-images) 중 하나에서 실행됩니다. 빌드 및 테스트 작업만 사용자 지정 이미지를 지원합니다. 자세한 내용은 [작업에 사용자 지정 런타임 환경 Docker 이미지 할당](#build-images-specify) 단원을 참조하십시오.

**Topics**
+ [활성 이미지](#build-curated-images)
+ [활성 이미지에 필요한 도구가 포함되지 않은 경우 어떻게 해야 하나요?](#build-images-more-tools)
+ [작업에 사용자 지정 런타임 환경 Docker 이미지 할당](#build-images-specify)
+ [예제](#workflows-working-custom-image-ex)

## 활성 이미지
<a name="build-curated-images"></a>

*활성 이미지*는 CodeCatalyst에서 완전히 지원되며 사전 설치된 도구를 포함하는 런타임 환경 이미지입니다. 현재 두 가지 활성 이미지 세트가 있습니다. 하나는 2024년 3월에, 다른 하나는 2022년 11월에 릴리스되었습니다.

작업이 2024년 3월 또는 2022년 11월 이미지 중 사용할 이미지는 작업에 따라 달라집니다.
+ 2024년 3월 26일 또는 그 이후에 워크플로에 추가된 빌드 및 테스트 작업은 [2024년 3월 이미지](#build.default-image)를 명시적으로 지정하는 `Container` 섹션을 YAML 정의에 포함합니다. 선택적으로 `Container` 섹션을 제거하여 [2022년 11월 이미지](#build.previous-image)로 되돌릴 수 있습니다.
+ 2024년 3월 26일 이전에 워크플로에 추가된 빌드 및 테스트 작업은 YAML 정의에 `Container` 섹션을 포함하지 *않으므로* [2022년 11월 이미지](#build.previous-image)를 사용합니다. 2022년 11월 이미지를 유지하거나 업그레이드할 수 있습니다. 이미지를 업그레이드하려면 시각적 편집기에서 작업을 열고 **구성** 탭을 선택한 다음 **런타임 환경 Docker 이미지** 드롭다운 목록에서 2024년 3월 이미지를 선택합니다. 이 항목을 선택하면 작업의 YAML 정의에 `Container` 섹션이 추가되며, 이 섹션은 적절한 2024년 3월 이미지로 채워집니다.
+ 다른 모든 작업은 [2022년 11월 이미지](#build.previous-image) 또는 [2024년 3월 이미지](#build.default-image)를 사용합니다. 자세한 내용은 작업 문서를 참조하세요.

**Topics**
+ [2024년 3월 이미지](#build.default-image)
+ [2022년 11월 이미지](#build.previous-image)

### 2024년 3월 이미지
<a name="build.default-image"></a>

2024년 3월 이미지는 CodeCatalyst에서 제공하는 최신 이미지입니다. 컴퓨팅 유형/플릿 조합당 2024년 3월 이미지가 하나 있습니다.

다음 표는 각 2024년 3월 이미지에 설치된 도구를 보여줍니다.


**2024년 3월 이미지 도구**  

| 도구 | Linux x86\_64용 CodeCatalyst Amazon EC2 - `CodeCatalystLinux_x86_64:2024_03` | Linux x86\_64용 CodeCatalyst Lambda - `CodeCatalystLinuxLambda_x86_64:2024_03` | Linux Arm64용 CodeCatalyst Amazon EC2 - `CodeCatalystLinux_Arm64:2024_03` | Linux Arm64용 CodeCatalyst Lambda - `CodeCatalystLinuxLambda_Arm64:2024_03` | 
| --- | --- | --- | --- | --- | 
| AWS CLI | 2.15.17 | 2.15.17 | 2.15.17 | 2.15.17 | 
| AWS Copilot CLI | 1.32.1 | 1.32.1 | 1.32.1 | 1.32.1 | 
| Docker | 24.0.9 | 해당 사항 없음 | 24.0.9 | 해당 사항 없음 | 
| Docker Compose | 2.23.3 | 해당 사항 없음 | 2.23.3 | 해당 사항 없음 | 
| Git | 2.43.0 | 2.43.0 | 2.43.0 | 2.43.0 | 
| Go | 1.21.5 | 1.21.5 | 1.21.5 | 1.21.5 | 
| Gradle | 8.5 | 8.5 | 8.5 | 8.5 | 
| Java | Corretto17 | Corretto17 | Corretto17 | Corretto17 | 
| Maven | 3.9.6 | 3.9.6 | 3.9.6 | 3.9.6 | 
| Node.js | 18.19.0 | 18.19.0 | 18.19.0 | 18.19.0 | 
| npm | 10.2.3 | 10.2.3 | 10.2.3 | 10.2.3 | 
| Python | 3.9.18 | 3.9.18 | 3.9.18 | 3.9.18 | 
| Python3 | 3.11.6 | 3.11.6 | 3.11.6 | 3.11.6 | 
| pip | 22.3.1 | 22.3.1 | 22.3.1 | 22.3.1 | 
| .NET | 8.0.100 | 8.0.100 | 8.0.100 | 8.0.100 | 

### 2022년 11월 이미지
<a name="build.previous-image"></a>

컴퓨팅 유형/플릿 조합당 2022년 11월 이미지가 하나 있습니다. [프로비저닝된 플릿](workflows-working-compute.md#compute.fleets)을 구성한 경우 빌드 작업과 함께 사용할 수 있는 2022년 11월 Windows 이미지도 있습니다.

다음 표는 각 2022년 11월 이미지에 설치된 도구를 보여줍니다.


**2022년 11월 이미지 도구**  

| 도구 | Linux x86\_64용 CodeCatalyst Amazon EC2 - `CodeCatalystLinux_x86_64:2022_11` | Linux x86\_64용 CodeCatalyst Lambda - `CodeCatalystLinuxLambda_x86_64:2022_11` | Linux Arm64용 CodeCatalyst Amazon EC2 - `CodeCatalystLinux_Arm64:2022_11` | Linux Arm64용 CodeCatalyst Lambda - `CodeCatalystLinuxLambda_Arm64:2022_11` | Windows x86\_64용 CodeCatalyst Amazon EC2 - `CodeCatalystWindows_x86_64:2022_11` | 
| --- | --- | --- | --- | --- | --- | 
| AWS CLI | 2.15.17 | 2.15.17 | 2.15.17 | 2.15.17 | 2.13.19 | 
| AWS Copilot CLI | 0.6.0 | 0.6.0 | 해당 사항 없음 | 해당 사항 없음 | 1.30.1 | 
| Docker | 23.01 | 해당 사항 없음 | 23.0.1 | 해당 사항 없음 | 해당 사항 없음 | 
| Docker Compose | 2.16.0 | 해당 사항 없음 | 2.16.0 | 해당 사항 없음 | 해당 사항 없음 | 
| Git | 2.40.0 | 2.40.0 | 2.39.2 | 2.39.2 | 2.42.0 | 
| Go | 1.20.2 | 1.20.2 | 1.20.1 | 1.20.1 | 1.19 | 
| Gradle | 8.0.2 | 8.0.2 | 8.0.1 | 8.0.1 | 8.3 | 
| Java | Corretto17 | Corretto17 | Corretto17 | Corretto17 | Corretto17 | 
| Maven | 3.9.4 | 3.9.4 | 3.9.0 | 3.9.0 | 3.9.4 | 
| Node.js | 16.20.2 | 16.20.2 | 16.19.1 | 16.14.2 | 16.20.0 | 
| npm | 8.19.4 | 8.19.4 | 8.19.3 | 8.5.0 | 8.19.4 | 
| Python | 3.9.15 | 2.7.18 | 3.11.2 | 2.7.18 | 3.9.13 | 
| Python3 | 해당 사항 없음 | 3.9.15 | 해당 사항 없음 | 3.11.2 | 해당 사항 없음 | 
| pip | 22.2.2 | 22.2.2 | 23.0.1 | 23.0.1 | 22.0.4 | 
| .NET | 6.0.407 | 6.0.407 | 6.0.406 | 6.0.406 | 6.0.414 | 

## 활성 이미지에 필요한 도구가 포함되지 않은 경우 어떻게 해야 하나요?
<a name="build-images-more-tools"></a>

CodeCatalyst에서 제공하는 [활성 이미지](#build-curated-images)에 필요한 도구가 포함되어 있지 않은 경우 몇 가지 옵션이 있습니다.
+ 필요한 도구가 포함된 사용자 지정 런타임 환경 Docker 이미지를 제공할 수 있습니다. 자세한 내용은 [작업에 사용자 지정 런타임 환경 Docker 이미지 할당](#build-images-specify) 단원을 참조하십시오.
**참고**  
 사용자 지정 런타임 환경 Docker 이미지를 제공하려면 사용자 지정 이미지에 Git이 설치되어 있는지 확인합니다.
+ 워크플로의 빌드 또는 테스트 작업을 통해 필요한 도구를 설치할 수 있습니다.

  예를 들어 빌드 또는 테스트 작업의 YAML 코드 `Steps` 섹션에 다음 지침을 포함할 수 있습니다.

  ```
  Configuration:
    Steps:
      - Run: ./{{setup-script}}
  ```

  그런 다음 {{setup-script}} 명령은 다음 스크립트를 실행하여 노드 패키지 관리자(npm)를 설치합니다.

  ```
  #!/usr/bin/env bash
  echo "Setting up environment"
  
  touch ~/.bashrc
  curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash
  source ~/.bashrc 
  nvm install v16.1.0
  source ~/.bashrc
  ```

  빌드 작업 YAML에 대한 자세한 내용은 [빌드 및 테스트 작업 YAML](build-action-ref.md) 섹션을 참조하세요.

## 작업에 사용자 지정 런타임 환경 Docker 이미지 할당
<a name="build-images-specify"></a>

CodeCatalyst에서 제공하는 [활성 이미지](#build-curated-images)를 사용하지 않으려면 사용자 지정 런타임 환경 Docker 이미지를 제공할 수 있습니다. 사용자 지정 이미지를 제공하려는 경우 Git이 설치되어 있는지 확인합니다. 이미지는 Docker Hub, Amazon Elastic Container Registry 또는 모든 퍼블릭 리포지토리에 저장될 수 있습니다.

사용자 지정 Docker 이미지를 생성하는 방법을 알아보려면 Docker 설명서의 [애플리케이션 컨테이너화](https://docs.docker.com/get-started/02_our_app/)를 참조하세요.

다음 지침을 사용하여 사용자 지정 런타임 환경 Docker 이미지를 작업에 할당합니다. 이미지를 지정하면 작업이 시작될 때 CodeCatalyst가 해당 이미지를 컴퓨팅 플랫폼에 배포합니다.

**참고**  
** CloudFormation 스택 배포**, **ECS에 배포**, **GitHub 작업** 등의 작업은 사용자 지정 런타임 환경 Docker 이미지를 지원하지 않습니다. 사용자 지정 런타임 환경 Docker 이미지도 **Lambda** 컴퓨팅 유형을 지원하지 않습니다.

------
#### [ Visual ]

**시각적 편집기를 사용하여 사용자 지정 런타임 환경 Docker 이미지를 할당하려면**

1. [https://codecatalyst.aws/](https://codecatalyst.aws/)에서 CodeCatalyst 콘솔을 엽니다.

1. 탐색 창에서 **CI/CD**를 선택한 다음 **워크플로**를 선택합니다.

1. 워크플로의 이름을 선택합니다. 소스 리포지토리 또는 워크플로가 정의된 브랜치 이름을 기준으로 필터링하거나, 워크플로 이름 또는 상태를 기준으로 필터링할 수 있습니다.

1. **편집**을 선택합니다.

1. **비주얼**을 선택합니다.

1. 워크플로 다이어그램에서 사용자 지정 런타임 환경 Docker 이미지를 사용할 작업을 선택합니다.

1. **구성** 탭을 선택합니다.

1. 하단 근처에 다음 필드를 입력합니다.

   **런타임 환경 Docker 이미지 - 선택 사항**

   이미지가 저장되는 레지스트리를 지정합니다. 유효한 값으로는 다음이 포함됩니다.
   + `CODECATALYST` (YAML 편집기)

     이미지는 CodeCatalyst 레지스트리에 저장됩니다.
   + **Docker Hub**(시각 편집기) 또는 `DockerHub`(YAML 편집기)

     이미지는 Docker Hub 이미지 레지스트리에 저장됩니다.
   + **기타 레지스트리**(시각 편집기) 또는 `Other`(YAML 편집기)

     이미지는 사용자 지정 이미지 레지스트리에 저장됩니다. 공개적으로 사용 가능한 레지스트리를 사용할 수 있습니다.
   + **Amazon Elastic Container Registry**(시각 편집기) 또는 `ECR`(YAML 편집기)

     이미지는 Amazon Elastic Container Registry 이미지 리포지토리에 저장됩니다. Amazon ECR 리포지토리에서 이미지를 사용하려면 이 작업에서 Amazon ECR에 대한 액세스 권한이 필요합니다. 이 액세스를 활성화하려면 다음 권한과 사용자 지정 신뢰 정책을 포함하는 [IAM 역할](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)을 생성해야 합니다. (원하는 경우 권한 및 정책을 포함하도록 기존 역할을 수정할 수 있습니다.)

     IAM 역할에는 역할 정책의 다음 권한이 포함되어야 합니다.
     + `ecr:BatchCheckLayerAvailability`
     + `ecr:BatchGetImage`
     + `ecr:GetAuthorizationToken`
     + `ecr:GetDownloadUrlForLayer`

     IAM 역할에는 다음과 같은 사용자 지정 신뢰 정책이 포함되어야 합니다.

     IAM 역할 생성에 대한 자세한 정보는 *IAM 사용자 설명서*의 [사용자 지정 신뢰 정책을 사용하여 역할 생성(콘솔)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html)을 참조하세요.

     역할을 생성한 후에는 환경을 통해 작업에 할당해야 합니다. 자세한 내용은 [작업과 환경 연결](deploy-environments-add-app-to-environment.md) 단원을 참조하십시오.

   **ECR 이미지 URL,** **Docker Hub 이미지** 또는 **이미지 URL**

   다음 중 하나를 지정하세요.
   + `CODECATALYST` 레지스트리를 사용하는 경우 이미지를 다음 [활성 이미지](#build-curated-images) 중 하나로 설정합니다.
     + `CodeCatalystLinux_x86_64:2024_03`
     + `CodeCatalystLinux_x86_64:2022_11`
     + `CodeCatalystLinux_Arm64:2024_03`
     + `CodeCatalystLinux_Arm64:2022_11`
     + `CodeCatalystLinuxLambda_x86_64:2024_03`
     + `CodeCatalystLinuxLambda_x86_64:2022_11`
     + `CodeCatalystLinuxLambda_Arm64:2024_03`
     + `CodeCatalystLinuxLambda_Arm64:2022_11`
     + `CodeCatalystWindows_x86_64:2022_11`
   + Docker Hub 레지스트리를 사용하는 경우 이미지를 Docker Hub 이미지 이름과 선택적 태그로 설정합니다.

     예시: `postgres:latest`
   + Amazon ECR 레지스트리를 사용하는 경우 이미지를 Amazon ECR 레지스트리 URI로 설정합니다.

     예시: `111122223333.dkr.ecr.us-west-2.amazonaws.com/codecatalyst-ecs-image-repo`
   + 사용자 지정 레지스트리를 사용하는 경우 이미지를 사용자 지정 레지스트리에서 예상되는 값으로 설정합니다.

1. (선택 사항) 커밋하기 전에 워크플로의 YAML 코드를 검증하려면 **검증**을 선택합니다.

1. **커밋**을 선택하고 커밋 메시지를 입력한 다음 **커밋**을 다시 선택합니다.

------
#### [ YAML ]

**YAML 편집기를 사용하여 사용자 지정 런타임 환경 Docker 이미지를 할당하려면**

1. 탐색 창에서 **CI/CD**를 선택한 다음 **워크플로**를 선택합니다.

1. 워크플로의 이름을 선택합니다. 소스 리포지토리 또는 워크플로가 정의된 브랜치 이름을 기준으로 필터링하거나, 워크플로 이름 또는 상태를 기준으로 필터링할 수 있습니다.

1. **편집**을 선택합니다.

1. **YAML**을 선택합니다.

1. 런타임 환경 Docker 이미지를 할당하려는 작업을 찾습니다.

1. 작업에 `Container` 섹션과 기본 `Registry` 및 `Image` 속성을 추가합니다. 자세한 내용은 작업에 대한 [작업](workflow-reference.md#actions-reference)의 `Container`, `Registry`, `Image` 속성에 대한 설명을 참조하세요.

1. (선택 사항) 커밋하기 전에 워크플로의 YAML 코드를 검증하려면 **검증**을 선택합니다.

1. **커밋**을 선택하고 커밋 메시지를 입력한 다음 **커밋**을 다시 선택합니다.

------

## 예제
<a name="workflows-working-custom-image-ex"></a>

다음 예시에서는 워크플로 정의 파일의 작업에 사용자 지정 런타임 환경 Docker 이미지를 할당하는 방법을 보여줍니다.

**Topics**
+ [예시: 사용자 지정 런타임 환경 Docker 이미지를 사용하여 Amazon ECR에서 Node.js 18에 대한 지원 추가](#workflows-working-custom-image-ex-ecr-node18)
+ [예시: 사용자 지정 런타임 환경 Docker 이미지를 사용하여 Docker Hub에서 Node.js 18에 대한 지원 추가](#workflows-working-custom-image-ex-docker-node18)

### 예시: 사용자 지정 런타임 환경 Docker 이미지를 사용하여 Amazon ECR에서 Node.js 18에 대한 지원 추가
<a name="workflows-working-custom-image-ex-ecr-node18"></a>

다음 예시에서는 사용자 지정 런타임 환경 Docker 이미지를 사용하여 [Amazon ECR](https://gallery.ecr.aws/amazonlinux/amazonlinux)에서 Node.js 18에 대한 지원을 추가하는 방법을 보여줍니다.

```
Configuration:
  Container:
    Registry: ECR
    Image: public.ecr.aws/amazonlinux/amazonlinux:2023
```

### 예시: 사용자 지정 런타임 환경 Docker 이미지를 사용하여 Docker Hub에서 Node.js 18에 대한 지원 추가
<a name="workflows-working-custom-image-ex-docker-node18"></a>

다음 예시에서는 사용자 지정 런타임 환경 Docker 이미지를 사용하여 [Docker Hub](https://hub.docker.com/_/node)에서 Node.js 18에 대한 지원을 추가하는 방법을 보여줍니다.

```
Configuration:
  Container:
    Registry: DockerHub
    Image: node:18.18.2
```