이미지 정의 파일 참조 - AWS CodePipeline

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

이미지 정의 파일 참조

이 단원은 참조용입니다. 컨테이너의 소스 또는 배포 작업이 포함된 파이프라인을 만드는 방법에 대한 자세한 내용은 에서 파이프라인 생성 CodePipeline 단원을 참조하십시오.

Amazon ECR 소스 작업 또는 Amazon ECS 배포 작업과 같은 컨테이너 작업의 AWS CodePipeline 작업자는 정의 파일을 사용하여 이미지 URI와 컨테이너 이름을 작업 정의에 매핑합니다. 각 정의 파일은 다음과 같이 작업 공급자가 사용하는 JSON 형식의 파일입니다.

  • Amazon ECS 표준 배포에서는 imagedefinitions.json 파일을 배포 작업의 입력으로 사용해야 합니다.

  • Amazon ECS 블루/그린 배포에서는 imageDetail.json 파일을 배포 작업의 입력으로 사용해야 합니다.

    • Amazon ECR 소스 작업은 소스 작업의 출력으로 제공되는 imageDetail.json 파일을 생성합니다.

Amazon ECS 표준 배포 작업을 위한 imagedefinitions.json 파일

이미지 정의 문서는 Amazon ECS 컨테이너 이름과 이미지 및 태그를 설명하는 JSON 파일입니다. 컨테이너 기반 애플리케이션을 배포하려는 경우 CodePipeline 작업자에게 Amazon ECR와 같은 이미지 리포지토리에서 검색할 수 있는 Amazon ECS 컨테이너와 이미지 ID를 제공하도록 이미지 정의 파일을 생성해야 합니다.

참고

이 파일의 기본 파일 이름은 imagedefinitions.json입니다. 다른 파일 이름을 사용하려면 파이프라인 배포 단계를 만들 때 이름을 제공해야 합니다.

다음 사항을 고려하여 imagedefinitions.json 파일을 만듭니다.

  • 파일은 UTF-8 인코딩을 사용해야 합니다.

  • 이미지 정의 파일의 최대 파일 크기 한도는 100KB입니다.

  • 배포 작업에 대한 입력 아티팩트가 되도록 파일을 소스 또는 빌드 아티팩트로 생성해야 합니다. 즉, 파일이 CodeCommit 리포지토리와 같은 소스 위치에 업로드되거나 빌드된 출력 아티팩트로 생성되어야 합니다.

imagedefinitions.json 파일은 컨테이너 이름과 이미지 URI를 제공합니다. 이 파일은 다음 키-값 페어 세트로 생성해야 합니다.

name container_name
imageUri imageUri

다음은 JSON 구조를 나타내는데, 여기서 컨테이너 이름은 sample-app이고, 이미지 URI는 ecs-repo이며, 태그는 latest입니다.

[ { "name": "sample-app", "imageUri": "11111EXAMPLE.dkr.ecr.us-west-2.amazonaws.com/ecs-repo:latest" } ]

컨테이너-이미지 페어를 여러 개 나열하도록 파일을 생성할 수도 있습니다.

JSON 구조:

[ { "name": "simple-app", "imageUri": "httpd:2.4" }, { "name": "simple-app-1", "imageUri": "mysql" }, { "name": "simple-app-2", "imageUri": "java1.8" } ]

파이프라인을 만들기 전에 다음 단계를 사용하여 imagedefinitions.json 파일을 설정합니다.

  1. 파이프라인에 대한 컨테이너 기반 애플리케이션 배포를 계획하는 과정에서 해당되는 경우 소스 단계와 빌드 단계를 계획합니다.

  2. 다음 중 하나를 선택합니다.

    1. 파이프라인이 생성되어 빌드 단계를 건너뛴 경우 JSON 파일을 수동으로 만들고 소스 작업이 아티팩트를 제공할 수 있도록 이를 소스 리포지토리에 업로드해야 합니다. 텍스트 편집기를 사용하여 파일을 만든 후, 파일 이름을 지정하거나 기본 imagedefinitions.json 파일 이름을 사용합니다. 이미지 정의 파일을 소스 리포지토리에 푸시합니다.

      참고

      소스 리포지토리가 Amazon S3 버킷인 경우, JSON 파일을 압축해야 합니다.

    2. 파이프라인에 빌드 단계가 있는 경우 빌드 단계 중에 소스 리포지토리의 이미지 정의 파일을 출력하는 명령을 빌드 사양 파일에 추가합니다. 다음 예제에서는 printf 명령을 사용하여 imagedefinitions.json 파일을 생성합니다. buildspec.yml 파일의 post_build 섹션에 이 명령을 나열합니다.

      printf '[{"name":"container_name","imageUri":"image_URI"}]' > imagedefinitions.json

      이미지 정의 파일을 buildspec.yml 파일에 출력 아티팩트로 포함시켜야 합니다.

  3. 콘솔에서 파이프라인을 생성할 때 파이프라인 생성 마법사의 배포 페이지에 있는 이미지 파일 이름에 이미지 정의 파일 이름을 입력합니다.

Amazon ECS를 배포 공급자로 사용하는 파이프라인 생성에 대한 단계별 자습서는 자습서: CodePipeline을 사용하여 연속 배포 단원을 참조하십시오.

Amazon ECS 블루/그린 배포 작업을 위한 imageDetail.json 파일

imageDetail.json 문서는 Amazon ECS 이미지 URI를 설명하는 JSON 파일입니다. 블루/그린 배포를 위해 컨테이너 기반 애플리케이션을 배포하는 경우 Amazon ECS 및 CodeDeploy 작업자에게 Amazon ECR과 같은 이미지 리포지토리에서 검색할 수 있는 이미지 ID를 제공하도록 imageDetail.json 파일을 생성해야 합니다.

