Este é o Guia do desenvolvedor do AWS CDK v2. O CDK v1 antigo entrou em manutenção em 1º de junho de 2022 e encerrou o suporte em 1º de junho de 2023.
Criação e implantação de ativos de imagem de contêiner em aplicações do CDK
Quando você cria ativos de imagem de contêiner com o kit de desenvolvimento em nuvem da AWS (CDK da AWS), o Docker é utilizado por padrão para realizar essas ações. Se você desejar usar uma ferramenta diferente de gerenciamento de contêineres, poderá substituir o Docker por meio da variável de ambiente CDK_DOCKER.
Exemplo: criação e publicação de um ativo de imagem de contêiner com o AWS CDK
Veja a seguir um exemplo simples de uma aplicação do AWS CDK que cria e publica um ativo de contêiner no Amazon Elastic Container Registry (Amazon ECR) usando o Docker por padrão:
- Estrutura do projeto
-
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 - Código da aplicação
-
Em
lib/docker/app/index.js:console.log("Hello from inside the container!"); - Pilha do 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, }); } } - Aplicação do 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');
Quando executamos cdk deploy, a interface de linha de comandos (CLI) do kit de desenvolvimento em nuvem da AWS (CDK da AWS) faz o seguinte:
-
Cria a imagem do Docker: executa
docker buildlocalmente com base noDockerfileno diretório especificado (lib/docker). -
Marca a imagem: executa
docker tagpara marcar a imagem criada com um hash exclusivo, com base no conteúdo da imagem. -
Publica no Amazon ECR: executa
docker pushpara publicar a imagem do contêiner em um repositório do Amazon ECR. O repositório já deve existir. Ele é criado durante o processo de bootstrapping padrão. -
Exibe o URI da imagem: depois de uma implantação com êxito, o URI do Amazon ECR da imagem do contêiner publicada é exibido em seu prompt de comando. Esse é o URI da nossa imagem do Docker no Amazon ECR.
Como substituir o Docker por outra ferramenta de gerenciamento de contêineres
Use a variável de ambiente CDK_DOCKER para especificar o caminho para o binário da sua ferramenta de gerenciamento de contêineres substituta. Veja a seguir um exemplo de substituição do Docker pelo 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
Não há suporte para aliases ou vinculação. Para substituir o Docker, é necessário usar a variável de ambiente CDK_DOCKER.
Mecanismos de substituição direta do Docker com suporte
Há suporte para o Finch, embora alguns recursos do Docker possam estar indisponíveis ou funcionar de forma diferente à medida que a ferramenta evolui. Para obter mais informações sobre o Finch, consulte Pronto para decolar: anúncio do Finch 1.0 GA!
Outras ferramentas de gerenciamento de contêineres podem funcionar. O CDK não verifica qual substituto do Docker você está usando para determinar se há suporte. Se a ferramenta tiver comandos equivalentes do Docker e se comportar de forma semelhante, deverá funcionar.