Если вам или кому-то еще нужен пример или немного другой подход.Я использую отдельные файлы конфигурации для разных сред, загружаю их динамически во время выполнения и заполняю значения параметров.
Если вы используете командную строку, следующий пример должен работать для заполнения параметров во время выполнения.
aws --region ${region} cloudformation create-stack --stack-name ${stack_name} -- template-body file://${CFT_DIR}/${process}-stack.json --parameters ParameterKey=${param1},ParameterValue=${value1} ParameterKey=${param2},ParameterValue=${value2} ParameterKey=${param3},ParameterValue=${value3}
Все переменные могут быть заполнены на основе файла конфигурации, загруженного во время выполнения.
Если вы используете AWS java sdk, вы можете сделать то же самое с этим примером.
AmazonCloudFormation awsCFTClient = AmazonCloudFormationClientBuilder.defaultClient();
List<Parameter> listOfParameters = new ArrayList<Parameter>();
listOfParameters.add(getParameter("param1", "value1"));
listOfParameters.add(getParameter("param2", "value2"));
CreateStackRequest createStackRequest = new CreateStackRequest();
createStackRequest.setStackName(stackName);
createStackRequest.setTemplateURL(AWS_S3_URL + cftPath);
createStackRequest.setParameters(listOfParameters);
awsCFTClient.createStack(createStackRequest);
Просто заполните значения параметров из файлов конфигурации и загрузите конфигурацию в зависимости от среды.