Incorrect template for cloudwatch dashboard
See original GitHub issueI try to use CDK to create AWS monitoring dasboard and get problem with incorrect template.
Reproduction Steps
internal DashboardStack(Construct scope, string id, IStackProps props = null) : base(scope, id, props)
{
var dashboard = new Dashboard(this, "MonitoringDashboard", new DashboardProps
{
DashboardName = "MonitoringDashboard"
});
dashboard.AddWidgets(BuildWidget("dev", "Invocations", "Sum"));
}
private GraphWidget BuildWidget(string env, string metricName, string statistic)
{
IMetric metric = new Metric(new MetricProps
{
Namespace = "AWS/Lambda",
Region = Region,
Account = Account,
Label = "functionName",
MetricName = metricName,
Dimensions = new Dictionary<string, object>(1) { { "FunctionName", "functionName" } },
Statistic = statistic
});
var graphWidgetProps = new GraphWidgetProps
{
Title = metricName,
Region = Region,
Left = new [] { metric }
};
return new GraphWidget(graphWidgetProps);
}
Error Log
The problem starts with the metrics attribute. When I run “cdk synth” I see incorrect template with such part for metrics:
- '","metrics":[{"value":["AWS/Lambda","Invocations","FunctionName","functionName",{"label":"functionName","accountId":"'
- Ref: AWS::AccountId
- '","region":"'
- Ref: AWS::Region
- '","stat":"Sum"}],"creationStack":["new DropEmptyObjectAtTheEndOfAnArray (C:\\Users\\DAINUL~1\\AppData\\Local\\Temp\\jsii-kernel-Tuw0UU\\node_modules\\@aws-cdk\\aws-cloudwatch\\lib\\private\\drop-empty-object-at-the-end-of-an-array-token.js:14:34)","C:\\Users\\DAINUL~1\\AppData\\Local\\Temp\\jsii-kernel-Tuw0UU\\node_modules\\@aws-cdk\\aws-cloudwatch\\lib\\private\\rendering.js:27:38","Array.map (<anonymous>)","Object.allMetricsGraphJson (C:\\Users\\DAINUL~1\\AppData\\Local\\Temp\\jsii-kernel-Tuw0UU\\node_modules\\@aws-cdk\\aws-cloudwatch\\lib\\private\\rendering.js:27:25)","GraphWidget.toJson (C:\\Users\\DAINUL~1\\AppData\\Local\\Temp\\jsii-kernel-Tuw0UU\\node_modules\\@aws-cdk\\aws-cloudwatch\\lib\\graph.js:46:37)","C:\\Users\\dainullin\\AppData\\Local\\Temp\\vaal4m0b.3pw\\jsii-runtime.js:7665:51","Kernel._wrapSandboxCode (C:\\Users\\dainullin\\AppData\\Local\\Temp\\vaal4m0b.3pw\\jsii-runtime.js:8298:20)","C:\\Users\\dainullin\\AppData\\Local\\Temp\\vaal4m0b.3pw\\jsii-runtime.js:7665:25","Kernel._ensureSync (C:\\Users\\dainullin\\AppData\\Local\\Temp\\vaal4m0b.3pw\\jsii-runtime.js:8274:20)","Kernel.invoke (C:\\Users\\dainullin\\AppData\\Local\\Temp\\vaal4m0b.3pw\\jsii-runtime.js:7664:26)","KernelHost.processRequest (C:\\Users\\dainullin\\AppData\\Local\\Temp\\vaal4m0b.3pw\\jsii-runtime.js:7372:28)","KernelHost.completeCallback (C:\\Users\\dainullin\\AppData\\Local\\Temp\\vaal4m0b.3pw\\jsii-runtime.js:7345:25)","KernelHost.callbackHandler (C:\\Users\\dainullin\\AppData\\Local\\Temp\\vaal4m0b.3pw\\jsii-runtime.js:7326:33)","GraphWidget.value (C:\\Users\\dainullin\\AppData\\Local\\Temp\\vaal4m0b.3pw\\jsii-runtime.js:8012:41)","Column.toJson (C:\\Users\\DAINUL~1\\AppData\\Local\\Temp\\jsii-kernel-Tuw0UU\\node_modules\\@aws-cdk\\aws-cloudwatch\\lib\\layout.js:69:32)","Object.produce (C:\\Users\\DAINUL~1\\AppData\\Local\\Temp\\jsii-kernel-Tuw0UU\\node_modules\\@aws-cdk\\aws-cloudwatch\\lib\\dashboard.js:38:41)","LazyString.resolve (C:\\Users\\DAINUL~1\\AppData\\Local\\Temp\\jsii-kernel-Tuw0UU\\node_modules\\@aws-cdk\\core\\lib\\lazy.js:50:30)","DefaultTokenResolver.resolveToken (C:\\Users\\DAINUL~1\\AppData\\Local\\Temp\\jsii-kernel-Tuw0UU\\node_modules\\@aws-cdk\\core\\lib\\resolvable.js:39:30)","resolve (C:\\Users\\DAINUL~1\\AppData\\Local\\Temp\\jsii-kernel-Tuw0UU\\node_modules\\@aws-cdk\\core\\lib\\private\\resolve.js:94:33)","Object.resolve [as mapToken] (C:\\Users\\DAINUL~1\\AppData\\Local\\Temp\\jsii-kernel-Tuw0UU\\node_modules\\@aws-cdk\\core\\lib\\private\\resolve.js:28:33)","TokenizedStringFragments.mapTokens (C:\\Users\\DAINUL~1\\AppData\\Local\\Temp\\jsii-kernel-Tuw0UU\\node_modules\\@aws-cdk\\core\\lib\\string-fragments.js:56:43)","DefaultTokenResolver.resolveString (C:\\Users\\DAINUL~1\\AppData\\Local\\Temp\\jsii-kernel-Tuw0UU\\node_modules\\@aws-cdk\\core\\lib\\resolvable.js:58:26)","resolve (C:\\Users\\DAINUL~1\\AppData\\Local\\Temp\\jsii-kernel-Tuw0UU\\node_modules\\@aws-cdk\\core\\lib\\private\\resolve.js:61:37)","Object.resolve (C:\\Users\\DAINUL~1\\AppData\\Local\\Temp\\jsii-kernel-Tuw0UU\\node_modules\\@aws-cdk\\core\\lib\\private\\resolve.js:28:33)","resolve (C:\\Users\\DAINUL~1\\AppData\\Local\\Temp\\jsii-kernel-Tuw0UU\\node_modules\\@aws-cdk\\core\\lib\\private\\resolve.js:111:43)","Object.resolve (C:\\Users\\DAINUL~1\\AppData\\Local\\Temp\\jsii-kernel-Tuw0UU\\node_modules\\@aws-cdk\\core\\lib\\private\\resolve.js:28:33)","DefaultTokenResolver.resolveToken (C:\\Users\\DAINUL~1\\AppData\\Local\\Temp\\jsii-kernel-Tuw0UU\\node_modules\\@aws-cdk\\core\\lib\\resolvable.js:41:32)","resolve (C:\\Users\\DAINUL~1\\AppData\\Local\\Temp\\jsii-kernel-Tuw0UU\\node_modules\\@aws-cdk\\core\\lib\\private\\resolve.js:94:33)","Object.resolve (C:\\Users\\DAINUL~1\\AppData\\Local\\Temp\\jsii-kernel-Tuw0UU\\node_modules\\@aws-cdk\\core\\lib\\private\\resolve.js:28:33)","resolve (C:\\Users\\DAINUL~1\\AppData\\Local\\Temp\\jsii-kernel-Tuw0UU\\node_modules\\@aws-cdk\\core\\lib\\private\\resolve.js:111:43)","Object.resolve (C:\\Users\\DAINUL~1\\AppData\\Local\\Temp\\jsii-kernel-Tuw0UU\\node_modules\\@aws-cdk\\core\\lib\\private\\resolve.js:28:33)","DefaultTokenResolver.resolveToken (C:\\Users\\DAINUL~1\\AppData\\Local\\Temp\\jsii-kernel-Tuw0UU\\node_modules\\@aws-cdk\\core\\lib\\resolvable.js:41:32)","resolve (C:\\Users\\DAINUL~1\\AppData\\Local\\Temp\\jsii-kernel-Tuw0UU\\node_modules\\@aws-cdk\\core\\lib\\private\\resolve.js:94:33)","Object.resolve (C:\\Users\\DAINUL~1\\AppData\\Local\\Temp\\jsii-kernel-Tuw0UU\\node_modules\\@aws-cdk\\core\\lib\\private\\resolve.js:28:33)","resolve (C:\\Users\\DAINUL~1\\AppData\\Local\\Temp\\jsii-kernel-Tuw0UU\\node_modules\\@aws-cdk\\core\\lib\\private\\resolve.js:111:43)","Object.resolve (C:\\Users\\DAINUL~1\\AppData\\Local\\Temp\\jsii-kernel-Tuw0UU\\node_modules\\@aws-cdk\\core\\lib\\private\\resolve.js:28:33)","Object.resolve (C:\\Users\\DAINUL~1\\AppData\\Local\\Temp\\jsii-kernel-Tuw0UU\\node_modules\\@aws-cdk\\core\\lib\\private\\resolve.js:111:43)","Stack.resolve (C:\\Users\\DAINUL~1\\AppData\\Local\\Temp\\jsii-kernel-Tuw0UU\\node_modules\\@aws-cdk\\core\\lib\\stack.js:141:26)","C:\\Users\\DAINUL~1\\AppData\\Local\\Temp\\jsii-kernel-Tuw0UU\\node_modules\\@aws-cdk\\core\\lib\\stack.js:658:50","Array.map (<anonymous>)","Stack._toCloudFormation (C:\\Users\\DAINUL~1\\AppData\\Local\\Temp\\jsii-kernel-Tuw0UU\\node_modules\\@aws-cdk\\core\\lib\\stack.js:658:36)","Stack.synthesize (C:\\Users\\DAINUL~1\\AppData\\Local\\Temp\\jsii-kernel-Tuw0UU\\node_modules\\@aws-cdk\\core\\lib\\stack.js:596:42)","C:\\Users\\dainullin\\AppData\\Local\\Temp\\vaal4m0b.3pw\\jsii-runtime.js:7665:51","Kernel._wrapSandboxCode (C:\\Users\\dainullin\\AppData\\Local\\Temp\\vaal4m0b.3pw\\jsii-runtime.js:8298:20)","C:\\Users\\dainullin\\AppData\\Local\\Temp\\vaal4m0b.3pw\\jsii-runtime.js:7665:25","Kernel._ensureSync (C:\\Users\\dainullin\\AppData\\Local\\Temp\\vaal4m0b.3pw\\jsii-runtime.js:8274:20)","Kernel.invoke (C:\\Users\\dainullin\\AppData\\Local\\Temp\\vaal4m0b.3pw\\jsii-runtime.js:7664:26)","KernelHost.processRequest (C:\\Users\\dainullin\\AppData\\Local\\Temp\\vaal4m0b.3pw\\jsii-runtime.js:7372:28)","KernelHost.completeCallback (C:\\Users\\dainullin\\AppData\\Local\\Temp\\vaal4m0b.3pw\\jsii-runtime.js:7345:25)","KernelHost.callbackHandler (C:\\Users\\dainullin\\AppData\\Local\\Temp\\vaal4m0b.3pw\\jsii-runtime.js:7326:33)","Stack.value (C:\\Users\\dainullin\\AppData\\Local\\Temp\\vaal4m0b.3pw\\jsii-runtime.js:8012:41)","Function.synth (C:\\Users\\DAINUL~1\\AppData\\Local\\Temp\\jsii-kernel-Tuw0UU\\node_modules\\@aws-cdk\\core\\lib\\construct.js:65:27)","App.synth (C:\\Users\\DAINUL~1\\AppData\\Local\\Temp\\jsii-kernel-Tuw0UU\\node_modules\\@aws-cdk\\core\\lib\\app.js:71:52)","C:\\Users\\dainullin\\AppData\\Local\\Temp\\vaal4m0b.3pw\\jsii-runtime.js:7665:51","Kernel._wrapSandboxCode (C:\\Users\\dainullin\\AppData\\Local\\Temp\\vaal4m0b.3pw\\jsii-runtime.js:8298:20)","C:\\Users\\dainullin\\AppData\\Local\\Temp\\vaal4m0b.3pw\\jsii-runtime.js:7665:25","Kernel._ensureSync (C:\\Users\\dainullin\\AppData\\Local\\Temp\\vaal4m0b.3pw\\jsii-runtime.js:8274:20)","Kernel.invoke (C:\\Users\\dainullin\\AppData\\Local\\Temp\\vaal4m0b.3pw\\jsii-runtime.js:7664:26)","KernelHost.processRequest (C:\\Users\\dainullin\\AppData\\Local\\Temp\\vaal4m0b.3pw\\jsii-runtime.js:7372:28)","KernelHost.run (C:\\Users\\dainullin\\AppData\\Local\\Temp\\vaal4m0b.3pw\\jsii-runtime.js:7312:14)","Immediate._onImmediate (C:\\Users\\dainullin\\AppData\\Local\\Temp\\vaal4m0b.3pw\\jsii-runtime.js:7315:37)","processImmediate (internal/timers.js:456:21)"]}],"yAxis":{}}}]}'
Environment
- **CLI Version :1.28.0
- **Framework Version:1.28.0
- **OS :Windows
- **Language :C#
Other
I suppose it somehow related to this problem: https://github.com/aws/aws-cdk/issues/5735
This is 🐛 Bug Report
Issue Analytics
- State:
- Created 4 years ago
- Comments:12 (9 by maintainers)
Top Results From Across the Web
AWS::CloudWatch::Dashboard - AWS CloudFormation
A dashboard is a customizable home page in the CloudWatch console that you can use to monitor your AWS resources in a single...
Read more >Cloudwatch Dashboard error in Cloudformation - Stack Overflow
I am trying to create cloudwatch dashboards in AWS system manager using JSON in cloudformation. I have a template in which there are...
Read more >Using AWS CloudWatch | Crosswalk - Pulumi
Define custom dashboards to display these metrics or custom collections of metrics. For example, by setting up metrics to track the CPU usage...
Read more >How to Monitor Lambda with CloudWatch Metrics - Lumigo
Take a deep dive into CloudWatch Metrics to see how you can use it to monitor ... as an AWS::CloudWatch::Dashboard resource in a...
Read more >CloudWatch — Boto3 Docs 1.26.37 documentation
For all other expressions and metrics, set ReturnData to false . ... If the metric or expression is shown in a CloudWatch dashboard...
Read more >Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start FreeTop Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
Top GitHub Comments
@DamirAinullin the fix landed in 1.2.0 which we are working on upgrading CDK to use. This should go out in the next release.
@MrArnoldPalmer Try to use CDK version 1.34.1. And get app crash during cdk deploy with the following exception:
Can you look at it please? The reproduction code is the same as at the begining.