Sac*_*ade 4 yaml amazon-web-services aws-cloudformation amazon-cloudwatch
我正在尝试创建一个CloudFormation模板来创建CloudWatch仪表板。以下是模板代码 -
Parameters:
MyEnvironment:
Type: String
Default: "do"
Description: "Specifies the environment of the platform."
Resources:
MyServiceDashboard:
Type: AWS::CloudWatch::Dashboard
Properties:
DashboardName: "Test-My-Dashboard"
DashboardBody: >
{
"widgets": [
{
"type": "metric",
"x": 15,
"y": 18,
"width": 6,
"height": 6,
"properties": {
"view": "timeSeries",
"stacked": false,
"metrics": [
[ "AWS/Kinesis", "GetRecords.IteratorAgeMilliseconds", "StreamName",
"${MyEnvironment}-my-data-out"
]...
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用MyEnvironment当我实际使用此模板创建堆栈时将提供的参数。
问题是 stack/dashbaord 是使用它创建的,但参数值没有在仪表板指标中使用,而是使用值 as"${MyEnvironment}-my-data-out"而不是"Dev-my-data-out"假设我提供了"MyEnvironment"值 as"Dev"
我尝试了此链接中指定的方法 - Use Pseudo Variables in Cloudwatch Dashboard Template (Cloudformation)但 CloudFormation 在使用Sub >-关键字时显示无效模板。
在尝试了各种选项后,找到了解决方案,重要的 一点是使用!Sub函数,否则参数值不会在 JSON 字符串中被替换。
DashboardName: "Test-My-Dashboard"
DashboardBody: !Sub '{
"widgets": [
Run Code Online (Sandbox Code Playgroud)
请注意属性中的 !Sub 函数DashboardBody。之后您可以使用${PARAMETER_NAME}格式引用参数值。