Este é o Guia do Desenvolvedor AWS CDK v2. O CDK v1 antigo entrou em manutenção em 1º de junho de 2022 e encerrou o suporte em 1º de junho de 2023.
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á.
Um AWS Cloud Development Kit (AWS CDK) estágio representa um grupo de uma ou mais pilhas de CDK configuradas para serem implantadas em conjunto. Use estágios para implantar o mesmo agrupamento de pilhas em vários ambientes, como desenvolvimento, teste e produção.
Para configurar um estágio de CDK, importe e use a construção Stage
.
Este é um exemplo básico que define um estágio do CDK chamado MyAppStage
. Adicionamos duas pilhas de CDK, chamadas AppStack
e DatabaseStack
, ao nosso estágio. Neste exemplo, AppStack
contém recursos da aplicação e DatabaseStack
contém recursos do banco de dados. Em seguida, criamos duas instâncias de MyAppStage
, para ambientes de desenvolvimento e produção:
Em cdk-demo-app/lib/app-stack.ts
:
import * as cdk from 'aws-cdk-lib';
import { Construct } from 'constructs';
// Define the app stack
export class AppStack extends cdk.Stack {
constructor(scope: Construct, id: string, props?: cdk.StackProps) {
super(scope, id, props);
// The code that defines your application goes here
}
}
Em cdk-demo-app/lib/database-stack.ts
:
import * as cdk from 'aws-cdk-lib';
import { Construct } from 'constructs';
// Define the database stack
export class DatabaseStack extends cdk.Stack {
constructor(scope: Construct, id: string, props?: cdk.StackProps) {
super(scope, id, props);
// The code that defines your database goes here
}
}
Em cdk-demo-app/lib/my-stage.ts
:
import * as cdk from 'aws-cdk-lib';
import { Construct } from 'constructs';
import { Stage } from 'aws-cdk-lib';
import { AppStack } from './app-stack';
import { DatabaseStack } from './database-stack';
// Define the stage
export class MyAppStage extends Stage {
constructor(scope: Construct, id: string, props?: cdk.StageProps) {
super(scope, id, props);
// Add both stacks to the stage
new AppStack(this, 'AppStack');
new DatabaseStack(this, 'DatabaseStack');
}
}
Em cdk-demo-app/bin/cdk-demo-app.ts
:
#!/usr/bin/env node
import 'source-map-support/register';
import * as cdk from 'aws-cdk-lib';
import { MyAppStage } from '../lib/my-stage';
// Create a CDK app
const app = new cdk.App();
// Create the development stage
new MyAppStage(app, 'Dev', {
env: {
account: '123456789012',
region: 'us-east-1'
}
});
// Create the production stage
new MyAppStage(app, 'Prod', {
env: {
account: '098765432109',
region: 'us-east-1'
}
});
Quando executamos cdk synth
, suas montagens de nuvem são criadas no cdk.out
. Esses dois conjuntos de nuvem contêm o AWS CloudFormation modelo e os ativos sintetizados para cada estágio. A seguir está um trecho do nosso diretório de projetos:
cdk-demo-app ├── bin │ └── cdk-demo-app.ts ├── cdk.out │ ├── assembly-Dev │ │ ├── DevAppStack
unique-hash
.assets.json │ │ ├── DevAppStackunique-hash
.template.json │ │ ├── DevDatabaseStackunique-hash
.assets.json │ │ ├── DevDatabaseStackunique-hash
.template.json │ │ ├── cdk.out │ │ └── manifest.json │ ├── assembly-Prod │ │ ├── ProdAppStackunique-hash
.assets.json │ │ ├── ProdAppStackunique-hash
.template.json │ │ ├── ProdDatabaseStackunique-hash
.assets.json │ │ ├── ProdDatabaseStackunique-hash
.template.json │ │ ├── cdk.out │ │ └── manifest.json └── lib ├── app-stack.ts ├── database-stack.ts └── my-stage.ts
Quando listamos nossas pilhas com cdk list
, vemos um total de quatro pilhas:
$
cdk list
Dev/AppStack (Dev-AppStack) Dev/DatabaseStack (Dev-DatabaseStack) Prod/AppStack (Prod-AppStack) Prod/DatabaseStack (Prod-DatabaseStack)
Para implantar um estágio específico, executamos o cdk deploy
e fornecemos as pilhas para implantação. Veja a seguir um exemplo que usa o curinga *
para implantar as duas pilhas em nosso estágio Dev
:
$
cdk deploy "Dev/*"
✨ Synthesis time: 3.18s Dev/AppStack (Dev-AppStack) Dev/AppStack (Dev-AppStack): deploying... [1/2] ✅ Dev/AppStack (Dev-AppStack) ✨ Deployment time: 1.11s Stack ARN:...
✨ Total time: 4.29s Dev/DatabaseStack (Dev-DatabaseStack) Dev/DatabaseStack (Dev-DatabaseStack): deploying... [2/2] ✅ Dev/DatabaseStack (Dev-DatabaseStack) ✨ Deployment time: 1.09s Stack ARN:...
✨ Total time: 4.27s