O que é o AWS CDK? - AWS Cloud Development Kit (AWS CDK) v2

Este é o Guia do Desenvolvedor AWS CDK v2. A CDK v1 mais antiga 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á.

O que é o AWS CDK?

O AWS Cloud Development Kit (AWS CDK) é uma estrutura de desenvolvimento de software de código aberto para definir a infraestrutura de nuvem em código e provisioná-la pelo AWS CloudFormation.

O AWS CDK consiste em duas partes principais:

  • Biblioteca de Constructos da AWS CDK — Uma coleção de trechos de código modulares e reutilizáveis pré-escritos, chamados de constructos, que você pode usar, modificar e integrar para desenvolver sua infraestrutura rapidamente. O objetivo da Biblioteca de Constructos da AWS CDK é reduzir a complexidade necessária para definir e integrar serviços da AWS ao criar aplicativos na AWS.

  • Interface de linha de comandos do AWS CDK (AWS CDKCLI) — Uma ferramenta de linha de comando para interagir com aplicativos CDK. Use o CDK CLI para criar, gerenciar e implantar seus projetos AWS CDK. O CDK CLI também é conhecido como CDK Toolkit.

O AWS CDK é compatível com TypeScript, JavaScript, Python, Java, C#/.Net e Go. Você pode usar qualquer uma dessas linguagens de programação compatíveis para definir componentes de nuvem reutilizáveis conhecidos como constructos. Você os compõe em pilhas e aplicativos. Em seguida, você implanta seus aplicativos CDK AWS CloudFormation para provisionar ou atualizar seus recursos.

AWS CDK app structure with stacks, constructs, and deployment to CloudFormation.

Benefícios do AWS CDK

Use o AWS CDK para desenvolver aplicativos confiáveis, escaláveis e com bom custo-benefício na nuvem com o considerável poder expressivo de uma linguagem de programação. Essa abordagem gera muitos benefícios, incluindo:

Desenvolver e gerenciar sua infraestrutura como código (IaC)

Pratique a infraestrutura como código para criar, implantar e manter a infraestrutura de forma programática, descritiva e declarativa. Com a IaC, você trata a infraestrutura da mesma forma que os desenvolvedores tratam o código. Isso resulta em uma abordagem escalável e estruturada para gerenciar a infraestrutura. Para saber mais sobre a IaC, consulte Infraestrutura como código no Whitepaper Introdução ao DevOps no AWS.

Com o AWS CDK, você pode colocar sua infraestrutura, código de aplicativo e configuração em um só lugar, garantindo que você tenha um sistema completo e implantável na nuvem em cada etapa. Empregue as práticas recomendadas de engenharia de software, como análises de código, testes de unidade e controle de origem, para tornar sua infraestrutura mais robusta.

Defina sua infraestrutura de nuvem usando linguagens de programação de uso geral

Com o AWS CDK, você pode usar qualquer uma das seguintes linguagens de programação para definir sua infraestrutura de nuvem: TypeScript, JavaScript, Python, Java, C#/.Net e Go. Escolha sua linguagem preferencial e use elementos de programação como parâmetros, condicionais, loops, composição e herança para definir o resultado desejado da infraestrutura.

Use a mesma linguagem de programação para definir sua infraestrutura e sua lógica de aplicação.

Receba os benefícios de desenvolver a infraestrutura em seu IDE (Ambiente de Desenvolvimento Integrado) preferido, como destaque de sintaxe e preenchimento inteligente de código.

Code snippet showing AWS CDK setup for ECS cluster with VPC and Fargate service configuration.
Implante a infraestrutura por meio do AWS CloudFormation

O AWS CDK se integra com o AWS CloudFormation para implantar e provisionar sua infraestrutura no AWS. O AWS CloudFormation é um gerenciador da AWS service (Serviço da AWS) que oferece amplo suporte de configurações de recursos e propriedades para serviços de provisionamento na AWS. Com o AWS CloudFormation, você pode realizar implantações de infraestrutura de forma previsível e repetida, com reversão em caso de erro. Se você já está familiarizado com o AWS CloudFormation, não precisa aprender um novo serviço de gerenciamento de IaC ao começar com o AWS CDK.

Comece a desenvolver seu aplicativo rapidamente com constructos

