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

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

이미지 정의 파일 참조

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

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

  • Amazon ECS 표준 배포에는 배포 작업에 대한 입력으로 imagedefinitions.json 파일이 필요합니다. 에서 Amazon ECS 표준 배포 작업을 사용하는 자습서는 섹션을 CodePipeline참조하세요자습서: Amazon ECS Standard 배포 CodePipeline.

  • Amazon ECS 블루/그린 배포에는 배포 작업에 대한 입력으로 imageDetail.json 파일이 필요합니다. 샘플 블루/그린 배포가 포함된 자습서는 섹션을 참조하세요자습서: Amazon ECR 소스 및 CodeDeploy 배포ECS로 파이프라인 생성.

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

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

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

참고

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

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

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

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

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

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

name container_name
imageUri imageUri
참고

이름 필드는 컨테이너 이미지 이름, 즉 Docker 이미지의 이름에 사용됩니다.

컨테이너 이름이 이고 sample-app이미지가 URI이고 태그가 ecs-repo인 JSON 구조는 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로 사용하는 파이프라인을 생성하기 위한 step-by-step 자습서는 자습서: 를 사용한 연속 배포 CodePipeline를 참조하세요.

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

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

참고

파일의 이름은 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 소스 및 CodeDeploy 배포ECS로 파이프라인 생성.

아티팩트 버킷에 포함된 imageDetail.json 파일을 보여주는 다이어그램

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

이미지URI image_URI
imageDetail.json

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

{ "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가 인 JSON 구조는 latest다음과 같습니다.

{ "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