Tutorial do AWS CDK para o AWS Cloud9 - AWS Cloud9

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, a Definição de preço do Amazon SNS e a Definição de preço do Amazon SQS.

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.

  1. Gerenciador de versão do Node ou nvm que você usa para instalar o Node.js posteriormente.

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

  3. TypeScript, que é exigido por esse exemplo. (O AWS CDK também oferece suporte a várias outras linguagens de programação.)

  4. O AWS CDK.

Etapa 1.1: Instale o Gerenciador de versão do Node (nvm)

  1. 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 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
  2. 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.

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

    curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.0/install.sh | bash
  4. 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

  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 o TypeScript.

  2. Instale o Node.js 16 executando o comando nvm com a ação install .

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

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

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

  2. Instale o TypeScript. Para fazer isso, execute o comando npm com a ação install , 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
  3. 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

  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 versão do AWS CDK e os números de revisão. Avance para Etapa 2: Adicionar código.

  2. Instale o AWS CDK executando o comando npm junto com a ação install, 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
  3. 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.

  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.
  2. Configure o diretório como um projeto de linguagem TypeScript para o AWS CDK. 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 para sua pilha do AWS CDK. 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 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 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 arquivo README.md, que lista os comandos úteis que você pode executar com o npm e com o AWS CDK.

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

  3. 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, e Topic 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.

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

  5. Use npm para executar o compilador do TypeScript para verificar se há erros de codificação e habilitar o AWS CDK para executar o arquivo bin/hello-cdk.js do 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 compilador TypeScript, que adiciona suporte aos arquivos lib/hello-cdk-stack.d.ts e bin/hello-cdk.d.ts. 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

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.

  1. 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ção synth 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.

  2. 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 de bootstrap .

    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
  3. 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çã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 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.

  4. 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 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, 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 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

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.