컨테이너 레시피의 새 버전 생성 - EC2Image Builder

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

컨테이너 레시피의 새 버전 생성

이 섹션에서는 컨테이너 레시피의 새 버전을 생성하는 방법을 보여줍니다.

콘솔을 사용하여 새 컨테이너 레시피 버전 생성

컨테이너 레시피의 새 버전을 만드는 것은 새 레시피를 만드는 것과 거의 같습니다. 차이점은 대부분의 경우 기본 레시피와 일치하도록 특정 세부 정보가 미리 선택된다는 것입니다. 다음 목록은 새 레시피 생성과 기존 레시피의 새 버전 생성 간의 차이점을 설명합니다.

레시피 세부 정보
  • 이름 - 편집할 수 없습니다.

  • 버전 – 필수입니다. 이 세부 정보는 현재 버전이나 다른 종류의 시퀀스로 미리 채워져 있지 않습니다. 만들려는 버전 번호를 major.minor.patch 형식으로 입력합니다. 버전이 이미 있는 경우 오류가 발생합니다.

기본 이미지
  • 이미지 옵션 선택 - 미리 선택되었지만 편집할 수 있습니다. 기본 이미지의 소스 선택을 변경하면 선택한 원본 옵션에 따라 달라지는 기타 세부 정보가 손실될 수 있습니다.

    기본 이미지 선택과 관련된 세부 정보를 보려면 선택 항목과 일치하는 탭을 선택하십시오.

    Managed images
    • 이미지 운영 체제(OS) - 편집할 수 없습니다.

    • 이미지 이름 - 기존 레시피에 대해 선택한 기본 이미지 조합을 기반으로 미리 선택됩니다. 하지만 이미지 선택 옵션을 변경하면 미리 선택한 이미지 이름을 잃게 됩니다.

    • 자동 버전 관리 옵션 - 기본 레시피와 일치하지 않습니다. 자동 버전 관리 옵션은 기본적으로 선택한 OS 버전 사용 옵션으로 설정됩니다.

      중요

      시맨틱 버전 관리를 사용하여 파이프라인 빌드를 시작하는 경우 이 값을 사용 가능한 최신 OS 버전 사용으로 변경해야 합니다. Image Builder 리소스의 시맨틱 버전 관리에 대한 자세한 내용은 Image Builder의 시맨틱 버전 관리(을)를 참조하십시오.

    ECR image
    • 이미지 운영 체제(OS) - 미리 선택되었지만 편집 가능합니다.

    • OS 버전 - 미리 선택되었지만 편집할 수 있습니다.

    • ECR이미지 ID — 미리 입력되지만 편집할 수 있습니다.

    Docker Hub image
    • 이미지 운영 체제(OS) - 편집할 수 없습니다.

    • OS 버전 - 미리 선택되었지만 편집할 수 있습니다.

    • 도커 이미지 ID - 미리 입력되지만 편집할 수 있습니다.

인스턴스 구성
  • AMIID — 미리 입력되었지만 편집할 수 있습니다.

  • 스토리지(볼륨)

    EBS볼륨 1 (AMI루트) — 미리 채워져 있습니다. 루트 볼륨 디바이스 이름, 스냅샷 또는 IOPS선택 항목은 편집할 수 없습니다. 하지만 크기와 같은 나머지 설정은 모두 변경할 수 있습니다. 새 볼륨을 추가할 수도 있습니다.

    참고

    다른 계정에서 AMI 공유한 베이스를 지정한 경우 지정된 보조 볼륨의 스냅샷도 사용자 계정과 공유해야 합니다.

작업 디렉터리
  • 작업 디렉터리 경로 - 미리 입력되지만 편집할 수 있습니다.

