ParameterOverrides 的 CloudFormation 语法

CloudFormation syntax for ParameterOverrides

我在将它们传递给 CodePipeline 的 CloudFormation 中覆盖多个参数时遇到困难。

我可以像这样成功覆盖单个参数:

ParameterOverrides: "{ \"StageName\": \"stage\" }"

但是当我尝试这个时:

ParameterOverrides: '{ "StageName": "prod", "EnvValue", "prod" }'

我也试过这些组合:

ParameterOverrides: "{\"StageName\": \"prod\", \"EnvValue\", \"prod\"}"

Codepipeline 抛出错误:ParameterOverrides 属性 无效

这篇帮助文章我已经看了六遍了,看来我是按照 T 的格式来的。 https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/continuous-delivery-codepipeline-parameter-override-functions.html

我错过了什么?有没有人在 CloudFormation 模板中使用此功能?

我发现问题出在哪里了,胖手指。 我把这个:

ParameterOverrides: "{\"StageName\": \"prod\", \"EnvValue\", \"prod\"}"

应该是这样的:

ParameterOverrides: "{\"StageName\": \"prod\", \"EnvValue\": \"prod\"}"

注意:第二个键后缺少冒号。

在处理 YAML 中嵌入的 JSON 时,折叠 (>) 或文字 (|) 块样式而不是引号字符串会提高清晰度。所以像:

ParameterOverrides: >
  {
    "StageName": "prod",
    "EnvValue": "prod"
  }

这将使您看到实际的 JSON,而不会受到反斜杠转义的影响。这可以在您链接到的页面的 "Example Create Stack B Stage" 部分中看到(它使用带有 | 的文字块样式)。 |> 之间的区别可以在 YAML Multiline 网站上看到。