Desenvolva mais rápido usando e compartilhando componentes reutilizáveis chamados constructos. Use constructos de baixo nível para definir recursos AWS CloudFormation individuais e suas propriedades. Use constructos de alto nível para definir rapidamente componentes maiores do seu aplicativo, com padrões sensatos e seguros para seus recursos AWS, definindo mais infraestrutura com menos código.

Crie seus próprios constructos personalizados para seus casos de uso exclusivos e compartilhe-os em toda a organização ou até mesmo com o público.

Exemplo do AWS CDK

A seguir está um exemplo de como usar a Biblioteca de Constructos AWS CDK para criar um serviço Amazon Elastic Container Service (Amazon ECS) com o tipo de lançamento AWS Fargate. Para obter mais detalhes, consulte Exemplo: criar um serviço AWS Fargate usando o AWS CDK.

TypeScript
export class MyEcsConstructStack extends Stack { constructor(scope: App, id: string, props?: StackProps) { super(scope, id, props); const vpc = new ec2.Vpc(this, "MyVpc", { maxAzs: 3 // Default is all AZs in region }); const cluster = new ecs.Cluster(this, "MyCluster", { vpc: vpc }); // Create a load-balanced Fargate service and make it public new ecs_patterns.ApplicationLoadBalancedFargateService(this, "MyFargateService", { cluster: cluster, // Required cpu: 512, // Default is 256 desiredCount: 6, // Default is 1 taskImageOptions: { image: ecs.ContainerImage.fromRegistry("amazon/amazon-ecs-sample") }, memoryLimitMiB: 2048, // Default is 512 publicLoadBalancer: true // Default is false }); } }
JavaScript
class MyEcsConstructStack extends Stack { constructor(scope, id, props) { super(scope, id, props); const vpc = new ec2.Vpc(this, "MyVpc", { maxAzs: 3 // Default is all AZs in region }); const cluster = new ecs.Cluster(this, "MyCluster", { vpc: vpc }); // Create a load-balanced Fargate service and make it public new ecs_patterns.ApplicationLoadBalancedFargateService(this, "MyFargateService", { cluster: cluster, // Required cpu: 512, // Default is 256 desiredCount: 6, // Default is 1 taskImageOptions: { image: ecs.ContainerImage.fromRegistry("amazon/amazon-ecs-sample") }, memoryLimitMiB: 2048, // Default is 512 publicLoadBalancer: true // Default is false }); } } module.exports = { MyEcsConstructStack }
Python
class MyEcsConstructStack(Stack): def __init__(self, scope: Construct, id: str, **kwargs) -> None: super().__init__(scope, id, **kwargs) vpc = ec2.Vpc(self, "MyVpc", max_azs=3) # default is all AZs in region cluster = ecs.Cluster(self, "MyCluster", vpc=vpc) ecs_patterns.ApplicationLoadBalancedFargateService(self, "MyFargateService", cluster=cluster, # Required cpu=512, # Default is 256 desired_count=6, # Default is 1 task_image_options=ecs_patterns.ApplicationLoadBalancedTaskImageOptions( image=ecs.ContainerImage.from_registry("amazon/amazon-ecs-sample")), memory_limit_mib=2048, # Default is 512 public_load_balancer=True) # Default is False
Java
public class MyEcsConstructStack extends Stack { public MyEcsConstructStack(final Construct scope, final String id) { this(scope, id, null); } public MyEcsConstructStack(final Construct scope, final String id, StackProps props) { super(scope, id, props); Vpc vpc = Vpc.Builder.create(this, "MyVpc").maxAzs(3).build(); Cluster cluster = Cluster.Builder.create(this, "MyCluster") .vpc(vpc).build(); ApplicationLoadBalancedFargateService.Builder.create(this, "MyFargateService") .cluster(cluster) .cpu(512) .desiredCount(6) .taskImageOptions( ApplicationLoadBalancedTaskImageOptions.builder() .image(ContainerImage .fromRegistry("amazon/amazon-ecs-sample")) .build()).memoryLimitMiB(2048) .publicLoadBalancer(true).build(); } }
C#
public class MyEcsConstructStack : Stack { public MyEcsConstructStack(Construct scope, string id, IStackProps props=null) : base(scope, id, props) { var vpc = new Vpc(this, "MyVpc", new VpcProps { MaxAzs = 3 }); var cluster = new Cluster(this, "MyCluster", new ClusterProps { Vpc = vpc }); new ApplicationLoadBalancedFargateService(this, "MyFargateService", new ApplicationLoadBalancedFargateServiceProps { Cluster = cluster, Cpu = 512, DesiredCount = 6, TaskImageOptions = new ApplicationLoadBalancedTaskImageOptions { Image = ContainerImage.FromRegistry("amazon/amazon-ecs-sample") }, MemoryLimitMiB = 2048, PublicLoadBalancer = true, }); } }
Go
func NewMyEcsConstructStack(scope constructs.Construct, id string, props *MyEcsConstructStackProps) awscdk.Stack { var sprops awscdk.StackProps if props != nil { sprops = props.StackProps } stack := awscdk.NewStack(scope, &id, &sprops) vpc := awsec2.NewVpc(stack, jsii.String("MyVpc"), &awsec2.VpcProps{ MaxAzs: jsii.Number(3), // Default is all AZs in region }) cluster := awsecs.NewCluster(stack, jsii.String("MyCluster"), &awsecs.ClusterProps{ Vpc: vpc, }) awsecspatterns.NewApplicationLoadBalancedFargateService(stack, jsii.String("MyFargateService"), &awsecspatterns.ApplicationLoadBalancedFargateServiceProps{ Cluster: cluster, // required Cpu: jsii.Number(512), // default is 256 DesiredCount: jsii.Number(5), // default is 1 MemoryLimitMiB: jsii.Number(2048), // Default is 512 TaskImageOptions: &awsecspatterns.ApplicationLoadBalancedTaskImageOptions{ Image: awsecs.ContainerImage_FromRegistry(jsii.String("amazon/amazon-ecs-sample"), nil), }, PublicLoadBalancer: jsii.Bool(true), // Default is false }) return stack }

Essa classe produz um modelo de mais de 500 linhas de AWS CloudFormation. A implantação do aplicativo AWS CDK produz mais de 50 recursos dos seguintes tipos.

Atributos do AWS CDK

O repositório AWS CDK GitHub

Para o repositório oficial AWS CDK GitHub, consulte aws-cdk. Aqui, você pode enviar problemas, ver nossa licença, acompanhar lançamentos e muito mais.

Como o AWS CDK é de código aberto, a equipe incentiva você a contribuir para torná-lo uma ferramenta ainda melhor. Para obter detalhes, consulte Contribuindo para o AWS Cloud Development Kit (AWS CDK).

A referência da API AWS CDK

A Biblioteca de Constructos da AWS CDK fornece APIs para definir seu aplicativo CDK e adicionar constructos CDK ao aplicativo. Para obter mais informações, consulte a Referência da API do AWS CDK.

O modelo de programação do constructo

O Modelo de Programação do Constructo (CPM) estende os conceitos por trás do AWS CDK em domínios adicionais. Outras ferramentas que usam o CPM incluem:

O Hub de Constructos

O Hub de Constructos é um registro on-line onde você pode encontrar, publicar e compartilhar bibliotecas de código aberto AWS CDK.

Próximas etapas

Para começar a usar o AWS CDK, consulte Conceitos básicos da AWS CDK.

Saiba mais

Para continuar aprendendo sobre o AWS CDK, consulte o seguinte:

Para saber mais tópicos relacionados ao AWS CDK, consulte o seguinte:

  • Conceitos do AWS CloudFormation — Como o foi AWS CDK desenvolvido para funcionar com o AWS CloudFormation, recomendamos que você aprenda e compreenda os principais conceitos do AWS CloudFormation.

  • AWS Glossário — Definições dos principais termos usados no AWS.

Para saber mais sobre ferramentas relacionadas ao AWS CDK que podem ser usadas para simplificar o desenvolvimento e a implantação de aplicativos em tecnologia sem servidor, consulte o seguinte:

  • AWS Serverless Application Model — Uma ferramenta de desenvolvedor de código aberto que simplifica e melhora a experiência de criar e executar aplicativos de tecnologia sem servidor no AWS.

  • AWSChalice — Uma estrutura para escrever aplicativos de tecnologia sem servidor no Python.