

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?
<a name="home"></a>

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](constructs.md) **: 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](ref-cli-cmd.md)) e uma biblioteca programática ([Biblioteca do Kit de Ferramentas CDK](toolkit-library.md)).

O AWS CDK oferece suporte a TypeScript, JavaScript, Python, Java, C\$1/.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](constructs.md). Você os compõe em [pilhas](stacks.md) e [aplicações](apps.md). 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\]](http://docs.aws.amazon.com/pt_br/cdk/v2/guide/images/AppStacks.png)


## Benefícios do AWS CDK
<a name="home-benefits"></a>

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:<a name="home-benefits-iac"></a>

 **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](https://docs.aws.amazon.com/whitepapers/latest/introduction-devops-aws/infrastructure-as-code.html) 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.<a name="home-benefits-languages"></a>

 **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\$1/.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.\]](http://docs.aws.amazon.com/pt_br/cdk/v2/guide/images/CodeCompletion.png)
<a name="home-benefits-cfn"></a>

 **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.<a name="home-benefits-constructs"></a>

 **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 name="home-example"></a>

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](ecs-example.md).

**Example**  

```
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
    });
  }
}
```

```
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 }
```

```
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
```

```
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();
  }
}
```

```
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,
        });
    }
}
```

```
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:
+  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-eip.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-eip.html) 
+  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-internetgateway.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-internetgateway.html) 
+  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-natgateway.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-natgateway.html) 
+  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-route.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-route.html) 
+  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-routetable.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-routetable.html) 
+  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group.html) 
+  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-subnet.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-subnet.html) 
+  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-subnet-route-table-assoc.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-subnet-route-table-assoc.html) 
+  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpc-gateway-attachment.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpc-gateway-attachment.html) 
+  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpc.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpc.html) 
+  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-cluster.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-cluster.html) 
+  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-service.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-service.html) 
+  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-taskdefinition.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-taskdefinition.html) 
+  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-listener.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-listener.html) 
+  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-loadbalancer.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-loadbalancer.html) 
+  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-targetgroup.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-targetgroup.html) 
+  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-policy.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-policy.html) 
+  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html) 
+  [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-loggroup.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-loggroup.html) 

## Atributos do AWS CDK
<a name="home-features"></a>

### O repositório do GitHub do AWS CDK
<a name="home-features-repo"></a>

Para obter o repositório do GitHub oficial do AWS CDK, consulte [aws-cdk](https://github.com/aws/aws-cdk). Aqui, você pode enviar [problemas](https://github.com/aws/aws-cdk/issues), ver nossa [licença](https://github.com/aws/aws-cdk/blob/main/LICENSE), acompanhar [lançamentos](https://github.com/aws/aws-cdk/releases) 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)](https://github.com/aws/aws-cdk/blob/main/CONTRIBUTING.md).

### A referência de API do AWS CDK
<a name="home-features-api"></a>

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](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-construct-library.html).

### O modelo de programação do constructo
<a name="home-features-cpm"></a>

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:
+  [CDK para Terraform](https://www.terraform.io/docs/cdktf/index.html) (CDktf)
+  [CDK para Kubernetes](https://cdk8s.io/) (CDK8s)
+  [Projen](https://github.com/projen/projen), para criar configurações de projeto

### O Hub de Constructos
<a name="home-features-hub"></a>

O [Hub de Constructos](https://constructs.dev/) é um registro online onde é possível encontrar, publicar e compartilhar bibliotecas de código aberto do AWS CDK.

## Próximas etapas
<a name="home-next"></a>

Para começar a usar o AWS CDK, consulte [Conceitos básicos do AWS CDK](getting-started.md).

## Saiba mais
<a name="home-learn"></a>

Para continuar aprendendo sobre o AWS CDK, consulte o seguinte:
+  **[Saiba mais sobre os principais conceitos do CDK da AWS](core-concepts.md)**: conceitos e termos importantes para o CDK da AWS.
+  ** [Workshop do AWS CDK](https://cdkworkshop.com/) **: workshop prático para aprender e usar o AWS CDK.
+  ** [Padrões do AWS CDK](https://cdkpatterns.com/) **: coleção de código aberto de padrões de arquitetura de tecnologia sem servidor da AWS, criada para o AWS CDK por especialistas da AWS.
+  ** [Exemplos de código do AWS CDK](https://github.com/aws-samples/aws-cdk-examples) **: repositório do GitHub de projetos de exemplo do AWS.
+  ** [cdk.dev](https://cdk.dev/) **: hub orientado pela comunidade para o AWS CDK, incluindo um espaço de trabalho comunitário Slack.
+  ** [Awesome CDK](https://github.com/kalaiser/awesome-cdk) **: repositório do GitHub contendo uma lista selecionada de projetos, guias, blogs e outros recursos de código aberto do AWS CDK.
+  ** [Constructos de soluções da AWS](https://aws.amazon.com/solutions/constructs/) **: padrões aprovados de configuração de infraestrutura como código (IaC) que podem ser facilmente montados em aplicações prontos para produção.
+  ** [Blog de ferramentas para desenvolvedores da AWS](https://aws.amazon.com/blogs/developer/category/developer-tools/aws-cloud-development-kit/) **: postagens de blog filtradas para o AWS CDK.
+  ** [AWS CDK no Stack Overflow](https://stackoverflow.com/questions/tagged/aws-cdk) ** perguntas marcadas com a tag **aws-cdk** no Stack Overflow.
+  ** [Tutorial do CDK da AWS para o AWS Cloud9](https://docs.aws.amazon.com/cloud9/latest/user-guide/sample-cdk.html) **: tutorial sobre como usar o AWS CDK com o ambiente de desenvolvimento AWS Cloud9.

Para saber mais tópicos relacionados ao AWS CDK, consulte o seguinte:
+  ** [Conceitos do AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-whatis-concepts.html) **: 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](https://docs.aws.amazon.com/general/latest/gr/glos-chap.html) **: 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:
+  ** [Modelo de aplicação com tecnologia sem servidor da AWS](https://aws.amazon.com/serverless/sam/) **: uma ferramenta de desenvolvedor de código aberto que simplifica e melhora a experiência de compilar e executar aplicações de tecnologia sem servidor na AWS.
+  ** [AWS Chalice](https://github.com/aws/chalice) **: uma estrutura para escrever aplicações de tecnologia sem servidor no Python.