[Tip] 从
v0改为v1看到了吗 移徙指南。 。 。 .
有意见的CDK“框架”,包括下列建筑和公用事业:
-
向多个账户部署多个环境(多对多关系)
-
通过标准化道具管理账户配置(不再随机配置文件)
-
查询您的 CDK 代码中的账户和/或环境特定信息
-
动态和短寿命“环境”
-
启用定义明确的标记
-
为CDK项目提供结构和共同公约
-
通过运行时上下文来选择目标账户和环境( e) :
npx cdk deploy -c account=dev -c environment=feature/abc-123...这意味着你不需要预先定义所有可能的环境!
账户策略
根据使用大小写的不同,您可以在1-3 AWS 账户中选择配置,其环境如下:
-
共用账户
shared(中文(简体) )数字 : -
多账户
dev+ 键prod(中文(简体) )建议数字 :
-
多账户
dev+ 键preprod+ 键prod(中文(简体) )数字 :
开始
A. 界定《公约》 环境 项目资源; 一开始,它可能看起来很复杂 但一旦你进入 定义你的项目 这种方式开始有意义:
-
选择您的 账户战略
-
初始化一个新的
Project改为cdk.App数字 :// bin/app.ts import { Project, AccountStrategy } from '@alma-cdk/project'; const project = new Project({ // Basic info, you could also read these from package.json if you want name: 'my-cool-project', author: { organization: 'Acme Corp', name: 'Mad Scientists', email: '[email protected]', }, // If not set, defaults to one of: $CDK_DEFAULT_REGION, $AWS_REGION or us-east-1 defaultRegion: 'eu-west-1', // Configures the project to use 2 AWS accounts (recommended) accounts: AccountStrategy.two({ dev: { id: '111111111111', config: { // whatever you want here as [string]: any baseDomain: 'example.net', }, }, prod: { id: '222222222222', config: { // whatever you want here as [string]: any baseDomain: 'example.com', }, }, }), }) -
定义堆栈
extends SmartStack资源:// lib/my-stack.ts import { Construct } from 'constructs'; import { StackProps, RemovalPolicy } from 'aws-cdk-lib'; import { SmartStack, Name, UrlName, PathName, EC } from '@alma-cdk/project'; export class MyStack extends SmartStack { constructor(scope: Construct, id: string, props: StackProps) { super(scope, id, props); new dynamodb.Table(this, 'Table', { removalPolicy: EC.isStable(this) ? RemovalPolicy.RETAIN : RemovalPolicy.DESTROY, tableName: Name.it(this, 'MyTable'), partitionKey: { type: dynamodb.AttributeType.STRING, name: 'pk', }, // StagingMyTable }); new events.EventBus(this, 'EventBus', { eventBusName: Name.withProject(this, 'MyEventBus'), // MyCoolProjectStagingMyEventBus }); new s3.Bucket(this, 'Bucket', { removalPolicy: EC.isStable(this) ? RemovalPolicy.RETAIN : RemovalPolicy.DESTROY, autoDeleteObjects: EC.isStable(this) ? false : true, bucketName: UrlName.globally(this, 'MyBucket'), // acme-corp-my-cool-project-feature-foo-bar-my-bucket }); new ssm.StringParameter(this, 'Parameter', { stringValue: 'Foo', tier: ssm.ParameterTier.ADVANCED, parameterName: PathName.withProject(this, 'MyNamespace/MyParameter'), // /MyCoolProject/Staging/MyNamespace/MyParameter }); } } -
定义新 环境 哪个
extends EnvironmentWrapper并初始化所有环境SmartStack在 :// lib/environment.ts import { Construct } from 'constructs'; import { EnvironmentWrapper } from '@alma-cdk/project'; import { MyStack } from './my-stack'; export class Environment extends EnvironmentWrapper { constructor(scope: Construct) { super(scope); new MyStack(this, 'MyStack', { description: 'This is required' }); } }生成堆栈属性( 已提供)
environment=staging:财产 示例值 stackName"MyCoolProject-Environment-Staging-MyExampleStack"terminationProtectiontrueenv.account"111111111111"env.region"eu-west-1"生成堆栈及其资源的标记( 已提供)
environment=staging:财产 示例值 AccountdevEnvironmentstagingProjectmy-cool-projectAuthorMad ScientistsOrganizationAcme CorpContact[email protected] -
最后将环境与
Project范围 :// bin/app.ts import { Project, Accounts } from '@alma-cdk/project'; import { Environment } from '../lib/environment'; const project = new Project({/* removed for brevity, see step 1 */}) new Environment(project);
文档
请参看关于特定类别和方法的详细文档 构造.dev。 。 。 .
一般来说,你最感兴趣的是:
- 项目
- 账户战略
- 智能软件
- 账户
- 账户连接( AC)
- 环境联系( EC)
- 名称 / UrlName / 路径Name
移徙指南
从 v0 改为 v1看到了吗 移徙指南。 。 。 .
路线图
现在看 问题36。 。 。 .