구성 요소
  • 구성 요소 - 레시피에 이미 포함된 구성 요소는 각 구성 요소 목록(빌드 및 테스트) 끝에 있는 선택된 구성 요소 섹션에 표시됩니다. 필요에 맞게 선택한 구성 요소를 제거하거나 재정렬할 수 있습니다.

    CIS구성 요소 강화는 Image Builder 레시피의 표준 구성 요소 순서 지정 규칙을 따르지 않습니다. 벤치마크 테스트가 출력 이미지에 대해 실행되도록 하기 위해 CIS 강화 구성 요소는 항상 마지막에 실행됩니다.

    참고

    빌드 및 테스트 구성 요소 목록에는 구성 요소 소유자 유형에 따라 사용 가능한 구성 요소가 표시됩니다. 레시피에 구성 요소를 추가하거나 업데이트하려면 찾고 있는 구성 요소의 소유자 유형을 선택합니다. 예를 들어 구독한 기본 이미지와 관련된 구성 요소를 추가하려는 경우 AWS Marketplace검색 창 옆에 있는 소유자 유형 Third party managed 목록에서 선택하십시오.

    선택한 구성 요소에 대해 다음 설정을 구성할 수 있습니다.

    • 버전 관리 옵션 - 미리 선택되어 있지만 변경할 수 있습니다. 이미지 빌드가 항상 최신 버전의 구성 요소를 사용하도록 하려면 사용 가능한 최신 구성 요소 버전 사용 옵션을 선택하는 것이 좋습니다. 레시피에서 특정 구성 요소 버전을 사용해야 하는 경우 구성 요소 버전 지정을 선택하고 나타나는 구성 요소 버전 상자에 버전을 입력할 수 있습니다.

    • 입력 파라미터 - 구성 요소가 받아들이는 입력 파라미터를 표시합니다. 은 이전 버전의 레시피 값으로 미리 채워집니다. 이 레시피에서 이 구성요소를 처음 사용하고 입력 매개변수에 기본값이 정의된 경우 기본값이 상자에 회색으로 표시된 텍스트와 함께 나타납니다. 다른 값을 입력하지 않은 경우 Image Builder는 기본값을 사용합니다.

      입력 매개 변수가 필요하지만 구성 요소에 정의된 기본값이 없는 경우 값을 제공해야 합니다. 필수 매개변수가 누락되어 있고 기본값이 정의되지 않은 경우 Image Builder는 레시피 버전을 생성하지 않습니다.

      중요

      구성 요소 매개변수는 일반 텍스트 값이며 로그인되어 있습니다. AWS CloudTrail을 사용할 것을 권장합니다. AWS Secrets Manager 또는 AWS Systems Manager 비밀번호를 저장하기 위한 파라미터 스토어. Secrets Manager에 대한 자세한 내용은 Secrets Manager란 무엇입니까? 를 참조하십시오. ... 에서 AWS Secrets Manager 사용자 가이드. 에 대한 자세한 내용은 AWS Systems Manager 파라미터 저장소는 다음을 참조하십시오. AWS Systems Manager의 파라미터 저장소 AWS Systems Manager 사용자 가이드.

    버전 관리 옵션 또는 입력 파라미터 설정을 확장하려면 설정 이름 옆에 있는 화살표를 선택하면 됩니다. 선택한 모든 구성 요소의 모든 설정을 확장하려면 모두 확장 스위치를 끄고 켤 수 있습니다.

도커파일 템플릿
  • Dockerfile 템플릿 - 미리 채워지지만 편집할 수 있습니다. Image Builder가 런타임 시 빌드 정보로 대체하는 다음과 같은 상황별 변수를 지정할 수 있습니다.

     

    parentImage (필수)

    빌드 시 이 변수는 레시피의 기본 이미지로 변환됩니다.

    예시

    FROM {{{ imagebuilder:parentImage }}}
    환경 (구성 요소가 지정된 경우 필요)

    이 변수는 구성 요소를 실행하는 스크립트로 해석됩니다.

    예시

    {{{ imagebuilder:environments }}}
    구성 요소 (선택 사항)

    Image Builder는 컨테이너 레시피에 포함된 구성 요소의 빌드 및 테스트 구성 요소 스크립트를 해결합니다. 이 변수는 Dockerfile에서 환경 변수 다음에 어디에나 배치할 수 있습니다.

    예시

    {{{ imagebuilder:components }}}
대상 리포지토리
  • 대상 리포지토리 이름 — 파이프라인이 실행되는 리전 (리전 1) 에 대한 파이프라인 배포 구성에 지정된 다른 리포지토리가 없는 경우 출력 이미지가 저장되는 Amazon ECR 리포지토리입니다.

새 컨테이너 레시피 버전을 생성하려면:
  1. 컨테이너 레시피 세부 정보 페이지 상단에서 새 버전 생성을 선택합니다. 컨테이너 레시피의 레시피 생성 페이지로 이동합니다.

  2. 새 버전을 만들려면 변경한 다음 레시피 생성을 선택합니다.

이미지 파이프라인을 생성할 때 컨테이너 레시피를 생성하는 방법에 대한 자세한 내용은 이 가이드의 시작하기 섹션의 2단계: 레시피 선택 섹션을 참조하십시오.

를 사용하여 컨테이너 레시피를 생성하십시오. AWS CLI

