尝试更新现有 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 个值,但 cloudformation 模板验证会引发以下错误:ValidationError: Parameters: [Key1, Key2, Key3, ...] must have values
它似乎需要模板中存在的所有 cloudformation 参数的键/值。有没有办法只提供我需要更新的新的/现有的键/值对?
在 golang aws 文档中,我发现 *cloudformation.Parameter 结构对每个值都有一个 UsePreviousValue。但是,除了避免修改现有值之外,我没有看到它的用途,它仍然需要我在部署的 cfn 模板中提供相同的参数键。
我错过了什么吗?在已部署环境中更新现有值似乎是一种相对直接的方法。
想知道其他人是如何处理这件事的。我是否应该查询现有环境以读取所有参数键/值,修改我需要的 1,然后提交变更集?
LEATH
相关分类