CDK 앱에서 컨테이너 이미지 자산 구축 및 배포 - AWS 클라우드 개발 키트(AWS CDK) v2

CDK AWS v2 개발자 안내서입니다. 이전 CDK v1은 2022년 6월 1일에 유지 관리에 들어갔으며 2023년 6월 1일에 지원이 종료되었습니다.

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

CDK 앱에서 컨테이너 이미지 자산 구축 및 배포

AWS 클라우드 개발 키트(AWS CDK)를 사용하여 컨테이너 이미지 자산을 빌드하면 기본적으로 Docker가 이러한 작업을 수행하는 데 사용됩니다. 다른 컨테이너 관리 도구를 사용하려면 CDK_DOCKER 환경 변수를 통해 Docker를 교체할 수 있습니다.

예: AWS CDK를 사용하여 컨테이너 이미지 자산 빌드 및 게시

다음은 기본적으로 Docker를 사용하여 컨테이너 자산을 빌드하고 Amazon Elastic Container Registry(Amazon ECR)에 게시하는 AWS CDK 앱의 간단한 예입니다.

프로젝트 구조
my-cdk-app/ ├── lib/ │ ├── my-stack.ts │ └── docker/ │ ├── Dockerfile │ └── app/ │ └── index.js ├── bin/ │ └── my-cdk-app.ts ├── package.json ├── tsconfig.json └── cdk.json
Dockerfile
FROM public.ecr.aws/lambda/nodejs:16 # Copy application code COPY app/ /var/task/ # (Optional) Install dependencies # RUN npm install # The Lambda Node.js base image looks for index.handler by default
애플리케이션 코드

lib/docker/app/index.js에서:

console.log("Hello from inside the container!");
CDK 스택
import * as cdk from 'aws-cdk-lib'; import { Construct } from 'constructs'; import * as ecr_assets from 'aws-cdk-lib/aws-ecr-assets'; export class MyStack extends cdk.Stack { constructor(scope: Construct, id: string) { super(scope, id); // Define a Docker image asset const dockerImageAsset = new ecr_assets.DockerImageAsset(this, 'MyDockerImage', { directory: 'lib/docker', // Path to the directory containing the Dockerfile }); // Output the ECR URI new cdk.CfnOutput(this, 'ECRImageUri', { value: dockerImageAsset.imageUri, }); } }
CDK 앱
#!/usr/bin/env node import * as cdk from 'aws-cdk-lib'; import { MyStack } from '../lib/my-stack'; const app = new cdk.App(); new MyStack(app, 'MyStack');

cdk deploy를 실행하면 AWS 클라우드 개발 키트(AWS CDK) 명령줄 인터페이스(CLI)가 다음을 수행합니다.

  1. Docker 이미지 빌드 - 지정된 디렉터리()의를 기반으로 docker build 로컬Dockerfile에서 실행합니다lib/docker.

  2. 이미지 태그 지정 -를 실행docker tag하여 이미지 콘텐츠를 기반으로 고유한 해시로 빌드된 이미지에 태그를 지정합니다.

  3. Amazon ECR에 게시 -를 실행docker push하여 컨테이너 이미지를 Amazon ECR 리포지토리에 게시합니다. 이 리포지토리가 이미 있어야 합니다. 기본 부트스트래핑 프로세스 중에 생성됩니다.

  4. 이미지 URI 출력 - 배포에 성공하면 게시된 컨테이너 이미지의 Amazon ECR URI가 명령 프롬프트에 출력됩니다. Amazon ECR에 있는 Docker 이미지의 URI입니다.

Docker를 다른 컨테이너 관리 도구로 교체하는 방법

CDK_DOCKER 환경 변수를 사용하여 대체 컨테이너 관리 도구의 바이너리 경로를 지정합니다. 다음은 Docker를 로 대체하는 예입니다Finch.

$ which finch /usr/local/bin/finch # Locate the path to the binary $ export CDK_DOCKER='/usr/local/bin/finch' # Set the environment variable $ cdk deploy # Deploy using the replacement

별칭 지정 또는 연결은 지원되지 않습니다. Docker를 교체하려면 CDK_DOCKER 환경 변수를 사용해야 합니다.

지원되는 Docker 드롭인 대체 엔진

Finch는 지원되지만 일부 Docker 기능은 사용할 수 없거나 도구가 발전함에 따라 다르게 작동할 수 있습니다. Finch에 대한 자세한 내용은 AWS 오픈 소스 블로그비행 준비 완료: Finch 1.0 GA! 발표를 참조하세요.

다른 컨테이너 관리 도구가 작동할 수 있습니다. CDK는 지원되는지 확인하는 데 사용하는 Docker 교체를 확인하지 않습니다. 도구에 동등한 Docker 명령이 있고 비슷하게 동작하는 경우 작동해야 합니다.