По сути, я хочу хранить параметры снаружи из стека относительно среда (dev, test и т. д.).
Поэтому мы рассмотрим возможность включения в конвейер (вероятно, Gitlab), чтобы cdk.context.json находился под контролем версий.
Например, фрагмент моего контекста: следующим образом;
Код: Выделить всё
{
"vpc-provider:account=999999999:filter.isDefault=true:filter.vpc-id=vpc-w4w4w4w4w4:region=eu-west-2:returnAsymmetricSubnets=true": {
"vpcId": "vpc-w4w4w4w4w4",
.......
"environments": {
"dev": {
"documentDb": [
{
"port": "27017"
}
],
"subnetGroups": [
{
"name": "Private",
"type": "Private",
"subnets": [
{
"cidr": "10.0.1.0/24/24",
"availabilityZone": "eu-west-2a"
},
{
"cidr": "10.0.2.0/24",
"availabilityZone": "eu-west-2b"
}
]
}
]
},
"prod": {
"documentDb": [
{
"port": "27018"
}
],
"subnetGroups": [
{
"name": "Private",
"type": "Private",
"subnets": [
{
"cidr": "20.0.1.0/24/24",
"availabilityZone": "eu-west-2a"
},
{
"cidr": "20.0.2.0/24",
"availabilityZone": "eu-west-2b"
}
]
}
]
}
}
}
Код: Выделить всё
this.getNode().tryGetContext("environments")
Код: Выделить всё
{dev={documentDb=[{port=27017], subnetGroups=[{name=Private, type=Private, subnets=[{cidr=10.0.1.0/24/24, availabilityZone=eu-west-2a}, {cidr=10.0.2.0/24, availabilityZone=eu-west-2b}]}]}, prod={documentDb=[{port=27018], subnetGroups=..............
Код: Выделить всё
cdk synth -c config=environments > target/DocumentDbAppStack.yaml
Код: Выделить всё
this.getNode().tryGetContext("config")
Я могу проанализировать LinkedHashMap с помощью анализатора JSON, но это явно неправильный подход. Я просмотрел множество примеров/документации AWS и т. д., но не нашел ответа. Кажется, существует множество информации об использовании Typescript (думаю, это был первый язык, используемый для CDK), но я никогда им не пользовался.
Подробно описано выше.
Подробнее здесь: https://stackoverflow.com/questions/748 ... in-a-stack