我正在研究js/ts中的AWS (ver2,因为我们都讨厌ver1中的版本控制),而且出于一些明显的原因,我试图用CDK替换我们当前的CloudFormatation堆栈/实现。
目前的Cfn回购具有如下结构:
.
├── cloudformation
│ ├── params
│ │ └── submit
│ │ ├── e2e.json
│ │ ├── preprod.json
│ │ └── prod.json
│ ├── stack
│ │ └── submit.yml
│ └── tags
│ ├── e2e.json
│ ├── preprod.json
│ └── prod.json
├── deploy.sh
├── ops
│ ├── add-state.sh
│ ├── create-or-update-stack.sh
│ └── upload-zendesk-templates.sh
├── state-machine
│ ├── Submit.json
│ └── SubmitSubStateMachine.json
└── zendesk-template
├── some_handlebars_zendesk_template_1.hbs
└── some_handlebars_zendesk_template_2.hbsCloudformation堆栈是在./cloudformation/stack/下面的yaml文件中定义的。在不同环境中使用的所有thw参数都在./cloudformation/params/{stackname}/{env}/目录中的json文件中定义,这些参数在类似于以下的堆栈定义中引用/反映(包含大量的!Sub和!Ref):
ZendeskWorkerLambdaArn:
Fn::ImportValue: !Sub "${ZendeskWorkerInfrastructureStackName}-ZendeskWorkerLambdaArn"
ZendeskDomain: !Ref ZendeskDomain
FooBarGroupId: !Ref FooBarGroupId这个堆栈所做的是:
一旦从后端接收到调用信号,
注意,所有这些工具栏模板文件都是通过在shell脚本(在s3下)中运行aws而上传到一个./ops/桶中的。
由于我试图使用CDK来替换这个配置量很大的Cfn项目和shell重的Cfn项目,我遇到了一个问题,这就是我应该为不同的env处理所有这些参数的问题。我在CDK堆栈定义中使用了cdk.CfnParameter来定义环境变量。我想我可以再做一次,但问题是:
cdk deploy命令末尾的env数量很大,这使得整个命令看起来很乏味。(目前,json文件中为部署时的每个environment)确实不鼓励这样做。
我想不出如何解决这个问题了。非常感谢,如果有人能给我一点想法,同时也为超长的职位感到抱歉。因此,我确实希望我提供了足够的上下文(说到上下文,CDK上下文是否是我应该查看的内容?)
干杯,亚当
发布于 2021-08-10 20:37:05
为此,我使用cdk.context.json和环境变量。
示例cdk上下文json,
{
"shared": {
"application": "application name",
},
"dev": {
"environment": "dev",
}
}在部署cdk时,从管道中设置环境。
在python中获取下面的环境,
ENVIRONMENT = os.environ.get('ENVIRONMENT', 'dev')并在创建下面的Python时阅读该上下文,
self.context = self.node.try_get_context(ENVIRONMENT)有关其他示例,请参阅这里- https://docs.aws.amazon.com/cdk/latest/guide/get_context_var.html
https://stackoverflow.com/questions/68682629
复制相似问题