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á.
Implemente aplicativos de várias pilhas usando o AWS CDK com TypeScript
Criado pelo Dr. Rahul Sharad Gaikwad (AWS)
Ambiente: produção | Tecnologias: Modernização; Migração; DevOps | Workload: todas as outras workloads |
Serviços da AWS: Amazon API Gateway; AWS Lambda; Amazon Kinesis |
Resumo
Esse padrão fornece uma step-by-step abordagem para implantação de aplicativos na Amazon Web Services (AWS) usando o AWS Cloud Development Kit (AWS CDK) com TypeScript. Como exemplo, o padrão implanta um aplicativo de análise em tempo real com tecnologia sem servidor.
O padrão cria e implanta aplicativos de pilha aninhados. A pilha principal da AWS chama a CloudFormation pilha secundária, ou aninhada, de pilhas. Cada pilha secundária cria e implanta os recursos da AWS que estão definidos na pilha. CloudFormation O AWS CDK Toolkit, o comando da interface de linha de comando (CLI)cdk
, é a interface principal das pilhas. CloudFormation
Pré-requisitos e limitações
Pré-requisitos
Uma conta AWS ativa
Nuvem privada virtual (VPC) e sub-redes existentes
AWS CDK Toolkit instalado e configurado
Um usuário com permissões de administrador e um conjunto de chaves de acesso.
Node.js
AWS Command Line Interface (AWS CLI)
Limitações
Como o AWS CDK usa a AWS CloudFormation, os aplicativos do AWS CDK estão sujeitos a cotas de CloudFormation serviço. Para obter mais informações, consulte as CloudFormation cotas da AWS.
Versões do produto
Esse padrão foi criado e testado usando as seguintes ferramentas e versões.
Kit de ferramentas do AWS CDK 1.83.0
Node.js 14.13.0
npm 7.0.14
O padrão deve funcionar com qualquer versão do AWS CDK ou npm. Observe que as versões 13.0.0 a 13.6.0 do Node.js não são compatíveis com o AWS CDK.
Arquitetura
Pilha de tecnologias de destino
AWS Amplify Console
Amazon API Gateway
AWS CDK
Amazon CloudFront
Amazon Cognito
Amazon DynamoDB
Amazon Data Firehose
Amazon Kinesis Data Streams
AWS Lambda
Amazon Simple Storage Service (Amazon S3)
Arquitetura de destino
O diagrama a seguir mostra a implantação de aplicativos em várias pilhas usando o AWS CDK com. TypeScript
![Arquitetura de pilha na VPC, com uma pilha principal e duas pilhas secundárias que contêm recursos.](images/pattern-img/0ac29a11-1362-4084-92ed-6b85205763ca/images/8f92e86a-aa3d-4f8a-9b11-b92c52a7226c.png)
O diagrama a seguir mostra a arquitetura do exemplo de aplicação em tempo real com tecnologia sem servidor.
![Arquitetura de aplicativos na região.](images/pattern-img/0ac29a11-1362-4084-92ed-6b85205763ca/images/2df00faf-f871-4aec-9655-19ba2eb14cf8.png)
Ferramentas
Ferramentas
O AWS Amplify Console é o centro de controle para implantações completas de aplicativos móveis e web na AWS. O host do Amplify Console fornece um fluxo de trabalho baseado em git para hospedar aplicativos web fullstack com tecnologia sem servidor com implantação contínua. A UI Admin é uma interface visual para desenvolvedores web e móveis frontend criarem e gerenciarem backends de aplicativos fora do console da AWS.
O Amazon API Gateway é um serviço da AWS para criar, publicar, manter, monitorar e proteger REST, HTTP e WebSocket APIs em qualquer escala.
O AWS Cloud Development Kit (AWS CDK) é uma estrutura de desenvolvimento de software que ajuda você a definir e provisionar a infraestrutura da Nuvem AWS em código.
O AWS CDK Toolkit é um kit de desenvolvimento em nuvem de linha de comando que ajuda você a interagir com seu aplicativo AWS CDK. O comando
cdk
CLI é a principal ferramenta para interagir com seu aplicativo AWS CDK. Ele executa seu aplicativo, interroga o modelo de aplicativo que você definiu e produz e implanta os CloudFormation modelos da AWS gerados pelo CDK da AWS.CloudFrontA Amazon é um serviço web que acelera a distribuição de conteúdo web estático e dinâmico, como arquivos.html, .css, .js e de imagem. CloudFront entrega seu conteúdo por meio de uma rede mundial de data centers chamados de pontos de presença para menor latência e melhor desempenho.
O Amazon Cognito fornece autenticação, autorização e gerenciamento de usuários para seus aplicativos Web e móveis. Seus usuários podem fazer login diretamente ou por meio de terceiros.
O Amazon DynamoDB é um serviço de banco de dados NoSQL totalmente gerenciado que fornece uma performance rápida e previsível com escalabilidade integrada.
O Amazon Data Firehose é um serviço totalmente gerenciado para fornecer dados de streaming
em tempo real para destinos como Amazon S3, Amazon Redshift, OpenSearch Amazon Service, Splunk e qualquer endpoint HTTP personalizado ou endpoints HTTP de propriedade de provedores de serviços terceirizados compatíveis. O Amazon Kinesis Data Streams é um serviço para coleta e processamento de grandes fluxos de registros de dados em tempo real.
O AWS Lambda é um serviço de computação que permite a execução do código sem provisionar ou gerenciar servidores O Lambda executa o código somente quando necessário e dimensiona automaticamente, desde algumas solicitações por dia até milhares por segundo. Você paga apenas pelo tempo de computação consumido. Não haverá cobranças quando o código não estiver em execução.
O Amazon Simple Storage Service (Amazon S3) é um serviço de armazenamento de objetos baseado na nuvem que ajuda você a armazenar, proteger e recuperar qualquer quantidade de dados.
Código
O código desse padrão está anexado.
Épicos
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Instale o AWS CDK Toolkit. | Para instalar o AWS CDK Toolkit globalmente, execute o comando a seguir.
| DevOps |
Verificar a versão. | Para verificar a versão do AWS CDK Toolkit, execute o comando a seguir.
| DevOps |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Configurar credenciais. | Para configurar as credenciais, execute o comando
| DevOps |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Baixe o código do projeto em anexo. | Para obter mais informações sobre a estrutura de diretórios e arquivos, consulte a seção Informações adicionais. | DevOps |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Faça o bootstrap do ambiente. | Para implantar o CloudFormation modelo da AWS na conta e na região da AWS que você deseja usar, execute o comando a seguir.
Para obter mais informações, consulte a documentação da AWS. | DevOps |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Crie o projeto. | Para construir o código do projeto, execute o comando | DevOps |
Implante o projeto. | Para implantar o código do projeto, execute o comando |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Verifique a criação da pilha. | No AWS Management Console, escolha CloudFormation. Nas pilhas do projeto, verifique se uma pilha principal e duas pilhas secundárias foram criadas. | DevOps |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Enviar dados ao Kinesis Data Streams. | Configure sua conta da AWS para enviar dados para o Kinesis Data Streams usando o Amazon Kinesis Data Generator (KDG). Para obter mais informações, consulte Amazon Kinesis Data Generator | DevOps |
Crie um usuário do Amazon Cognito. | Para criar um usuário do Amazon Cognito, baixe o CloudFormation modelo cognito-setup.json na seção Criar um usuário do Amazon Cognito na página de ajuda do Kinesis Data Generator. A guia Outputs (Saídas) lista o URL do Kinesis Data Generator. | DevOps |
Faça o login no Kinesis Data Generator | Para fazer login no KDG, use as credenciais do Amazon Cognito que você forneceu e o URL do Kinesis Data Generator. | DevOps |
Testar o aplicativo. | No KDG, em Modelo de registro, Modelo 1, cole o código de teste na seção Informações adicionais e selecione Enviar dados. | DevOps |
Teste o API Gateway. | Depois que os dados forem ingeridos, teste o API Gateway usando o método | DevOps |
Recursos relacionados
Referências
Mais informações
Detalhes do diretório e do arquivo
Esse padrão configura as três pilhas a seguir.
parent-cdk-stack.ts
: essa pilha atua como pilha principal e chama os dois aplicativos secundários de pilhas aninhadas.real-time-analytics-poc-stack.ts
: essa pilha aninhada contém a infraestrutura e o código do aplicativo.real-time-analytics-web-stack.ts
: essa pilha aninhada contém somente o código estático do aplicativo web.
Arquivos importantes e suas funcionalidades
bin/real-time-analytics-poc.ts
: ponto de entrada do aplicativo AWS CDK. Ele carrega todas as pilhas definidas emlib/
.lib/real-time-analytics-poc-stack.ts
: definição da pilha (real-time-analytics-poc
) do aplicativo AWS CDK.lib/real-time-analytics-web-stack.ts
: definição da pilha (real-time-analytics-web-stack
) do aplicativo AWS CDK.lib/parent-cdk-stack.ts
: definição da pilha (parent-cdk
) do aplicativo AWS CDK.package.json
: manifesto do módulo npm, que inclui o nome, a versão e as dependências do aplicativo.package-lock.json
: mantido pelo npm.cdk.json
: kit de ferramentas para executar o aplicativo.tsconfig.json
— A TypeScript configuração do projeto..gitignore
: lista de arquivos que o Git deve excluir do controle de origem.node_modules
: mantido pelo npm; inclui as dependências do projeto.
A seção de código a seguir na pilha principal chama os aplicativos secundários como pilhas de CDK aninhadas da AWS.
import * as cdk from '@aws-cdk/core'; import { Construct, Stack, StackProps } from '@aws-cdk/core'; import { RealTimeAnalyticsPocStack } from './real-time-analytics-poc-stack'; import { RealTimeAnalyticsWebStack } from './real-time-analytics-web-stack'; export class CdkParentStack extends Stack { constructor(scope: Construct, id: string, props?: StackProps) { super(scope, id, props); new RealTimeAnalyticsPocStack(this, 'RealTimeAnalyticsPocStack'); new RealTimeAnalyticsWebStack(this, 'RealTimeAnalyticsWebStack'); } }
Código para teste
session={{date.now('YYYYMMDD')}}|sequence={{date.now('x')}}|reception={{date.now('x')}}|instrument={{random.number(9)}}|l={{random.number(20)}}|price_0={{random.number({"min":10000, "max":30000})}}|price_1={{random.number({"min":10000, "max":30000})}}|price_2={{random.number({"min":10000, "max":30000})}}|price_3={{random.number({"min":10000, "max":30000})}}|price_4={{random.number({"min":10000, "max":30000})}}|price_5={{random.number({"min":10000, "max":30000})}}|price_6={{random.number({"min":10000, "max":30000})}}|price_7={{random.number({"min":10000, "max":30000})}}|price_8={{random.number({"min":10000, "max":30000})}}|
Teste o API Gateway
No console do API Gateway, teste o API Gateway usando o método GET
.
![Console do API Gateway com GET escolhido em OPÇÕES.](images/pattern-img/0ac29a11-1362-4084-92ed-6b85205763ca/images/452e5b8f-6d61-401d-8484-e5a436cb6f1b.png)
Anexos
Para acessar o conteúdo adicional associado a este documento, descompacte o seguinte arquivo: attachment.zip