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

Este é o Guia do Desenvolvedor AWS CDK v2. A versão CDK 1 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?

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 por meio dela. AWS CloudFormation

O AWS CDK consiste em duas partes principais:

  • AWS CDK Construct Library — Uma coleção de partes de código modulares e reutilizáveis pré-escritas, chamadas de construções, que você pode usar, modificar e integrar para desenvolver sua infraestrutura rapidamente. O objetivo da AWS CDK Construct Library é reduzir a complexidade necessária para definir e integrar AWS serviços ao criar aplicativos AWS.

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

Os AWS CDK suportes TypeScript JavaScriptPython,Java,C#/.Net,, Go e. Você pode usar qualquer uma dessas linguagens de programação compatíveis para definir componentes de nuvem reutilizáveis conhecidos como construções. Você os compõe em pilhas e aplicativos. Em seguida, você implanta seus CDK aplicativos 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 econômicos na nuvem com o considerável poder expressivo de uma linguagem de programação. Essa abordagem gera muitos benefícios, incluindo:

Desenvolva e gerencie 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 o 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 o IaC, consulte Infraestrutura como código na Introdução ao DevOps AWS Whitepaper.

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 melhores práticas de engenharia de software, como análises de código, testes unitários 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 JavaScriptPython,Java,C#/.Net,, Go e. Escolha sua linguagem preferida e use elementos de programação como parâmetros, condicionais, loops, composição e herança para definir o resultado desejado de sua 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 sua preferência IDE (Ambiente de Desenvolvimento Integrado), 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 de AWS CloudFormation

AWS CDK se integra AWS CloudFormation para implantar e provisionar sua infraestrutura. AWS AWS CloudFormation é um gerenciador AWS service (Serviço da AWS) que oferece amplo suporte de configurações de recursos e propriedades para serviços de provisionamento em. AWS Com 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 AWS CloudFormation, não precisa aprender um novo serviço de gerenciamento de IaC ao começar a AWS CDK usar o.

Comece a desenvolver seu aplicativo rapidamente com construções

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

Crie suas próprias construções personalizadas para seus casos de uso exclusivos e compartilhe-as em toda a organização ou até mesmo com o público.

Exemplo do AWS CDK

Veja a seguir um exemplo do uso da AWS CDK Constructs Library para criar um serviço Amazon Elastic Container Service (AmazonECS) com tipo de AWS Fargate lançamento. Para obter mais detalhes desse exemplo, consulteExemplo: Crie um AWS Fargate serviço 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 AWS CloudFormation modelo de mais de 500 linhas. A implantação do AWS CDK aplicativo produz mais de 50 recursos dos seguintes tipos.

AWS CDK features

O AWS CDKGitHub repositório

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

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

A AWS CDK API referência

A AWS CDK Construct Library APIs permite definir seu CDK aplicativo e adicionar CDK construções ao aplicativo. Para obter mais informações, consulte a AWS CDK APIReferência.

O modelo de programação Construct

O Construct Programming Model (CPM) estende os conceitos por trás do AWS CDK em domínios adicionais. Outras ferramentas que usam o CPM incluem:

O Construct Hub

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

Próximas etapas

Para começar a usar o AWS CDK, consulteComeçando com o AWS CDK.

Saiba mais

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

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

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

  • AWS Glossário — Definições dos principais termos usados em todos AWS os.

Para saber mais sobre ferramentas relacionadas ao AWS CDK que podem ser usadas para simplificar o desenvolvimento e a implantação de aplicativos 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 sem servidor no. AWS

  • AWSChalice— Uma estrutura para escrever aplicativos sem servidor em. Python