O que é o AWS CDK? - AWS Kit de desenvolvimento em nuvem (AWS CDK) v2

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.

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 kit de desenvolvimento em nuvem da da AWS (CDK da AWS) é uma estrutura de desenvolvimento de software de código aberto para definir a infraestrutura de nuvem em código e provisioná-la por meio do AWS CloudFormation.

O AWS CDK consiste em duas partes principais:

  • Biblioteca de Constructos do AWS CDK : uma coleção de trechos de código modulares e reutilizáveis pré-escritos, chamados de constructos, que podem ser usados, modificados e integrados para desenvolver sua infraestrutura rapidamente. O objetivo da Biblioteca de Constructos do AWS CDK é reduzir a complexidade necessária para definir e integrar serviços da AWS ao compilar aplicações na AWS.

  • Kit de Ferramentas CDK da AWS: ferramentas que podem ser usadas para gerenciar e interagir com suas aplicações do CDK, como realizar síntese ou implantação. O Kit de Ferramentas CDK consiste em uma ferramenta de linha de comando (CLI do CDK) e uma biblioteca programática (Biblioteca do Kit de Ferramentas CDK).

O AWS CDK oferece suporte a TypeScript, JavaScript, Python, Java, C#/.Net e Go. É possível 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 aplicações. Em seguida, você implanta suas aplicações do CDK por meio do AWS CloudFormation para provisionar ou atualizar seus recursos.

Visão geral da aplicação e dos processos do CDK

Benefícios do AWS CDK

Use o AWS CDK para desenvolver aplicações 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, é possível colocar sua infraestrutura, código de aplicação 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, é possível 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.

Trecho de código mostrando a configuração do CDK para o cluster do ECS com a configuração de VPC e serviço do Fargate.
Implementação de infraestrutura por meio do AWS CloudFormation

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

Comece a desenvolver sua aplicação rapidamente com constructos

Desenvolva mais rápido usando e compartilhando componentes reutilizáveis chamados constructos. Use constructos de baixo nível para definir recursos individuais do AWS CloudFormation e suas propriedades. Use constructos de alto nível para definir rapidamente componentes maiores da sua aplicação, 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 do AWS CDK para criar um serviço Amazon Elastic Container Service (Amazon ECS) com o tipo de lançamento do AWS Fargate. Para obter mais detalhes sobre esse exemplo, consulte Exemplo: criação de um serviço do 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 do AWS CloudFormation de mais de 500 linhas. A implantação da aplicação do AWS CDK produz mais de 50 recursos dos tipos a seguir:

Atributos do AWS CDK

O repositório do GitHub do AWS CDK

Para obter o repositório do GitHub oficial do AWS CDK, 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 Contribuição ao kit de desenvolvimento em nuvem da AWS (CDK da AWS).

A referência de API do AWS CDK

A Biblioteca de Constructos do AWS CDK fornece APIs para definir sua aplicação CDK e adicionar constructos do CDK à aplicação. Para obter mais informações, consulte a Referência de 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 online onde é possível encontrar, publicar e compartilhar bibliotecas de código aberto do AWS CDK.

Próximas etapas

Para começar a usar o AWS CDK, consulte Conceitos básicos do 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 AWS CDK foi desenvolvido para funcionar com o AWS CloudFormation, recomendamos que você aprenda e compreenda os principais conceitos do AWS CloudFormation.

  • Glossário da AWS : definições dos principais termos usados na AWS.

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