

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á.

# Infraestrutura como código
<a name="infrastructure-as-code"></a>

 Um princípio fundamental DevOps é tratar a infraestrutura da mesma forma que os desenvolvedores tratam o código. O código do aplicativo tem um formato e uma sintaxe definidos. Se o código não for escrito de acordo com as regras da linguagem de programação, os aplicativos não poderão ser criados. O código é armazenado em um sistema de gerenciamento de versões ou controle de código-fonte que registra um histórico de desenvolvimento de código, alterações e correções de erros. Quando o código é compilado ou incorporado aos aplicativos, esperamos que um aplicativo consistente seja criado e que a compilação seja repetível e confiável. 

 Praticar a *infraestrutura como código* significa aplicar o mesmo rigor do desenvolvimento do código do aplicativo ao provisionamento da infraestrutura. Todas as configurações devem ser definidas de forma declarativa e armazenadas em um sistema de controle de origem [AWS CodeCommit](https://aws.amazon.com/codecommit), como, por exemplo, o código do aplicativo. O provisionamento, a orquestração e a implantação da infraestrutura também devem apoiar o uso da infraestrutura como código. 

A infraestrutura era tradicionalmente provisionada usando uma combinação de scripts e processos manuais. Às vezes, esses scripts eram armazenados em sistemas de controle de versão ou documentados passo a passo em arquivos de texto ou livros de execução. Freqüentemente, a pessoa que escreve os livros de execução não é a mesma que executa esses scripts ou segue os livros de execução. Se esses scripts ou runbooks não forem atualizados com frequência, eles podem se tornar um obstáculo nas implantações. Isso resulta na criação de novos ambientes que nem sempre são repetíveis, confiáveis ou consistentes.

Em contraste, AWS fornece uma forma DevOps focada de criar e manter a infraestrutura. Semelhante à forma como os desenvolvedores de software escrevem o código do aplicativo, AWS fornece serviços que permitem a criação, implantação e manutenção da infraestrutura de forma programática, descritiva e declarativa. Esses serviços oferecem rigor, clareza e confiabilidade. Os AWS serviços discutidos neste paper são fundamentais para uma DevOps metodologia e formam a base de vários princípios e práticas de alto nível AWS DevOps .

AWS oferece os seguintes serviços para definir a infraestrutura como código.

**Topics**
+ [

# CloudFormation
](aws-cloudformation.md)
+ [

# AWS Serverless Application Model
](aws-serverless-application-model.md)
+ [

# AWS Cloud Development Kit (AWS CDK)
](aws-cdk.md)
+ [

# Kit de desenvolvimento de nuvem da AWS para Kubernetes
](aws-cdk-for-kubernetes.md)
+ [

# Kit de desenvolvimento de nuvem da AWS para Terraform
](aws-cdk-for-terraform.md)
+ [

# AWS API Cloud Control
](aws-cloud-control-api.md)

# CloudFormation
<a name="aws-cloudformation"></a>

AWS CloudFormation é um serviço que permite aos desenvolvedores criar AWS recursos de forma ordenada e previsível. Os recursos são escritos em arquivos de texto usando o formato JSON ou YAML. Os modelos exigem sintaxe e estrutura específicas que dependem dos tipos de recurso que estão sendo criados e gerenciados. Você cria seus recursos em JSON ou YAML com qualquer editor de código, por exemplo [AWS Cloud9](https://aws.amazon.com/cloud9/), os insere em um sistema de controle de versão e, em seguida, CloudFormation cria os serviços especificados de maneira segura e repetível. 

Um CloudFormation modelo é implantado no AWS ambiente como uma pilha. Você pode gerenciar pilhas por meio do Console de gerenciamento da AWS, AWS Command Line Interface, ou CloudFormation APIs. Se você precisar fazer alterações nos recursos em execução em uma pilha, atualize a pilha. Antes de fazer alterações nos recursos, você pode gerar um conjunto de alterações, que é o resumo das alterações propostas. Os conjuntos de alterações permitem que você veja como suas alterações podem afetar seus recursos em execução, especialmente para recursos essenciais, antes de implementá-las.

![\[Um diagrama que descreve a AWS CloudFormation criação de um ambiente inteiro (pilha) a partir de um modelo\]](http://docs.aws.amazon.com/pt_br/whitepapers/latest/introduction-devops-aws/images/figure-1.png)


Você pode usar um único modelo para criar e atualizar um ambiente inteiro ou modelos separados para gerenciar várias camadas em um ambiente. Isso permite que os modelos sejam modularizados e também fornece uma camada de governança que é importante para muitas organizações.

Quando você cria ou atualiza uma pilha no CloudFormation console, os eventos são exibidos, mostrando o status da configuração. Se ocorrer um erro, por padrão, a pilha é revertida para seu estado anterior. O Amazon SNS fornece notificações sobre eventos. Por exemplo, você pode usar o Amazon SNS para acompanhar o progresso da criação e exclusão de pilhas usando e-mail e integrar-se programaticamente a outros processos.

AWS CloudFormation facilita a organização e a implantação de uma coleção de AWS recursos e permite que você descreva quaisquer dependências ou transmita parâmetros especiais quando a pilha é configurada.

Com CloudFormation modelos, você pode trabalhar com um amplo conjunto de AWS serviços, como Amazon S3, Auto Scaling, Amazon, Amazon DynamoDB, CloudFront Amazon EC2, ElastiCache Amazon, Elastic Load Balancing AWS Elastic Beanstalk, OpsWorks IAM, AWS e Amazon VPC. Para obter a lista mais recente de recursos compatíveis, consulte a [referência de tipos de AWS recursos e propriedades](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-template-resource-type-ref.html).

# AWS Serverless Application Model
<a name="aws-serverless-application-model"></a>

O [AWS Serverless Application Model](https://aws.amazon.com/serverless/sam/)(AWS SAM) é uma estrutura de código aberto que você pode usar para criar aplicativos [sem servidor](https://aws.amazon.com/serverless/). AWS

AWS SAM se integra a outros AWS serviços, portanto, a criação de aplicativos sem servidor AWS SAM oferece os seguintes benefícios:
+ **Configuração de implantação única** — AWS SAM facilita a organização de componentes e recursos relacionados e a operação em uma única pilha. Você pode usar AWS SAM para compartilhar configurações (como memória e tempos limite) entre recursos e implantar todos os recursos relacionados juntos como uma única entidade versionada.
+ **Extensão de CloudFormation** — Por ser AWS SAM uma extensão do CloudFormation, você obtém os recursos confiáveis de implantação do CloudFormation. Você pode definir recursos usando CloudFormation em seu AWS SAM modelo.
+ **Práticas recomendadas integradas** — você pode usar AWS SAM para definir e implantar seu IaC. Isso possibilita que você use e aplique as melhores práticas, como revisões de código. 

# AWS Cloud Development Kit (AWS CDK)
<a name="aws-cdk"></a>

[AWS Cloud Development Kit (AWS CDK)](https://aws.amazon.com/cdk)É uma estrutura de desenvolvimento de software de código aberto para modelar e provisionar seus recursos de aplicativos em nuvem usando linguagens de programação conhecidas. AWS CDK permite modelar a infraestrutura de aplicativos usando TypeScript Python, Java e.NET. Os desenvolvedores podem aproveitar seu Ambiente de Desenvolvimento Integrado (IDE) existente, usando ferramentas como preenchimento automático e documentação em linha para acelerar o desenvolvimento da infraestrutura. 

AWS CDK é utilizado CloudFormation em segundo plano para provisionar recursos de maneira segura e repetível. As construções são os blocos de construção básicos do código CDK. Uma construção representa um componente de nuvem e encapsula tudo o que é CloudFormation necessário para criar o componente. AWS CDK Isso inclui a [AWS Construct Library](https://docs.aws.amazon.com/cdk/latest/guide/constructs.html), contendo construções que representam muitos AWS serviços. Ao combinar construções, você pode criar de forma rápida e fácil arquiteturas complexas para implantação em. AWS

# Kit de desenvolvimento de nuvem da AWS para Kubernetes
<a name="aws-cdk-for-kubernetes"></a>

[O AWS Cloud Development Kit for Kubernetes](https://aws.amazon.com/blogs/containers/introducing-cdk-for-kubernetes) é uma estrutura de desenvolvimento de software de código aberto para definir aplicativos Kubernetes usando linguagens de programação de uso geral.

Depois de definir seu aplicativo em uma linguagem de programação (na data desta publicação, somente Python e TypeScript são compatíveis), cdk8s converterá a descrição do aplicativo em YAML pré-Kubernetes. Esse arquivo YAML pode então ser consumido por qualquer cluster Kubernetes em execução em qualquer lugar. Como a estrutura é definida em uma linguagem de programação, você pode usar os recursos avançados fornecidos pela linguagem de programação. Você pode usar o recurso de abstração da linguagem de programação para criar seu próprio código padronizado e reutilizá-lo em todas as implantações.

# Kit de desenvolvimento de nuvem da AWS para Terraform
<a name="aws-cdk-for-terraform"></a>

Construído com base na [biblioteca JSII](https://aws.github.io/jsii/) de código aberto, o [CDK for Terraform](https://developer.hashicorp.com/terraform/cdktf) (CDKTF) permite que você escreva configurações do Terraform em C\$1, Python TypeScript, Java ou Go de sua escolha e ainda se beneficie do ecossistema completo de provedores e módulos do Terraform. Você pode importar qualquer provedor ou módulo existente do Terraform Registry para seu aplicativo, e o CDKTF gerará classes de recursos com as quais você possa interagir na linguagem de programação de destino.

Com o CDKTF, os desenvolvedores podem configurar seu IaC sem mudar o contexto de sua linguagem de programação familiar, usando as mesmas ferramentas e sintaxe para provisionar recursos de infraestrutura semelhantes à lógica de negócios do aplicativo. As equipes podem colaborar em uma sintaxe familiar e, ao mesmo tempo, usar o poder do ecossistema Terraform e implantar suas configurações de infraestrutura por meio de pipelines de implantação estabelecidos do Terraform.

# AWS API Cloud Control
<a name="aws-cloud-control-api"></a>

 [AWS API Cloud Control](https://aws.amazon.com/cloudcontrolapi/)é um novo AWS recurso que introduz um conjunto comum de Criar, ler, atualizar, excluir e listar (CRUDL) APIs para ajudar os desenvolvedores a gerenciar sua infraestrutura de nuvem de forma fácil e consistente. A API Cloud Control comum APIs permite que os desenvolvedores gerenciem uniformemente o ciclo de vida da AWS e dos serviços de terceiros. 

 Como desenvolvedor, talvez você prefira simplificar a forma como gerencia o ciclo de vida de todos os seus recursos. Você pode usar o modelo uniforme de configuração de recursos da Cloud Control API com um formato predefinido para padronizar sua configuração de recursos na nuvem. Além disso, você se beneficiará do comportamento uniforme da API (elementos de resposta e erros) ao gerenciar seus recursos. 

 Por exemplo, você achará simples depurar erros durante operações CRUDL por meio de códigos de erro uniformes apresentados pela Cloud Control API que são independentes dos recursos em que você opera. Usando a Cloud Control API, você também achará simples configurar dependências entre recursos. Você também não precisará mais criar e manter código personalizado em ferramentas de vários fornecedores AWS e APIs usar recursos de terceiros juntos. 