참고

파일의 이름은 imageDetail.json이어야 합니다.

작업 및 해당 파라미터의 설명은 Amazon Elastic Container Service 및 CodeDeploy 블루-그린을 참조하십시오.

배포 작업에 대한 입력 아티팩트가 되도록 imageDetail.json 파일을 소스 또는 빌드 아티팩트로 생성해야 합니다. 다음과 같은 방법 중 하나를 통해 파이프라인에 imageDetail.json 파일을 제공할 수 있습니다.

  • Amazon ECS 블루/그린 배포 작업에 대한 입력으로 파이프라인에 제공되도록 소스 위치에 imageDetail.json 파일을 포함합니다.

    참고

    소스 리포지토리가 Amazon S3 버킷인 경우, JSON 파일을 압축해야 합니다.

  • Amazon ECR 소스 작업은 자동으로 imageDetail.json 파일을 다음 작업에 대한 입력 아티팩트로 생성합니다.

    참고

    Amazon ECR 소스 작업이 이 파일을 작성하므로 Amazon ECR 소스 작업이 있는 파이프라인은 imageDetail.json 파일을 수동으로 제공할 필요가 없습니다.

    Amazon ECR 소스 단계가 포함된 파이프라인을 만드는 방법에 대한 자습서는 자습서: Amazon ECR 소스 및 ECS-to-CodeDeploy 배포를 사용하여 파이프라인 생성 단원을 참조하십시오.

imageDetail.json 파일은 이미지 URI를 제공합니다. 이 파일은 다음 키-값 페어로 생성해야 합니다.

imageURI image_URI
imageDetail.json

다음은 이미지 URI가 ACCOUNTID.dkr.ecr.us-west-2.amazonaws.com/dk-image-repo@sha256:example3인 JSON 구조입니다.

{ "ImageURI": "ACCOUNTID.dkr.ecr.us-west-2.amazonaws.com/dk-image-repo@sha256:example3" }
imageDetail.json (generated by ECR)

변경 사항이 이미지 리포지토리로 푸시될 때마다 Amazon ECR 소스 작업에 의해 imageDetail.json 파일이 자동으로 생성됩니다. Amazon ECR 소스 작업에 의해 생성된 imageDetail.json은 소스 작업의 출력 아티팩트로 파이프라인의 다음 작업에 제공됩니다.

다음은 리포지토리 이름이 dk-image-repo이고, 이미지 URI가 ecs-repo이며, 이미지 태그가 latest인 JSON 구조입니다.

{ "ImageSizeInBytes": "44728918", "ImageDigest": "sha256:EXAMPLE11223344556677889900bfea42ea2d3b8a1ee8329ba7e68694950afd3", "Version": "1.0", "ImagePushedAt": "Mon Jan 21 20:04:00 UTC 2019", "RegistryId": "EXAMPLE12233", "RepositoryName": "dk-image-repo", "ImageURI": "ACCOUNTID.dkr.ecr.us-west-2.amazonaws.com/dk-image-repo@sha256:example3", "ImageTags": [ "latest" ] }

imageDetail.json 파일은 다음과 같이 이미지 URI와 컨테이너 이름을 Amazon ECS 작업 정의에 매핑합니다.

  • ImageSizeInBytes: 리포지토리의 이미지 크기(바이트)

  • ImageDigest: 이미지 매니페스트의 sha256 다이제스트

  • Version: 이미지 버전

  • ImagePushedAt: 최신 이미지가 리포지토리로 푸시된 날짜와 시간

  • RegistryId: 리포지토리가 포함된 레지스트리와 연결되는 AWS 계정 ID입니다.

  • RepositoryName: 이미지가 푸시된 Amazon ECR 리포지토리의 이름입니다.

  • ImageURI: 이미지의 URI

  • ImageTags: 이미지에 사용된 태그

파이프라인을 만들기 전에 다음 단계를 사용하여 imageDetail.json 파일을 설정합니다.

  1. 파이프라인에 대한 컨테이너 기반 애플리케이션 블루/그린 배포를 계획하는 과정에서 해당하는 경우 소스 단계와 빌드 단계를 계획합니다.

  2. 다음 중 하나를 선택합니다.

    1. 파이프라인에서 빌드 단계를 건너뛴 경우 JSON 파일을 수동으로 만들고 소스 작업이 아티팩트를 제공할 수 있도록 이를 소스 리포지토리(예: CodeCommit)에 업로드해야 합니다. 텍스트 편집기를 사용하여 파일을 만든 후, 파일 이름을 지정하거나 기본 imageDetail.json 파일 이름을 사용합니다. imageDetail.json 파일을 해당 소스 리포지토리에 푸시합니다.

    2. 파이프라인에 빌드 단계가 있는 경우 다음을 수행하십시오.

      1. 빌드 단계 중에 소스 리포지토리의 이미지 정의 파일을 출력하는 명령을 빌드 사양 파일에 추가합니다. 다음 예제에서는 printf 명령을 사용하여 imageDetail.json 파일을 생성합니다. buildspec.yml 파일의 post_build 섹션에 이 명령을 나열합니다.

        printf '{"ImageURI":"image_URI"}' > imageDetail.json

        imageDetail.json 파일을 buildspec.yml 파일에 출력 아티팩트로 포함시켜야 합니다.

      2. imageDetail.jsonbuildspec.yml 파일에 아티팩트 파일로 추가합니다.

        artifacts: files: - imageDetail.json