Describe the bug
When you make a change to a stack-level tag in CDK, cdk diff returns There were no differences even though changes to stack-level tags do in fact results in updates to resources. This results in inaccurate diff results that can lead to unexpected updates.
In comparison - When you make a change to a stack-level tag and then create a CloudFormation ChangeSet, CloudFormation does report this as a change. It lists a Modify operation for all supported resources.
The cdk diff command creates (and then immediately deletes) a CloudFormation ChangeSet, and this ChangeSet does accurately report the Modify behavior, but the actual cdk diff results in the CDK CLI still returns no differences despite this. I have provided screenshots of this below.
CloudFormation ChangeSet:
CDK Diff Results:
In other words, this doesn't appear to be an issue or limitation with the CloudFormation ChangeSet behavior. This specifically looks like a limitation with how CDK diff parses and returns ChangeSet results when stack-level tags are involved.
Regression Issue
Last Known Working CDK Version
No response
Expected Behavior
CDK diff should accurately report changes to resources when changes are made to stack-level tags.
Current Behavior
CDK diff incorrectly returns "There were no differences" despite the CloudFormation ChangeSet reporting differences.
Reproduction Steps
- Create a CDK stack. As an example, I made one that just creates an SNS topic:
import * as cdk from 'aws-cdk-lib/core';
import * as sqs from 'aws-cdk-lib/aws-sqs';
import { Construct } from 'constructs';
export class CdkDiffReplicationStack extends cdk.Stack {
constructor(scope: Construct, id: string, props?: cdk.StackProps) {
super(scope, id, props);
new sqs.Queue(this, 'Queue');
}
}
- Define one or more stack tags. For example:
#!/usr/bin/env node
import * as cdk from 'aws-cdk-lib/core';
import { CdkDiffReplicationStack } from '../lib/cdk_diff_replication-stack';
const app = new cdk.App();
new CdkDiffReplicationStack(app, 'CdkDiffReplicationStack', {
// Specialize for the account/region from the current CLI configuration.
env: {
account: process.env.CDK_DEFAULT_ACCOUNT,
region: process.env.CDK_DEFAULT_REGION,
},
// stack-level tag
tags: {
DiffReplicationTag: 'Original',
},
});
- Deploy the stack
- Make a change to the stack-level tag in the CDK code:
tags: {
DiffReplicationTag: 'Changed', //<---Changed the value
},
- Run CDK diff - Observe that the command returns
There were no differences.
- In the CloudFormation console, manually create a CloudFormation ChangeSet. Use the same template but change the value of the stack-level tag. Observe that CloudFormation does report changes for these resources.
Possible Solution
No response
Additional Information/Context
No response
CDK CLI Version
2.1141.0
Framework Version
No response
Node.js Version
v24.14.0
OS
Windows 10
Language
TypeScript
Language Version
No response
Other information
No response
Describe the bug
When you make a change to a stack-level tag in CDK,
cdk diffreturnsThere were no differenceseven though changes to stack-level tags do in fact results in updates to resources. This results in inaccurate diff results that can lead to unexpected updates.In comparison - When you make a change to a stack-level tag and then create a CloudFormation ChangeSet, CloudFormation does report this as a change. It lists a
Modifyoperation for all supported resources.The
cdk diffcommand creates (and then immediately deletes) a CloudFormation ChangeSet, and this ChangeSet does accurately report theModifybehavior, but the actualcdk diffresults in the CDK CLI still returnsno differencesdespite this. I have provided screenshots of this below.CloudFormation ChangeSet:
CDK Diff Results:
In other words, this doesn't appear to be an issue or limitation with the CloudFormation ChangeSet behavior. This specifically looks like a limitation with how CDK diff parses and returns ChangeSet results when stack-level tags are involved.
Regression Issue
Last Known Working CDK Version
No response
Expected Behavior
CDK diff should accurately report changes to resources when changes are made to stack-level tags.
Current Behavior
CDK diff incorrectly returns "There were no differences" despite the CloudFormation ChangeSet reporting differences.
Reproduction Steps
There were no differences.Possible Solution
No response
Additional Information/Context
No response
CDK CLI Version
2.1141.0
Framework Version
No response
Node.js Version
v24.14.0
OS
Windows 10
Language
TypeScript
Language Version
No response
Other information
No response