

 AWS Cloud9 não está mais disponível para novos clientes. Os clientes atuais do AWS Cloud9 podem continuar usando o serviço normalmente. [Saiba mais](https://aws.amazon.com/blogs/devops/how-to-migrate-from-aws-cloud9-to-aws-ide-toolkits-or-aws-cloudshell/)

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

# AWS CDK tutorial para AWS Cloud9
<a name="sample-cdk"></a>

Este tutorial mostra como trabalhar com o AWS Cloud Development Kit (AWS CDK) em um ambiente de AWS Cloud9 desenvolvimento. AWS CDK É um conjunto de ferramentas e bibliotecas de software que os desenvolvedores podem usar para modelar componentes de AWS infraestrutura como código.

 AWS CDK Isso inclui a AWS Construct Library, que você pode usar para resolver rapidamente muitas tarefas AWS. Por exemplo, é possível usar o constructo `Fleet` para implantar totalmente e de forma segura o código em uma frota de hosts. Você pode criar seus próprios constructos para modelar vários elementos de suas arquiteturas, compartilhá-los com outras pessoas ou publicá-los na comunidade. Para obter mais informações, consulte o [Guia do usuário do Kit de Desenvolvimento da Nuvem AWS](https://docs.aws.amazon.com/cdk/v2/guide/home.html).

Seguir este tutorial e criar este exemplo pode gerar cobranças em sua conta da AWS . Isso inclui possíveis cobranças por serviços como o Amazon EC2, Amazon SNS e Amazon SQS. Para obter mais informações, consulte a [Definição de preço do Amazon EC2](https://aws.amazon.com/ec2/pricing/), a [Definição de preço do Amazon SNS](https://aws.amazon.com/sns/pricing/) e a [Definição de preço do Amazon SQS](https://aws.amazon.com/sqs/pricing/).

**Topics**
+ [Pré-requisitos](#sample-cdk-prereqs)
+ [Etapa 1: Instalar as ferramentas necessárias](#sample-cdk-install)
+ [Etapa 2: Adicionar código](#sample-cdk-code)
+ [Etapa 3: Executar o código](#sample-cdk-run)
+ [Etapa 4: limpar](#sample-cdk-clean-up)

## Pré-requisitos
<a name="sample-cdk-prereqs"></a>

Antes de usar esse exemplo, verifique se suas configurações cumprem os requisitos a seguir.
+ **Você deve ter um ambiente de desenvolvimento AWS Cloud9 EC2 existente.** Este exemplo pressupõe que você já tem um ambiente do EC2 conectado a uma instância do Amazon EC2 que executa Amazon Linux ou Ubuntu Server. Caso tenha um tipo diferente de ambiente ou sistema operacional, poderá ser necessário adaptar as instruções desse exemplo para configurar ferramentas relacionadas. Para obter mais informações, consulte [Criando um ambiente em AWS Cloud9](create-environment.md).
+ **Você tem o AWS Cloud9 IDE para o ambiente existente já aberto.** Quando você abre um ambiente, AWS Cloud9 abre o IDE desse ambiente em seu navegador da web. Para obter mais informações, consulte [Abrindo um ambiente em AWS Cloud9](open-environment.md).

## Etapa 1: Instalar as ferramentas necessárias
<a name="sample-cdk-install"></a>

Nesta etapa, você instala todas as ferramentas necessárias em seu ambiente para executar uma amostra escrita na linguagem de TypeScript programação. AWS CDK 

1.  [Gerenciador de versão do Node](#sample-cdk-install-nvm) ou ** `nvm` ** que você usa para instalar o Node.js posteriormente.

1.  [Node.js](#sample-cdk-install-nodejs), que é exigido pela amostra e contém o Node Package Manager **`npm`**, ou, que você usa para instalar TypeScript e o AWS CDK posterior.

1.  [TypeScript](#sample-cdk-install-typescript), o que é exigido por esta amostra. ( AWS CDK Também fornece suporte para várias outras linguagens de programação.)

1. O [AWS CDK](#sample-cdk-install-cdk).

### Etapa 1.1: Instale o Gerenciador de versão do Node (nvm)
<a name="sample-cdk-install-nvm"></a>

1. Em uma sessão de terminal no AWS Cloud9 IDE, certifique-se de que as atualizações de segurança e correções de erros mais recentes estejam instaladas. Para fazer isso, execute o comando ** `yum update` ** para Amazon Linux ou ** `apt update` ** para Ubuntu Server. (Para iniciar uma nova sessão de terminal, na barra de menus, selecione **Janela**, **Novo terminal**.)

   Para Amazon Linux:

   ```
   sudo yum -y update
   ```

   Para Ubuntu Server:

   ```
   sudo apt update
   ```

1. Confirme se o ** `nvm` ** já está instalado. Para fazer isso, execute o comando ** `nvm` ** com a opção ** `--version` **.

   ```
   nvm --version
   ```

   Se for bem-sucedido, a saída conterá o número da versão do ** `nvm` **, e você poderá ir direto para [Etapa 1.2: Instalar o Node.js](#sample-cdk-install-nodejs).

1. Faça download e instale ** `nvm` **. Para fazer isso, execute o script de instalação. Neste exemplo, a versão v0.33.0 é instalada, mas é possível verificar a versão mais recente do ** `nvm` ** [aqui](https://github.com/nvm-sh/nvm#installing-and-updating).

   ```
   curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.0/install.sh | bash
   ```

1. Comece a utilizar ** `nvm` **. Você pode fechar a sessão de terminal e depois iniciá-la novamente ou extrair o arquivo `~/.bashrc` que contém os comandos para carregar o ** `nvm` **.

   ```
   . ~/.bashrc
   ```

### Etapa 1.2: Instalar o Node.js
<a name="sample-cdk-install-nodejs"></a>

1. Confirme se você já tem o Node.js instalado e, se tiver, confirme se a versão instalada é a 16.17.0 ou posterior. **Este exemplo foi testado no Node.js 16.17.0.** Para verificar, com a sessão de terminal ainda aberta no IDE, execute o comando ** `node` ** com a opção ** `--version` **.

   ```
   node --version
   ```

   Se já tem o Node.js instalado, a saída contém o número da versão. Se o número da versão for v16.17.0, avance para [Etapa 1.3: Instalar TypeScript](#sample-cdk-install-typescript).

1. Instale o Node.js 16 executando o comando ** `nvm` ** com a ação ** `install` **.
**nota**  
Você também pode executar **`nvm install node`**para instalar a versão de suporte de longo prazo (LTS) do Node.js. AWS Cloud9 o suporte rastreia a versão LTS do Node.js. 

   ```
   nvm install v16
   ```

1. Comece a usar o Node.js 16. Para fazer isso, execute o comando ** `nvm` ** com a ação ** `alias` **, o número da versão para alias e a versão a ser usada para esse alias, como mostrado a seguir.

   ```
   nvm alias default 16
   ```
**nota**  
O comando anterior define o Node.js 16 como a versão padrão do Node.js. Como alternativa, é possível executar o comando ** `nvm` ** juntamente com a ação ** `use` **, em vez da ação ** `alias` ** (por exemplo, ** `nvm use 16.17.0` **). No entanto, a ação ** `use` ** faz com que essa versão do Node.js execute apenas durante a execução da sessão de terminal atual.

1. Para confirmar se está usando o Node.js 16, execute o comando ** `node --version` ** novamente. Se a versão correta estiver instalada, a saída conterá a versão v16.

### Etapa 1.3: Instalar TypeScript
<a name="sample-cdk-install-typescript"></a>

1. Confirme se você já TypeScript instalou. Para fazer isso, com a sessão do terminal ainda aberta no IDE, execute o TypeScript compilador da linha de comando com a **`--version`**opção.

   ```
   tsc --version
   ```

   Se você tiver TypeScript instalado, a saída conterá o número da TypeScript versão. Se TypeScript estiver instalado, vá para[Etapa 1.4: Instalar o AWS CDK](#sample-cdk-install-cdk).

1. Instalar TypeScript. Para fazer isso, execute o **`npm`**comando com a **`install`**ação, a **`-g`**opção e o nome do TypeScript pacote. Isso é instalado TypeScript como um pacote global no ambiente.

   ```
   npm install -g typescript
   ```

1. Confirme se TypeScript está instalado. Para fazer isso, execute o TypeScript compilador de linha de comando com a **`--version`**opção.

   ```
   tsc --version
   ```

   Se TypeScript estiver instalado, a saída conterá o número da TypeScript versão.

### Etapa 1.4: Instalar o AWS CDK
<a name="sample-cdk-install-cdk"></a>

1. Confirme se você já tem o AWS CDK instalado. Para fazer isso, com a sessão de terminal ainda aberta no IDE, execute o comando ** `cdk` ** com a opção ** `--version` **.

   ```
   cdk --version
   ```

   Se o AWS CDK estiver instalado, a saída conterá a AWS CDK versão e os números de compilação. Avance para [Etapa 2: Adicionar código](#sample-cdk-code).

1. Instale o AWS CDK executando o **`npm`**comando junto com a `install` ação, o nome do AWS CDK pacote a ser instalado e a `-g` opção de instalar o pacote globalmente no ambiente.

   ```
   npm install -g aws-cdk
   ```

1. Confirme se o AWS CDK está instalado e referenciado corretamente. Para fazer isso, execute o comando ** `cdk` ** com a opção ** `--version` **.

   ```
   cdk --version
   ```

   Se for bem-sucedido, os números da AWS CDK versão e da versão serão exibidos.

## Etapa 2: Adicionar código
<a name="sample-cdk-code"></a>

Nesta etapa, você cria um TypeScript projeto de amostra que contém todo o código-fonte necessário para AWS CDK implantar programaticamente uma AWS CloudFormation pilha. Essa pilha cria um tópico do Amazon SNS e uma fila do Amazon SQS em AWS sua conta e, em seguida, inscreve a fila no tópico.

1. Com a sessão de terminal ainda aberta no IDE, crie um diretório para armazenar o código-fonte do projeto, por exemplo, um diretório `~/environment/hello-cdk` no seu ambiente. Depois, mude para esse diretório.

   ```
   rm -rf ~/environment/hello-cdk # Remove this directory if it already exists.
   mkdir ~/environment/hello-cdk  # Create the directory.
   cd ~/environment/hello-cdk     # Switch to the directory.
   ```

1. Configure o diretório como um projeto de TypeScript linguagem para AWS CDK o. Para fazer isso, execute o comando ** `cdk` ** com a ação ** `init` **, o modelo ** `sample-app` ** e a opção ** `--language` ** com o nome da linguagem de programação.

   ```
   cdk init sample-app --language typescript
   ```

   Isso cria os seguintes arquivos e subdiretórios no diretório:
   + Um subdiretório `.git` oculto e um arquivo `.gitignore` oculto, que torna o projeto compatível com ferramentas de controle de fonte como o Git.
   + Um subdiretório `lib`, que inclui um arquivo `hello-cdk-stack.ts`. Esse arquivo contém o código da sua AWS CDK pilha. Esse código é descrito na próxima etapa neste procedimento.
   + Um subdiretório `bin`, que inclui um arquivo `hello-cdk.ts`. Esse arquivo contém o ponto de entrada do seu AWS CDK aplicativo.
   + Um subdiretório `node_modules`, que contém pacotes de código de suporte que o aplicativo e a pilha podem usar conforme necessário.
   + Um arquivo `.npmignore` oculto, que lista os tipos de subdiretórios e arquivos que o ** `npm` ** não precisa quando cria o código.
   + Um arquivo `cdk.json`, que contém informações para facilitar a execução do comando ** `cdk` **.
   + Um arquivo `package-lock.json`, que contém informações que o ** `npm` ** pode usar para reduzir possíveis erros de compilação e execução.
   + Um arquivo `package.json`, que contém informações para facilitar a execução do comando ** `npm` ** e possivelmente diminuir os erros de compilação e execução.
   + Um `README.md` arquivo, que lista comandos úteis com os quais você pode executar **`npm`**e AWS CDK o.
   + Um arquivo `tsconfig.json`, que contém informações para facilitar a execução do comando ** `tsc` ** e possivelmente diminuir os erros de compilação e execução.

1. Na janela **Ambiente**, abra o arquivo `lib/hello-cdk-stack.ts` e procure o código a seguir.

   ```
   import sns = require('@aws-cdk/aws-sns');
   import sqs = require('@aws-cdk/aws-sqs');
   import cdk = require('@aws-cdk/cdk');
   
   export class HelloCdkStack extends cdk.Stack {
     constructor(parent: cdk.App, name: string, props?: cdk.StackProps) {
       super(parent, name, props);
   
       const queue = new sqs.Queue(this, 'HelloCdkQueue', {
         visibilityTimeoutSec: 300
       });
   
       const topic = new sns.Topic(this, 'HelloCdkTopic');
   
       topic.subscribeQueue(queue);
     }
   }
   ```
   + As `Topic` classes `Stack``App`,`StackProps`,`Queue`, e representam uma CloudFormation pilha e suas propriedades, um programa executável, uma fila do Amazon SQS e um tópico do Amazon SNS, respectivamente.
   + A `HelloCdkStack` classe representa a CloudFormation pilha desse aplicativo. Essa pilha contém a nova fila do Amazon SQS e o tópico do Amazon SNS para esta aplicação.

1. Na janela **Ambiente**, abra o arquivo `bin/hello-cdk.ts` e procure o código a seguir.

   ```
   #!/usr/bin/env node
   import cdk = require('@aws-cdk/cdk');
   import { HelloCdkStack } from '../lib/hello-cdk-stack';
   
   const app = new cdk.App();
   new HelloCdkStack(app, 'HelloCdkStack');
   app.run();
   ```

   Esse código carrega, cria uma instância e executa a classe `HelloCdkStack` do arquivo `lib/hello-cdk-stack.ts`.

1. Use **`npm`**para executar o TypeScript compilador para verificar se há erros de codificação e, em seguida, habilite o AWS CDK para executar o arquivo do `bin/hello-cdk.js` projeto. Para fazer isso, no diretório raiz do projeto, execute o comando ** `npm` ** com a ação ** `run` **, especificando o valor do comando ** `build` ** no arquivo `package.json`, conforme mostrado a seguir.

   ```
   npm run build
   ```

   O comando anterior executa o TypeScript compilador, que adiciona suporte `bin/hello-cdk.d.ts` e `lib/hello-cdk-stack.d.ts` arquivos. O compilador também desmembra os arquivos `hello-cdk.ts` e `hello-cdk-stack.ts` nos arquivos `hello-cdk.js` e `hello-cdk-stack.js`.

## Etapa 3: Executar o código
<a name="sample-cdk-run"></a>

Nesta etapa, você instrui o a AWS CDK criar um modelo de CloudFormation pilha com base no código no `bin/hello-cdk.js` arquivo. Em seguida, você instrui o AWS CDK a implantar a pilha, que cria o tópico do Amazon SNS e a fila do Amazon SQS e, em seguida, inscreve a fila no tópico. Depois, confirme se o tópico e a fila foram implantados com êxito, enviando uma mensagem do tópico para a fila.

1. Peça AWS CDK para criar o modelo CloudFormation de pilha. Para fazer isso, com a sessão de terminal ainda aberta no IDE, no diretório raiz do projeto, execute o comando ** `cdk` ** com a ação ** `synth` ** e o nome da pilha.

   ```
   cdk synth HelloCdkStack
   ```

   Se for bem-sucedida, a saída exibirá a `Resources` seção do modelo de CloudFormation pilha.

1. Na primeira vez que você implanta um AWS CDK aplicativo em um ambiente para uma combinação específica de AWS conta e AWS região, você deve instalar uma *pilha de bootstrap*. Essa pilha inclui vários recursos AWS CDK necessários para concluir suas várias operações. Por exemplo, essa pilha inclui um bucket Amazon S3 que é AWS CDK usado para armazenar modelos e ativos durante seus processos de implantação. Para instalar a pilha de bootstrap, execute o comando ** `cdk` ** com a ação de ** `bootstrap` **.

   ```
   cdk bootstrap
   ```
**nota**  
Se você executar `cdk bootstrap` sem especificar nenhuma opção, a AWS conta e a AWS região padrão serão usadas. Você também pode inicializar um ambiente específico especificando um perfil e account/Region uma combinação. Por exemplo:  

   ```
   cdk bootstrap --profile test 123456789012/us-east-1
   ```

1. Faça com que AWS CDK execute o modelo de CloudFormation pilha para implantar a pilha. Para fazer isso, no diretório raiz do projeto, execute o comando ** `cdk` ** com a ação ** `deploy` ** e o nome da pilha.

   ```
   cdk deploy HelloCdkStack
   ```

   Se for bem-sucedido, a saída exibe que a pilha `HelloCdkStack` foi implantada sem erros.
**nota**  
Se a saída exibir uma mensagem informando que a pilha não define um ambiente e que AWS as credenciais não puderam ser obtidas em locais padrão ou que nenhuma região foi configurada, verifique se suas AWS credenciais estão definidas corretamente no IDE e execute o **`cdk deploy`**comando novamente. Para obter mais informações, consulte [Chamando Serviços da AWS de um ambiente em AWS Cloud9](credentials.md).

1. Para confirmar se o tópico do Amazon SNS e a fila do Amazon SQS foram implantados com êxito, envie uma mensagem ao tópico e consulte a fila para verificar se a mensagem foi recebida. Para fazer isso, você pode usar uma ferramenta como o AWS Command Line Interface (AWS CLI) ou AWS CloudShell o. Para mais informações sobre essas ferramentas, consulte [AWS CLI e tutorial aws-shell para AWS Cloud9](sample-aws-cli.md).

   Por exemplo, para enviar uma mensagem para o tópico, com a sessão do terminal ainda aberta no IDE, use o AWS CLI para executar o **`publish`**comando Amazon SNS, fornecendo o assunto e o corpo da mensagem, a AWS região do tópico e o nome de recurso da Amazon (ARN) do tópico.

   ```
   aws sns publish --subject "Hello from the AWS CDK" --message "This is a message from the AWS CDK." --topic-arn arn:aws:sns:us-east-2:123456789012:HelloCdkStack-HelloCdkTopic1A234567-8BCD9EFGHIJ0K
   ```

   No comando anterior, `arn:aws:sns:us-east-2:123456789012:HelloCdkStack-HelloCdkTopic1A234567-8BCD9EFGHIJ0K` substitua pelo ARN atribuído CloudFormation ao tópico. Para obter o ID, você pode executar o comando ** `list-topics` ** do Amazon SNS.

   ```
   aws sns list-topics --output table --query 'Topics[*].TopicArn'
   ```

   Se for bem-sucedido, a saída do comando ** `publish` ** exibe o valor `MessageId` para a mensagem que foi publicada.

   Para verificar se a fila recebeu a mensagem, execute o comando ** `receive-message` ** do Amazon SQS, fornecendo o URL da fila.

   ```
   aws sqs receive-message --queue-url https://queue.amazonaws.com/123456789012/HelloCdkStack-HelloCdkQueue1A234567-8BCD9EFGHIJ0K
   ```

   No comando anterior, `https://queue.amazonaws.com/123456789012/HelloCdkStack-HelloCdkQueue1A234567-8BCD9EFGHIJ0K` substitua pelo ARN atribuído CloudFormation à fila. Para obter o URL, você pode executar o comando ** `list-queues` ** do Amazon SQS.

   ```
   aws sqs list-queues --output table --query 'QueueUrls[*]'
   ```

   Se for bem-sucedido, a saída do comando ** `receive-message` ** exibe as informações sobre a mensagem que foi recebida.

## Etapa 4: limpar
<a name="sample-cdk-clean-up"></a>

Para evitar cobranças contínuas em sua AWS conta depois de terminar de usar essa amostra, você deve excluir a CloudFormation pilha. Isso exclui o tópico do Amazon SNS e a fila do Amazon SQS. Exclua também o ambiente.

### Etapa 4.1: Excluir a pilha
<a name="step-4-1-delete-the-stack"></a>

Com a sessão de terminal ainda aberta no IDE, no diretório raiz do projeto, execute o comando ** `cdk` ** com a ação ** `destroy` ** e o nome da pilha.

```
cdk destroy HelloCdkStack
```

Quando solicitado a excluir a pilha, digite `y` e depois pressione `Enter`.

Se for bem-sucedido, a saída exibe que a pilha `HelloCdkStack` foi excluída sem erros.

### Etapa 4.2: Excluir o ambiente
<a name="step-4-2-delete-the-envtitle"></a>

Para excluir o ambiente, consulte [Excluindo um ambiente no AWS Cloud9](delete-environment.md).