Este é o Guia do Desenvolvedor 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.
As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Quando você cria ativos de imagem de contêiner com o AWS Cloud Development Kit (AWS CDK), Docker é utilizado por padrão para realizar essas ações. Se você quiser usar uma ferramenta de gerenciamento de contêineres diferente, você pode substituir Docker por meio da variável de CDK_DOCKER
ambiente.
Exemplo: Crie e publique um ativo de imagem de contêiner com o AWS CDK
A seguir está um exemplo simples de um AWS CDK aplicativo que cria e publica um ativo de contêiner no Amazon Elastic Container Registry (Amazon ECR) usando 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 AWS Lambda Node.js base image looks for index.handler by default
Código do aplicativo:
Em lib/docker/app/index.js
:
console.log("Hello from inside the container!");
Pilha de 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,
});
}
}
Aplicativo 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 executamoscdk deploy
, a interface de linha de AWS Cloud Development Kit (AWS CDK) comando (CLI) faz o seguinte:
-
Construa o Docker imagem — Execute
docker build
localmente com baseDockerfile
no diretório especificado (lib/docker
). -
Marque a imagem — Execute
docker tag
para marcar a imagem criada com um hash exclusivo, com base no conteúdo da imagem. -
Publicar no Amazon ECR — Execute
docker push
para publicar a imagem do contêiner em um repositório do Amazon ECR. Esse repositório já deve existir. Ele é criado durante o processo de inicialização padrão. -
Exiba o URI da imagem — Depois de uma implantação bem-sucedida, o URI do Amazon ECR da imagem do contêiner publicada é exibido em seu prompt de comando. Este é o URI do nosso Docker imagem no Amazon ECR.
Como substituir Docker com outra ferramenta de gerenciamento de contêineres
Use a variável de CDK_DOCKER
ambiente para especificar o caminho para o binário da sua ferramenta de gerenciamento de contêineres substituta. A seguir está um exemplo de substituição Docker por 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 aliasing ou vinculação. Para substituir Docker, você deve usar a variável de CDK_DOCKER
ambiente.
Compatível Docker motores de substituição automáticos
Finch é suportado, embora possa haver alguns Docker recursos que não estão disponíveis ou podem funcionar de forma diferente à medida que a ferramenta evolui. Para obter mais informações sobre Finch, consulte Ready for Flight: Announcing Finch 1.0
Outras ferramentas de gerenciamento de contêineres podem funcionar. O CDK não verifica quais Docker substituição que você está usando para determinar se é compatível. Se a ferramenta tiver equivalente Docker comanda e se comporta de forma semelhante, deve funcionar.