O 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
Tutorial do AWS CDK para o AWS Cloud9
Este exemplo mostra como trabalhar com o AWS Cloud Development Kit (AWS CDK) em um ambiente de desenvolvimento do AWS Cloud9. O AWS CDK é um conjunto de ferramentas de software e bibliotecas que os desenvolvedores podem usar para modelar os componentes da infraestrutura da AWS como código.
O AWS CDK inclui a Biblioteca de construções da AWS que pode ser usada para resolver rapidamente muitas tarefas na 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.
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
Tópicos
Pré-requisitos
Antes de usar esse exemplo, verifique se suas configurações cumprem os requisitos a seguir.
-
É necessário ter um ambiente existente de desenvolvimento do AWS Cloud9 EC2 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 ter mais informações, consulte Criar um ambiente no AWS Cloud9.
-
Você tem o IDE do AWS Cloud9 para o ambiente existente já aberto. Ao abrir um ambiente o AWS Cloud9 abre o IDE para esse ambiente em um navegador da web. Para ter mais informações, consulte Abrir um ambiente no AWS Cloud9.
Etapa 1: Instalar as ferramentas necessárias
Nesta etapa, você instalará todas as ferramentas que o AWS CDK precisa no ambiente para executar um exemplo escrito na linguagem de programação TypeScript.
-
Gerenciador de versão do Node ou
nvm
que você usa para instalar o Node.js posteriormente. -
Node.js, que é exigido pelo exemplo e contém o Node Package Manager, ou
npm
, que você usa para instalar o TypeScript e o AWS CDK posteriormente. -
TypeScript, que é exigido por esse exemplo. (O AWS CDK também oferece suporte a várias outras linguagens de programação.)
-
O AWS CDK.
Etapa 1.1: Instale o Gerenciador de versão do Node (nvm)
-
Em uma sessão de terminal no IDE do AWS Cloud9, certifique-se de que as últimas atualizações de segurança e correções de bugs estejam instaladas. Para fazer isso, execute o comando
yum update
para Amazon Linux ouapt 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
-
Confirme se o
nvm
já está instalado. Para fazer isso, execute o comandonvm
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. -
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 donvm
aqui. curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.0/install.sh | bash
-
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 onvm
.. ~/.bashrc
Etapa 1.2: Instalar o Node.js
-
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 o TypeScript.
-
Instale o Node.js 16 executando o comando
nvm
com a açãoinstall
.nota
Também é possível executar
nvm install node
para instalar a versão de suporte a longo prazo (LTS) do Node.js. O suporte ao AWS Cloud9 rastreia a versão de LTS do Node.js.nvm install v16
-
Comece a usar o Node.js 16. Para fazer isso, execute o comando
nvm
com a açãoalias
, 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çãouse
, em vez da açãoalias
(por exemplo,nvm use 16.17.0
). No entanto, a açãouse
faz com que essa versão do Node.js execute apenas durante a execução da sessão de terminal atual. -
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 o TypeScript
-
Confirme se você já tem o TypeScript instalado. Para fazer isso, com a sessão de terminal ainda aberta no IDE, execute a linha de comando do compilador do TypeScript com a opção
--version
.tsc --version
Se já tem o TypeScript instalado, a saída contém o número da versão do TypeScript. Se o TypeScript estiver instalado, avance para Etapa 1.4: Instalar o AWS CDK.
-
Instale o TypeScript. Para fazer isso, execute o comando
npm
com a açãoinstall
, a opção-g
, e o nome do pacote do TypeScript. Isso instala o TypeScript como um pacote global no ambiente.npm install -g typescript
-
Confirme se o TypeScript está instalado. Para fazer isso, execute a linha de comando do compilador do Typescript com a opção
--version
.tsc --version
Se o TypeScript já estiver instalado, a saída conterá o número da versão do TypeScript.
Etapa 1.4: Instalar o AWS CDK
-
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 versão do AWS CDK e os números de revisão. Avance para Etapa 2: Adicionar código.
-
Instale o AWS CDK executando o comando
npm
junto com a açãoinstall
, o nome do pacote do AWS CDK a ser instalado e a opção-g
para instalar o pacote globalmente no ambiente.npm install -g aws-cdk
-
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, a versão e os números de revisão do AWS CDK serão exibidos.
Etapa 2: Adicionar código
Nesta etapa, você cria um projeto TypeScript de exemplo que contém todo o código-fonte necessário para que o AWS CDK implante uma pilha do AWS CloudFormation de forma programática. Essa pilha cria um tópico do Amazon SNS e uma fila do Amazon SQS em sua conta da AWS e se inscreve a fila no tópico.
-
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.
-
Configure o diretório como um projeto de linguagem TypeScript para o AWS CDK. Para fazer isso, execute o comando
cdk
com a açãoinit
, o modelosample-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 arquivohello-cdk-stack.ts
. Esse arquivo contém o código para sua pilha do AWS CDK. Esse código é descrito na próxima etapa neste procedimento. -
Um subdiretório
bin
, que inclui um arquivohello-cdk.ts
. Esse arquivo contém o ponto de entrada para seu aplicativo do AWS CDK. -
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 onpm
não precisa quando cria o código. -
Um arquivo
cdk.json
, que contém informações para facilitar a execução do comandocdk
. -
Um arquivo
package-lock.json
, que contém informações que onpm
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 comandonpm
e possivelmente diminuir os erros de compilação e execução. -
Um arquivo
README.md
, que lista os comandos úteis que você pode executar com onpm
e com o AWS CDK. -
Um arquivo
tsconfig.json
, que contém informações para facilitar a execução do comandotsc
e possivelmente diminuir os erros de compilação e execução.
-
-
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 classes
Stack
,App
,StackProps
,Queue
, eTopic
representam uma pilha do AWS CloudFormation e suas propriedades, um programa executável, uma fila do Amazon SQS e um tópico do Amazon SNS, respectivamente. -
A classe
HelloCdkStack
representa a pilha AWS CloudFormation para este aplicativo. Essa pilha contém a nova fila do Amazon SQS e o tópico do Amazon SNS para esta aplicação.
-
-
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 arquivolib/hello-cdk-stack.ts
. -
Use
npm
para executar o compilador do TypeScript para verificar se há erros de codificação e habilitar o AWS CDK para executar o arquivobin/hello-cdk.js
do projeto. Para fazer isso, no diretório raiz do projeto, execute o comandonpm
com a açãorun
, especificando o valor do comandobuild
no arquivopackage.json
, conforme mostrado a seguir.npm run build
O comando anterior executa o compilador TypeScript, que adiciona suporte aos arquivos
lib/hello-cdk-stack.d.ts
ebin/hello-cdk.d.ts
. O compilador também desmembra os arquivoshello-cdk.ts
ehello-cdk-stack.ts
nos arquivoshello-cdk.js
ehello-cdk-stack.js
.
Etapa 3: Executar o código
Nesta etapa, você instrui o AWS CDK a criar um modelo de pilha do AWS CloudFormation com base no código no arquivo bin/hello-cdk.js
. Depois, você instrui o AWS CDK a implantar a pilha, o que cria o tópico do Amazon SNS e a fila do Amazon SQS, e então atribui a fila ao tópico. Depois, confirme se o tópico e a fila foram implantados com êxito, enviando uma mensagem do tópico para a fila.
-
Faça com que o AWS CDK crie o modelo de pilha do AWS CloudFormation. 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çãosynth
e o nome da pilha.cdk synth HelloCdkStack
Se for bem-sucedido, a saída exibirá a seção
Resources
do modelo de pilha do AWS CloudFormation. -
Na primeira vez que implantar um aplicativo um AWS CDK em um ambiente para uma combinação específica de conta da AWS e Região da AWS, é necessário instalar uma pilha de bootstrap. Essa pilha inclui vários recursos necessários para o AWS CDK concluir suas várias operações. Por exemplo, essa pilha inclui um bucket do Amazon S3 que o AWS CDK usa para armazenar modelos e ativos durante os processos de implantação. Para instalar a pilha de bootstrap, execute o comando
cdk
com a ação debootstrap
.cdk bootstrap
nota
Se você executar o
cdk bootstrap
sem especificar nenhuma opção, o padrão da conta da AWS e a região da AWS serão usados. Você também pode fazer o bootstrap de um determinado ambiente, especificando um perfil e uma combinação de conta e região. Por exemplo:cdk bootstrap --profile test 123456789012/us-east-1
-
Faça com que o AWS CDK execute o modelo de pilha do AWS CloudFormation para implantar a pilha. Para fazer isso, no diretório raiz do projeto, execute o comando
cdk
com a açãodeploy
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 as credenciais da AWS não puderam ser obtidas nos locais padrão, ou que nenhuma região foi configurada, verifique se as credenciais da AWS estão definidas corretamente no IDE e execute o comando
cdk deploy
novamente. Para ter mais informações, consulte Chamar Serviços da AWS em um ambiente no AWS Cloud9. -
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 a AWS Command Line Interface (AWS CLI) ou o AWS CloudShell. Para mais informações sobre essas ferramentas, consulte AWS CLI e tutorial aws-shell para o AWS Cloud9.
Por exemplo, para enviar uma mensagem ao tópico, com a sessão de terminal ainda aberta no IDE, use a AWS CLI para executar o comando
publish
do Amazon SNS, fornecendo o assunto e o corpo da mensagem, a região da AWS para o tópico e o nome do 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, substitua
arn:aws:sns:us-east-2:123456789012:HelloCdkStack-HelloCdkTopic1A234567-8BCD9EFGHIJ0K
pelo ARN que o AWS CloudFormation atribui ao tópico. Para obter o ID, você pode executar o comandolist-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 valorMessageId
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, substitua
https://queue.amazonaws.com/123456789012/HelloCdkStack-HelloCdkQueue1A234567-8BCD9EFGHIJ0K
pelo ARN que o AWS CloudFormation atribui à fila. Para obter o URL, você pode executar o comandolist-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
Para evitar cobranças contínuas em sua conta da AWS ao terminar de usar este exemplo, exclua a pilha do AWS CloudFormation. 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
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
Para excluir o ambiente, consulte Excluir um ambiente no AWS Cloud9.