Мне нужно создать список параметров CloudFormation (config.json) во время CodeBuild. У меня есть репозиторий Bash в моем репо, который будет принимать несколько параметров. Это будет либо производство, постановка или разработка.
Вот генератор.json. Значения здесь будут использоваться для генерации config.json.
{
"Parameters" : {
"FargateStackSuffix" : "environment-fargate",
"VPCStackSuffix": "environment-base-vpc",
"ContainerPort" : "80",
"ContainerCpu" : "256",
"ContainerMemory" : "512",
"Path" : "*",
"productionDesiredCount" : "3",
"stagingDesiredCount" : "2",
"developmentDesiredCount" : "1",
"ELBType" : "application",
"ELBIpAddressType": "ipv4",
"productionZone": "service.example.com",
"stagingZone": "service-staging.example.com",
"devZone": "service-dev.example.com"
}
}
Например:
./generate.sh my-service production
будет генерировать это:
{
"Parameters" : {
"FargateStackSuffix" : "production-fargate",
"VPCStackSuffix": "production-base-vpc",
"ServiceName" : "myservice",
"EnvironmentName" : "production",
"ContainerPort" : "80",
"ContainerCpu" : "256",
"ContainerMemory" : "512",
"Path" : "*",
"DesiredCount" : "3",
"ELBType" : "application",
"ELBIpAddressType": "ipv4",
"Zone": "myservice.example.com"
}
}
Как видите, есть небольшая замена на основе дополнений. Простое перебора ключей не сделает этого. Есть ли способ сделать все необходимые преобразования, просто JQ?
РЕДАКТИРОВАТЬ : В итоге я использовал несколько sed для фильтрации и замены нескольких значений. Теперь мне нужно заменить соответствующий DesiredCount:
cat .codedeploy/generator.json | jq '[paths(type == "string" and contains("DesiredCount"))]'
[]
Моя проблема в том, что он возвращает пустой массив.