Попытка обновить один ключ / значение параметра в существующем шаблоне Cloudformation.
...
svc := cloudformation.New(AWSSession)
// Add parameters. Used in AWS CreateStack/UpdateStack call
var params []*cloudformation.Parameter
for key, val := range cfnparamsOverrides {
log.Printf("Adding parameter key-> %v value-> %v", key, val)
param := &cloudformation.Parameter{}
param.ParameterKey = aws.String(key)
param.ParameterValue = aws.String(val)
params = append(params, param)
}
CreateChangeSetInput := &cloudformation.CreateChangeSetInput{
StackName: aws.String(stackARN), // required field.
ChangeSetName: aws.String(ChangeSetName), // must be a unique value
ChangeSetType: aws.String("UPDATE"),
// TemplateBody: aws.String(templateBody),
UsePreviousTemplate: aws.Bool(true),
Parameters: params}
// Issue AWS CreateChangeSet API call
log.Println("Issuing AWS CreateChangeSet() API call")
_, errCreateChangeSet := svc.CreateChangeSet(CreateChangeSetInput)
if errCreateChangeSet != nil {
return false, fmt.Errorf("Got error on CreateChangeSet: %v", errCreateChangeSet.Error())
}
устанавливается только 1 значение, но проверка шаблона облачной информации вызывает следующее: ValidationError: Параметры: [Key1, Key2, Key3, ...] должны иметь значения
Кажется, требуется ключ / значение для всех параметров облачной информации, существующих в шаблоне. Есть ли способ предоставить только новую / существующую пару ключ / значение, которую мне нужно обновить?
В документации golang aws я обнаружил, что структура * cloudformation.Parameter имеет UsePreviousValue для каждого значения. Однако я не вижу в этом другого применения, кроме как избежать изменения существующего значения, он по-прежнему требует, чтобы я предоставил те же ключи параметров в развернутом шаблоне cfn.
Я что-то упустил? Кажется, что это относительно простой подход к обновлению существующего значения в развернутой среде.
Интересно, как это делают другие. Следует ли мне запрашивать существующую среду, чтобы прочитать все ключи / значения параметров, изменить 1, который мне нужен, а затем отправить набор изменений?