다음 imagebuilder create-container-recipe 명령을 사용하여 Image Builder 컨테이너 레시피를 만들려면 AWS CLI다음 단계를 따르세요.

사전 조건

이 섹션의 Image Builder 명령을 실행하여 다음을 사용하여 컨테이너 레시피를 생성하기 전에 AWS CLI레시피에서 사용할 구성 요소를 만들어야 합니다. 다음 단계의 컨테이너 레시피 예제는 이 가이드의 에서 사용자 지정 구성 요소를 생성합니다. AWS CLI 섹션에서 만든 예제 구성 요소를 참조합니다.

구성 요소를 만든 후 또는 기존 구성 요소를 사용하는 경우 레시피에 ARNs 포함하려는 내용을 기록해 두십시오.

  1. CLI입력 JSON 파일 생성

    create-container-recipe 명령의 모든 입력을 인라인 명령 파라미터로 제공할 수 있습니다. 하지만 결과로 생성되는 명령은 상당히 길 수 있습니다. 명령을 간소화하기 위해 대신 모든 컨테이너 레시피 JSON 설정이 포함된 파일을 제공할 수 있습니다.

    참고

    JSON파일에 있는 데이터 값의 명명 규칙은 Image Builder API 작업 요청 매개변수에 지정된 패턴을 따릅니다. API명령 요청 파라미터를 검토하려면 EC2Image Builder API 레퍼런스의 CreateContainerRecipe명령을 참조하십시오.

    데이터 값을 명령줄 매개 변수로 제공하려면 에 지정된 매개 변수 이름을 참조하십시오. AWS CLI 명령 참조.

    다음은 이 예제의 파라미터를 요약한 것입니다.

    • 구성 요소(객체 배열, 필수) - ComponentConfiguration 객체 배열을 포함합니다. 빌드 구성 요소를 하나 이상 지정해야 합니다.

      참고

      Image Builder는 레시피에 지정한 순서대로 구성 요소를 설치합니다. 하지만 벤치마크 테스트가 출력 이미지에 대해 실행되도록 하기 위해 CIS 강화 구성 요소는 항상 마지막에 실행됩니다.

      • 구성 요소 ARN (문자열, 필수) — 구성 요소입니다. ARN

        작은 정보

        예제를 사용하여 자체 컨테이너 레시피를 만들려면 예제를 레시피에 사용 중인 구성 요소의 ARNs 로 바꾸십시오. ARNs 여기에는 다음이 포함됩니다. AWS 리전, 이름, 각각의 버전 번호.

      • 파라미터(객체 배열) - ComponentParameter 객체 배열을 포함합니다. 입력 매개 변수가 필요하지만 구성 요소에 정의된 기본값이 없는 경우 값을 제공해야 합니다. 필수 매개변수가 누락되어 있고 기본값이 정의되지 않은 경우 Image Builder는 레시피 버전을 생성하지 않습니다.

        중요

        구성 요소 매개변수는 일반 텍스트 값이며 로그인되어 있습니다. AWS CloudTrail을 사용할 것을 권장합니다. AWS Secrets Manager 또는 AWS Systems Manager 비밀번호를 저장하기 위한 파라미터 스토어. Secrets Manager에 대한 자세한 내용은 Secrets Manager란 무엇입니까? 를 참조하십시오. ... 에서 AWS Secrets Manager 사용자 가이드. 에 대한 자세한 내용은 AWS Systems Manager 파라미터 저장소는 다음을 참조하십시오. AWS Systems Manager의 파라미터 저장소 AWS Systems Manager 사용자 가이드.

        • 이름(문자열, 필수) — 설정할 구성 요소 파라미터의 이름입니다.

        • (문자열 배열, 필수) - 명명된 구성 요소 파라미터의 값을 설정하는 문자열 배열을 포함합니다. 구성 요소에 대해 정의된 기본값이 있고 다른 값이 제공되지 않은 경우 AWSTOE 기본값을 사용합니다.

    • containerType(문자열, 필수) — 생성할 컨테이너의 유형입니다. 유효한 값으로는 DOCKER가 포함됩니다.

    • dockerfileTemplateData(문자열) — 이미지를 빌드하는 데 사용되는 Dockerfile 템플릿으로, 인라인 데이터 블롭으로 표현됩니다.

    • name(문자열, 필수) - 컨테이너 레시피의 이름입니다.

    • description(문자열) - 컨테이너 레시피에 대한 설명입니다.

    • parentImage(문자열, 필수) — 컨테이너 레시피가 사용자 지정 이미지의 기반으로 사용하는 이미지입니다. 값은 기본 이미지 ARN 또는 AMI ID일 수 있습니다.

    • platformOverride(문자열) - 사용자 지정 기본 이미지를 사용할 때의 운영 체제 플랫폼을 지정합니다.

    • semanticVersion<major>(문자열, 필수) — 다음 형식으로 지정된 컨테이너 레시피의 시맨틱 버전으로, 각 위치에는 특정 버전을 나타내는 숫자 값이 있습니다. <minor>. <patch>. 예를 들어 1.0.0(이)가 됩니다. Image Builder 리소스의 시맨틱 버전 관리에 대한 자세한 내용은 Image Builder의 시맨틱 버전 관리(을)를 참조하십시오.

    • tags(문자열 맵) – 컨테이너 레시피에 연결되는 태그입니다.

    • instanceConfiguration(객체) — 컨테이너 이미지를 빌드하고 테스트하기 위한 인스턴스를 구성하는 데 사용할 수 있는 옵션 그룹입니다.

      • image (string) — 컨테이너 빌드 및 테스트 인스턴스의 기본 이미지로 사용할 AMI ID입니다. 이 값을 지정하지 않으면 Image Builder는 적절한 아마존 ECS 최적화 AMI 이미지를 기본 이미지로 사용합니다.

      • blockDeviceMappings(객체 배열) — image 매개변수에 AMI 지정된 Image Builder에서 인스턴스를 빌드하기 위해 연결할 블록 디바이스를 정의합니다.

        • deviceName(문자열) — 이러한 매핑이 적용되는 기기입니다.

        • ebs (object) — 이 매핑에 대한 Amazon EBS 특정 구성을 관리하는 데 사용됩니다.

          • deleteOnTermination(Boolean) — 연결된 디바이스 종료 시 삭제를 구성하는 데 사용됩니다.

          • encrypted(부울) – 장치 암호화를 구성하는 데 사용됩니다.

          • volumeSize(정수) - 디바이스의 볼륨 크기를 재정의하는 데 사용됩니다.

          • volumeType(문자열) - 기기의 볼륨 유형을 재정의하는 데 사용됩니다.

    • targetRepository(객체, 필수) — 파이프라인이 실행되는 리전 (리전 1) 에 대한 파이프라인 배포 구성에 지정된 다른 리포지토리가 없는 경우 컨테이너 이미지의 대상 리포지토리입니다.

      • repositoryName(문자열, 필수) — 출력 컨테이너 이미지가 저장되는 컨테이너 리포지토리의 이름입니다. 이 이름에 리포지토리 위치가 접두사로 추가됩니다.

      • service(문자열, 필수) – 이 이미지가 등록된 서비스를 지정합니다.

    • workingDirectory(문자열) — 빌드 및 테스트 워크플로 중에 사용할 작업 디렉토리입니다.

    { "components": [ { "componentArn": "arn:aws:imagebuilder:us-east-1:123456789012:component/helloworldal2/x.x.x" } ], "containerType": "DOCKER", "description": "My Linux Docker container image", "dockerfileTemplateData": "FROM {{{ imagebuilder:parentImage }}}\n{{{ imagebuilder:environments }}}\n{{{ imagebuilder:components }}}", "name": "amazonlinux-container-recipe", "parentImage": "amazonlinux:latest", "platformOverride": "Linux", "semanticVersion": "1.0.2", "tags": { "sometag" : "Tag detail" }, "instanceConfiguration": { "image": "ami-1234567890", "blockDeviceMappings": [ { "deviceName": "/dev/xvda", "ebs": { "deleteOnTermination": true, "encrypted": false, "volumeSize": 8, "volumeType": "gp2" } } ] }, "targetRepository": { "repositoryName": "myrepo", "service": "ECR" }, "workingDirectory": "/tmp" }
  2. 레시피 생성

    다음 명령을 사용하여 레시피를 생성합니다. 이전 단계에서 만든 JSON 파일 이름을 --cli-input-json 파라미터에 입력합니다.

    aws imagebuilder create-container-recipe --cli-input-json file://create-container-recipe.json
    참고
    • JSON파일 경로의 시작 부분에 file:// 표기법을 포함해야 합니다.

    • JSON파일 경로는 명령을 실행하는 기본 운영 체제의 적절한 규칙을 따라야 합니다. 예를 들어 Windows에서는 디렉터리 경로를 참조하기 위해 백슬래시(\)를 사용하고 Linux에서는 슬래시(/)를 사용합니다.