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

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

이미지 정의 파일 참조

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

AWS CodePipelineAmazon ECR 소스 작업 또는 Amazon ECS 배포 작업과 같은 컨테이너 작업의 작업자는 정의 파일을 사용하여 이미지 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. 콘솔에 파이프라인을 생성할 때배포의 페이지파이프라인 생성마법사, 인디애나이미지 파일 이름이미지 정의 파일 이름을 입력합니다.

a를 위해 step-by-step Amazon ECS를 배포 공급자로 사용하는 파이프라인 생성에 대한 자습서는 단원을 참조하십시오.자습서: 를 사용한 지속적 배포 CodePipeline.

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

원래 요청 ping에 대한imageDetail.json문서는 Amazon ECS 이미지 URI를 설명하는 JSON 파일입니다. 블루/그린 배포를 위해 컨테이너 기반 애플리케이션을 배포하는 경우imageDetail.jsonAmazon ECS를 제공할 파일 및 CodeDeploy이미지 저장소에서 검색할 이미지 ID를 가진 작업 근로자 (예: Amazon ECR)

참고

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

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

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

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

    참고

    소스 리포지토리가 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)

원래 요청 ping에 대한imageDetail.json변경 사항이 이미지 리포지토리로 푸시될 때마다 Amazon ECR 소스 작업에 의해 파일이 자동으로 생성됩니다. 이imageDetail.jsonAmazon ECR에 의해 생성된 소스 작업이 파이프라인의 다음 작업에 제공됩니다.

다음은 리포지토리 이름이 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