Pular para o conteúdo

Infraestrutura CDK

O AWS CDK é um framework para definir infraestrutura em nuvem através de código e provisioná-la utilizando AWS CloudFormation.

O gerador de infraestrutura TypeScript cria uma aplicação de infraestrutura AWS CDK escrita em TypeScript. A aplicação gerada inclui práticas recomendadas de segurança através de verificações com CFN Guard.

Utilização

Gerar um Projeto de Infraestrutura

Você pode gerar um novo projeto de infraestrutura de duas formas:

  1. Instale o Nx Console VSCode Plugin se ainda não o fez
  2. Abra o console Nx no VSCode
  3. Clique em Generate (UI) na seção "Common Nx Commands"
  4. Procure por @aws/nx-plugin - ts#infra
  5. Preencha os parâmetros obrigatórios
    • Clique em Generate

    Opções

    Parâmetro Tipo Padrão Descrição
    name Obrigatório string - The name of the application.
    ruleSet string aws_prototyping Rule set to validate your AWS resources with.
    directory string packages The directory of the new application.

    Saída do Gerador

    O gerador criará a seguinte estrutura de projeto no diretório <directory>/<name>:

    • Directorysrc
      • main.ts Ponto de entrada da aplicação que instancia stacks CDK para implantação
      • Directorystacks Definições de stacks CDK
        • application-stack.ts Stack principal da aplicação
    • cdk.json Configuração do CDK
    • project.json Configuração do projeto e targets de build

    Implementando sua Infraestrutura CDK

    Você pode começar a escrever sua infraestrutura CDK dentro de src/stacks/application-stack.ts, por exemplo:

    src/stacks/application-stack.ts
    import * as cdk from 'aws-cdk-lib';
    import { Bucket } from 'aws-cdk-lib/aws-s3'
    import { Construct } from 'constructs';
    export class ApplicationStack extends cdk.Stack {
    constructor(scope: Construct, id: string, props?: cdk.StackProps) {
    super(scope, id, props);
    // Declare sua infraestrutura aqui
    new Bucket(this, 'MyBucket');
    }
    }

    Infraestrutura de API

    Se você usou os geradores tRPC API ou FastAPI para criar APIs, notará que já existem alguns constructs disponíveis em packages/common/constructs para implantá-los.

    Por exemplo, se você criou uma API tRPC chamada my-api, basta importar e instanciar o construct para adicionar toda a infraestrutura necessária:

    src/stacks/application-stack.ts
    import * as cdk from 'aws-cdk-lib';
    import { Construct } from 'constructs';
    import { MyApi } from ':my-scope/common-constructs';
    export class ApplicationStack extends cdk.Stack {
    constructor(scope: Construct, id: string, props?: cdk.StackProps) {
    super(scope, id, props);
    // Adicione infraestrutura para sua API
    new MyApi(this, 'MyApi');
    }
    }

    Infraestrutura de Website

    Se você usou o gerador CloudScape website, notará que já existe um construct em packages/common/constructs para implantá-lo. Exemplo:

    src/stacks/application-stack.ts
    import * as cdk from 'aws-cdk-lib';
    import { Construct } from 'constructs';
    import { MyWebsite } from ':my-scope/common-constructs';
    export class ApplicationStack extends cdk.Stack {
    constructor(scope: Construct, id: string, props?: cdk.StackProps) {
    super(scope, id, props);
    // Adicione infraestrutura para seu website
    new MyWebsite(this, 'MyWebsite');
    }
    }

    É importante garantir que o website seja declarado após quaisquer constructs de API para que a Configuração de Runtime do website inclua todas as configurações da API.

    Sintetizando sua Infraestrutura

    Como parte do target build, além de executar os targets padrão de compilação, lint e testes, seu projeto de infraestrutura é sintetizado para CloudFormation. Isso também pode ser executado isoladamente através do target synth:

    Terminal window
    pnpm nx run <my-infra>:synth

    Você encontrará sua cloud assembly sintetizada na pasta raiz dist, em dist/packages/<my-infra-project>/cdk.out.

    Bootstrap da Sua Conta AWS

    Se você está implantando uma aplicação CDK em uma conta AWS pela primeira vez, é necessário fazer o bootstrap primeiro.

    Primeiro, certifique-se de ter configurado credenciais para sua conta AWS.

    Em seguida, use o comando cdk bootstrap:

    Terminal window
    npx cdk bootstrap aws://<account-id>/<region>

    Para mais detalhes, consulte a documentação do CDK.

    Implantação na AWS

    Após o build, você pode implantar sua infraestrutura na AWS usando o target deploy.

    Primeiro, certifique-se de ter configurado credenciais para sua conta AWS.

    Em seguida, execute o target deploy:

    Terminal window
    pnpm nx run <my-infra>:deploy --all

    Mais Informações

    Para mais detalhes sobre o CDK, consulte o Guia do Desenvolvedor CDK e a Referência da API.