-
Notifications
You must be signed in to change notification settings - Fork 4.4k
Closed
Labels
bugThis issue is a bug.This issue is a bug.cliIssues related to the CDK CLIIssues related to the CDK CLIeffort/mediumMedium work item – several days of effortMedium work item – several days of effortp1package/toolsRelated to AWS CDK Tools or CLIRelated to AWS CDK Tools or CLI
Description
Describe the bug
When using --template with cdk diff it crashes with CDK >=2.133.0 (tested up to 2.137.0):
cdk diff --exclusively --color -vvv --template tmp/backend-cd.template.json -a cdk.out --no-change-set backend-cd
...
Cannot convert undefined or null to object
[16:46:59] TypeError: Cannot convert undefined or null to object
at Function.keys (<anonymous>)
at calculateTemplateDiff (/home/toha/.nvm/versions/node/v18.19.1/lib/node_modules/aws-cdk/lib/index.js:394:52274)
at diffTemplate (/home/toha/.nvm/versions/node/v18.19.1/lib/node_modules/aws-cdk/lib/index.js:394:50944)
at Object.fullDiff (/home/toha/.nvm/versions/node/v18.19.1/lib/node_modules/aws-cdk/lib/index.js:394:50728)
at printStackDiff (/home/toha/.nvm/versions/node/v18.19.1/lib/node_modules/aws-cdk/lib/index.js:433:166276)
at CdkToolkit.diff (/home/toha/.nvm/versions/node/v18.19.1/lib/node_modules/aws-cdk/lib/index.js:433:193682)
at async exec4 (/home/toha/.nvm/versions/node/v18.19.1/lib/node_modules/aws-cdk/lib/index.js:488:54378)
Expected Behavior
With CDK 2.132.0 it still works as before:
cdk diff --exclusively --color -vvv --template tmp/backend-cd.template.json -a cdk.out --no-change-set backend-cd
...
Resources
[~] AWS::Logs::LogGroup CodeBuildResultsLogGroup CodeBuildResultsLogGroup535329BA replace
└─ [~] LogGroupName (requires replacement)
├─ [-] /aws/codebuild/202403261110
└─ [+] /aws/codebuild/202404181350
✨ Number of stacks with differences: 1
Current Behavior
cdk diff --exclusively --color -vvv --template tmp/backend-cd.template.json -a cdk.out --no-change-set backend-cd
[17:00:30] CDK toolkit version: 2.133.0 (build dcc1e75)
[17:00:30] Command line arguments: {
_: [ 'diff' ],
exclusively: true,
e: true,
color: true,
v: 3,
verbose: 3,
template: 'tmp/backend-cd.template.json',
a: 'cdk.out',
app: 'cdk.out',
'change-set': false,
changeSet: false,
lookups: true,
'ignore-errors': false,
ignoreErrors: false,
json: false,
j: false,
debug: false,
ec2creds: undefined,
i: undefined,
'version-reporting': undefined,
versionReporting: undefined,
'path-metadata': undefined,
pathMetadata: undefined,
'asset-metadata': undefined,
assetMetadata: undefined,
'role-arn': undefined,
r: undefined,
roleArn: undefined,
staging: true,
'no-color': false,
noColor: false,
ci: false,
'context-lines': 3,
contextLines: 3,
strict: false,
'security-only': false,
securityOnly: false,
processed: false,
quiet: false,
q: false,
'$0': 'cdk',
STACKS: [ 'backend-cd' ],
'S-t-a-c-k-s': [ 'backend-cd' ]
}
[17:00:30] cdk.json: {
"app": "node --unhandled-rejections=strict dist/aws/deployment-app.js",
"build": "yarn compile",
"progress": "events"
}
[17:00:30] cdk.context.json: {
"availability-zones:account=<account_number>:region=us-east-1": [
"us-east-1a",
"us-east-1b",
"us-east-1c",
"us-east-1d",
"us-east-1e",
"us-east-1f"
],
"vpc-provider:account=<account_number>:filter.vpc-id=vpc-00fe623bb1cb307af:region=us-east-1:returnAsymmetricSubnets=true": {
"vpcId": "vpc-00fe623bb1cb307af",
"vpcCidrBlock": "10.0.0.0/16",
"availabilityZones": [],
"subnetGroups": [
{
"name": "Public",
"type": "Public",
"subnets": [
{
"subnetId": "subnet-0dcd6214a092e97bb",
"cidr": "10.0.0.0/19",
"availabilityZone": "us-east-1a",
"routeTableId": "rtb-049bcd6081554adba"
},
{
"subnetId": "subnet-0439f6c9f8173550d",
"cidr": "10.0.32.0/19",
"availabilityZone": "us-east-1b",
"routeTableId": "rtb-001a243184f9a0bf6"
},
{
"subnetId": "subnet-0c08d9ed938abd694",
"cidr": "10.0.64.0/19",
"availabilityZone": "us-east-1c",
"routeTableId": "rtb-0ecad04cad49bd826"
}
]
},
{
"name": "Private",
"type": "Private",
"subnets": [
{
"subnetId": "subnet-0085d228d3e18249e",
"cidr": "10.0.96.0/19",
"availabilityZone": "us-east-1a",
"routeTableId": "rtb-0e68dc83a7eaee52b"
},
{
"subnetId": "subnet-0c1f57177b5f27e76",
"cidr": "10.0.128.0/19",
"availabilityZone": "us-east-1b",
"routeTableId": "rtb-08af3c4138d1a26ca"
},
{
"subnetId": "subnet-07492c442575dbd2c",
"cidr": "10.0.160.0/19",
"availabilityZone": "us-east-1c",
"routeTableId": "rtb-0743875d0f322eab2"
}
]
}
]
},
"vpc-provider:account=<account_number>:filter.vpc-id=vpc-05c9125968a03fe97:region=us-east-1:returnAsymmetricSubnets=true": {
"vpcId": "vpc-05c9125968a03fe97",
"vpcCidrBlock": "10.0.0.0/16",
"availabilityZones": [],
"subnetGroups": [
{
"name": "Public",
"type": "Public",
"subnets": [
{
"subnetId": "subnet-0ae7ba04619dfc7af",
"cidr": "10.0.0.0/19",
"availabilityZone": "us-east-1a",
"routeTableId": "rtb-04b0440e27503b7c2"
},
{
"subnetId": "subnet-070b8abc78ee45cc4",
"cidr": "10.0.32.0/19",
"availabilityZone": "us-east-1b",
"routeTableId": "rtb-03f934535932dccf3"
},
{
"subnetId": "subnet-0dabcba1c8fee9aee",
"cidr": "10.0.64.0/19",
"availabilityZone": "us-east-1c",
"routeTableId": "rtb-0f6f68b9a7bbd1df1"
}
]
},
{
"name": "Private",
"type": "Private",
"subnets": [
{
"subnetId": "subnet-0b12f11b33aa588f0",
"cidr": "10.0.96.0/19",
"availabilityZone": "us-east-1a",
"routeTableId": "rtb-0c8fd18577d1db091"
},
{
"subnetId": "subnet-0c26ce5ac93015603",
"cidr": "10.0.128.0/19",
"availabilityZone": "us-east-1b",
"routeTableId": "rtb-033f5989cd6fec4db"
},
{
"subnetId": "subnet-04f624dc04d0b23ba",
"cidr": "10.0.160.0/19",
"availabilityZone": "us-east-1c",
"routeTableId": "rtb-020d6b2c9c6ce540d"
}
]
}
]
},
"ami:account=<account_number>:filters.image-type.0=machine:filters.name.0=amzn-ami-vpc-nat-*:filters.state.0=available:owners.0=amazon:region=us-east-1": "ami-04027ecc3f40c1801"
}
[17:00:30] merged settings: {
versionReporting: true,
assetMetadata: true,
pathMetadata: true,
output: 'cdk.out',
app: 'cdk.out',
build: 'yarn compile',
progress: 'events',
context: {},
debug: false,
toolkitBucket: {},
staging: true,
bundlingStacks: [ 'backend-cd' ],
lookups: true
}
[17:00:30] [trace] SdkProvider#withAwsCliCompatibleDefaults()
[17:00:30] Determining if we're on an EC2 instance.
[17:00:30] Does not look like an EC2 instance.
[17:00:30] Toolkit stack: CDKToolkit
[17:00:30] Setting "CDK_DEFAULT_REGION" environment variable to us-east-1
[17:00:30] [trace] SdkProvider#defaultAccount()
[17:00:30] [trace] SdkProvider#defaultCredentials()
[17:00:30] Resolving default credentials
[17:00:30] [trace] SDK#currentAccount()
[17:00:30] [trace] SDK#forceCredentialRetrieval()
[17:00:30] Reading cached notices from /home/toha/.cdk/cache/notices.json
[17:00:30] Retrieved account ID <account_number> from disk cache
[17:00:30] Setting "CDK_DEFAULT_ACCOUNT" environment variable to <account_number>
[17:00:30] context: {
'availability-zones:account=<account_number>:region=us-east-1': [
'us-east-1a',
'us-east-1b',
'us-east-1c',
'us-east-1d',
'us-east-1e',
'us-east-1f'
],
'vpc-provider:account=<account_number>:filter.vpc-id=vpc-00fe623bb1cb307af:region=us-east-1:returnAsymmetricSubnets=true': {
vpcId: 'vpc-00fe623bb1cb307af',
vpcCidrBlock: '10.0.0.0/16',
availabilityZones: [],
subnetGroups: [ [Object], [Object] ]
},
'vpc-provider:account=<account_number>:filter.vpc-id=vpc-05c9125968a03fe97:region=us-east-1:returnAsymmetricSubnets=true': {
vpcId: 'vpc-05c9125968a03fe97',
vpcCidrBlock: '10.0.0.0/16',
availabilityZones: [],
subnetGroups: [ [Object], [Object] ]
},
'ami:account=<account_number>:filters.image-type.0=machine:filters.name.0=amzn-ami-vpc-nat-*:filters.state.0=available:owners.0=amazon:region=us-east-1': 'ami-04027ecc3f40c1801',
'aws:cdk:enable-path-metadata': true,
'aws:cdk:enable-asset-metadata': true,
'aws:cdk:version-reporting': true,
'aws:cdk:bundling-stacks': [ 'backend-cd' ]
}
yarn run v1.22.22
$ tsc -b
Done in 0.50s.
[17:00:31] --app points to a cloud assembly, so we bypass synth
[17:00:31] Reading cached notices from /home/toha/.cdk/cache/notices.json
Cannot convert undefined or null to object
[17:00:31] TypeError: Cannot convert undefined or null to object
at Function.keys (<anonymous>)
at calculateTemplateDiff (/home/toha/.nvm/versions/node/v18.19.1/lib/node_modules/aws-cdk/lib/index.js:394:52274)
at diffTemplate (/home/toha/.nvm/versions/node/v18.19.1/lib/node_modules/aws-cdk/lib/index.js:394:50944)
at Object.fullDiff (/home/toha/.nvm/versions/node/v18.19.1/lib/node_modules/aws-cdk/lib/index.js:394:50728)
at printStackDiff (/home/toha/.nvm/versions/node/v18.19.1/lib/node_modules/aws-cdk/lib/index.js:433:166276)
at CdkToolkit.diff (/home/toha/.nvm/versions/node/v18.19.1/lib/node_modules/aws-cdk/lib/index.js:433:193682)
at async exec4 (/home/toha/.nvm/versions/node/v18.19.1/lib/node_modules/aws-cdk/lib/index.js:488:54378)
Notice if --template flag is removed, it works fine:
cdk diff --exclusively --color -vvv -a cdk.out --no-change-set backend-cd
[17:16:06] CDK toolkit version: 2.133.0 (build dcc1e75)
[17:16:06] Command line arguments: {
_: [ 'diff' ],
exclusively: true,
e: true,
color: true,
v: 3,
verbose: 3,
a: 'cdk.out',
app: 'cdk.out',
'change-set': false,
changeSet: false,
lookups: true,
'ignore-errors': false,
ignoreErrors: false,
json: false,
j: false,
debug: false,
ec2creds: undefined,
i: undefined,
'version-reporting': undefined,
versionReporting: undefined,
'path-metadata': undefined,
pathMetadata: undefined,
'asset-metadata': undefined,
assetMetadata: undefined,
'role-arn': undefined,
r: undefined,
roleArn: undefined,
staging: true,
'no-color': false,
noColor: false,
ci: false,
'context-lines': 3,
contextLines: 3,
strict: false,
'security-only': false,
securityOnly: false,
processed: false,
quiet: false,
q: false,
'$0': 'cdk',
STACKS: [ 'backend-cd' ],
'S-t-a-c-k-s': [ 'backend-cd' ]
}
[17:16:06] cdk.json: {
"app": "node --unhandled-rejections=strict dist/aws/deployment-app.js",
"build": "yarn compile",
"progress": "events"
}
[17:16:06] cdk.context.json: {
"availability-zones:account=<account_number>:region=us-east-1": [
"us-east-1a",
"us-east-1b",
"us-east-1c",
"us-east-1d",
"us-east-1e",
"us-east-1f"
],
"vpc-provider:account=<account_number>:filter.vpc-id=vpc-00fe623bb1cb307af:region=us-east-1:returnAsymmetricSubnets=true": {
"vpcId": "vpc-00fe623bb1cb307af",
"vpcCidrBlock": "10.0.0.0/16",
"availabilityZones": [],
"subnetGroups": [
{
"name": "Public",
"type": "Public",
"subnets": [
{
"subnetId": "subnet-0dcd6214a092e97bb",
"cidr": "10.0.0.0/19",
"availabilityZone": "us-east-1a",
"routeTableId": "rtb-049bcd6081554adba"
},
{
"subnetId": "subnet-0439f6c9f8173550d",
"cidr": "10.0.32.0/19",
"availabilityZone": "us-east-1b",
"routeTableId": "rtb-001a243184f9a0bf6"
},
{
"subnetId": "subnet-0c08d9ed938abd694",
"cidr": "10.0.64.0/19",
"availabilityZone": "us-east-1c",
"routeTableId": "rtb-0ecad04cad49bd826"
}
]
},
{
"name": "Private",
"type": "Private",
"subnets": [
{
"subnetId": "subnet-0085d228d3e18249e",
"cidr": "10.0.96.0/19",
"availabilityZone": "us-east-1a",
"routeTableId": "rtb-0e68dc83a7eaee52b"
},
{
"subnetId": "subnet-0c1f57177b5f27e76",
"cidr": "10.0.128.0/19",
"availabilityZone": "us-east-1b",
"routeTableId": "rtb-08af3c4138d1a26ca"
},
{
"subnetId": "subnet-07492c442575dbd2c",
"cidr": "10.0.160.0/19",
"availabilityZone": "us-east-1c",
"routeTableId": "rtb-0743875d0f322eab2"
}
]
}
]
},
"vpc-provider:account=<account_number>:filter.vpc-id=vpc-05c9125968a03fe97:region=us-east-1:returnAsymmetricSubnets=true": {
"vpcId": "vpc-05c9125968a03fe97",
"vpcCidrBlock": "10.0.0.0/16",
"availabilityZones": [],
"subnetGroups": [
{
"name": "Public",
"type": "Public",
"subnets": [
{
"subnetId": "subnet-0ae7ba04619dfc7af",
"cidr": "10.0.0.0/19",
"availabilityZone": "us-east-1a",
"routeTableId": "rtb-04b0440e27503b7c2"
},
{
"subnetId": "subnet-070b8abc78ee45cc4",
"cidr": "10.0.32.0/19",
"availabilityZone": "us-east-1b",
"routeTableId": "rtb-03f934535932dccf3"
},
{
"subnetId": "subnet-0dabcba1c8fee9aee",
"cidr": "10.0.64.0/19",
"availabilityZone": "us-east-1c",
"routeTableId": "rtb-0f6f68b9a7bbd1df1"
}
]
},
{
"name": "Private",
"type": "Private",
"subnets": [
{
"subnetId": "subnet-0b12f11b33aa588f0",
"cidr": "10.0.96.0/19",
"availabilityZone": "us-east-1a",
"routeTableId": "rtb-0c8fd18577d1db091"
},
{
"subnetId": "subnet-0c26ce5ac93015603",
"cidr": "10.0.128.0/19",
"availabilityZone": "us-east-1b",
"routeTableId": "rtb-033f5989cd6fec4db"
},
{
"subnetId": "subnet-04f624dc04d0b23ba",
"cidr": "10.0.160.0/19",
"availabilityZone": "us-east-1c",
"routeTableId": "rtb-020d6b2c9c6ce540d"
}
]
}
]
},
"ami:account=<account_number>:filters.image-type.0=machine:filters.name.0=amzn-ami-vpc-nat-*:filters.state.0=available:owners.0=amazon:region=us-east-1": "ami-04027ecc3f40c1801"
}
[17:16:06] merged settings: {
versionReporting: true,
assetMetadata: true,
pathMetadata: true,
output: 'cdk.out',
app: 'cdk.out',
build: 'yarn compile',
progress: 'events',
context: {},
debug: false,
toolkitBucket: {},
staging: true,
bundlingStacks: [ 'backend-cd' ],
lookups: true
}
[17:16:06] [trace] SdkProvider#withAwsCliCompatibleDefaults()
[17:16:06] Determining if we're on an EC2 instance.
[17:16:06] Does not look like an EC2 instance.
[17:16:06] Toolkit stack: CDKToolkit
[17:16:06] Setting "CDK_DEFAULT_REGION" environment variable to us-east-1
[17:16:06] [trace] SdkProvider#defaultAccount()
[17:16:06] [trace] SdkProvider#defaultCredentials()
[17:16:06] Resolving default credentials
[17:16:06] [trace] SDK#currentAccount()
[17:16:06] [trace] SDK#forceCredentialRetrieval()
[17:16:06] Reading cached notices from /home/toha/.cdk/cache/notices.json
[17:16:06] Retrieved account ID <account_number> from disk cache
[17:16:06] Setting "CDK_DEFAULT_ACCOUNT" environment variable to <account_number>
[17:16:06] context: {
'availability-zones:account=<account_number>:region=us-east-1': [
'us-east-1a',
'us-east-1b',
'us-east-1c',
'us-east-1d',
'us-east-1e',
'us-east-1f'
],
'vpc-provider:account=<account_number>:filter.vpc-id=vpc-00fe623bb1cb307af:region=us-east-1:returnAsymmetricSubnets=true': {
vpcId: 'vpc-00fe623bb1cb307af',
vpcCidrBlock: '10.0.0.0/16',
availabilityZones: [],
subnetGroups: [ [Object], [Object] ]
},
'vpc-provider:account=<account_number>:filter.vpc-id=vpc-05c9125968a03fe97:region=us-east-1:returnAsymmetricSubnets=true': {
vpcId: 'vpc-05c9125968a03fe97',
vpcCidrBlock: '10.0.0.0/16',
availabilityZones: [],
subnetGroups: [ [Object], [Object] ]
},
'ami:account=<account_number>:filters.image-type.0=machine:filters.name.0=amzn-ami-vpc-nat-*:filters.state.0=available:owners.0=amazon:region=us-east-1': 'ami-04027ecc3f40c1801',
'aws:cdk:enable-path-metadata': true,
'aws:cdk:enable-asset-metadata': true,
'aws:cdk:version-reporting': true,
'aws:cdk:bundling-stacks': [ 'backend-cd' ]
}
yarn run v1.22.22
$ tsc -b
Done in 0.54s.
[17:16:07] --app points to a cloud assembly, so we bypass synth
Stack backend-cd
[17:16:07] [trace] SdkProvider#resolveEnvironment()
[17:16:07] [trace] SdkProvider#defaultAccount()
[17:16:07] [trace] SdkProvider#baseCredentialsPartition()
[17:16:07] [trace] SdkProvider#resolveEnvironment()
[17:16:07] [trace] SdkProvider#obtainBaseCredentials()
[17:16:07] [trace] SdkProvider#defaultAccount()
[17:16:07] [trace] SdkProvider#defaultCredentials()
[17:16:07] [trace] SDK#currentAccount()
[17:16:07] [trace] SDK#forceCredentialRetrieval()
[17:16:07] Retrieved account ID <account_number> from disk cache
[17:16:07] [trace] SdkProvider#forEnvironment()
[17:16:07] [trace] SdkProvider#resolveEnvironment()
[17:16:07] [trace] SdkProvider#obtainBaseCredentials()
[17:16:07] [trace] SdkProvider#defaultAccount()
[17:16:07] [trace] SdkProvider#defaultCredentials()
[17:16:07] [trace] SdkProvider#withAssumedRole()
[17:16:07] Assuming role 'arn:aws:iam::<account_number>:role/cdk-hnb659fds-lookup-role-<account_number>-us-east-1'.
[17:16:07] [trace] SDK#forceCredentialRetrieval()
[17:16:08] [trace] SDK#ssm()
[17:16:08] [trace] SDK#wrapServiceErrorHandling()
[17:16:08] [AWS ssm 200 0.708s 0 retries] getParameter({ Name: '/cdk-bootstrap/hnb659fds/version' })
[17:16:08] [trace] SDK#cloudFormation()
[17:16:08] [trace] SDK#wrapServiceErrorHandling()
[17:16:09] [AWS cloudformation 200 0.548s 0 retries] describeStacks({ StackName: 'backend-cd' })
[17:16:10] [AWS cloudformation 200 1.063s 0 retries] getTemplate({ StackName: 'backend-cd', TemplateStage: 'Original' })
[17:16:10] [trace] SdkProvider#resolveEnvironment()
[17:16:10] [trace] SdkProvider#defaultAccount()
Resources
[~] AWS::Logs::LogGroup CodeBuildResultsLogGroup CodeBuildResultsLogGroup535329BA replace
└─ [~] LogGroupName (requires replacement)
├─ [-] /aws/codebuild/202403261110
└─ [+] /aws/codebuild/202404181358
✨ Number of stacks with differences: 1
[17:16:10] Reading cached notices from /home/toha/.cdk/cache/notices.json
Reproduction Steps
- Deploy a stack called
backend-cdinto CFN with CDK - Go to CloudFormation and copy the stack template and save it under
tmp/ - Synth stack into
cdk.out:
cdk synth -a 'dist/aws/cloudformation-cd.js' - Run diff to compare local stack template content vs deployed stack template pulled from CloudFormation (removing
--no-change-setdoesnt help):
cdk diff --exclusively --color -vvv --template tmp/backend-cd.template.json -a cdk.out --no-change-set backend-cd
[17:00:30] CDK toolkit version: 2.133.0 (build dcc1e75)
[17:00:30] Command line arguments: {
_: [ 'diff' ],
exclusively: true,
e: true,
color: true,
v: 3,
verbose: 3,
template: 'tmp/backend-cd.template.json',
a: 'cdk.out',
app: 'cdk.out',
'change-set': false,
changeSet: false,
lookups: true,
'ignore-errors': false,
ignoreErrors: false,
json: false,
j: false,
debug: false,
ec2creds: undefined,
i: undefined,
'version-reporting': undefined,
versionReporting: undefined,
'path-metadata': undefined,
pathMetadata: undefined,
'asset-metadata': undefined,
assetMetadata: undefined,
'role-arn': undefined,
r: undefined,
roleArn: undefined,
staging: true,
'no-color': false,
noColor: false,
ci: false,
'context-lines': 3,
contextLines: 3,
strict: false,
'security-only': false,
securityOnly: false,
processed: false,
quiet: false,
q: false,
'$0': 'cdk',
STACKS: [ 'backend-cd' ],
'S-t-a-c-k-s': [ 'backend-cd' ]
}
[17:00:30] cdk.json: {
"app": "node --unhandled-rejections=strict dist/aws/deployment-app.js",
"build": "yarn compile",
"progress": "events"
}
[17:00:30] cdk.context.json: {
"availability-zones:account=<account_number>:region=us-east-1": [
"us-east-1a",
"us-east-1b",
"us-east-1c",
"us-east-1d",
"us-east-1e",
"us-east-1f"
],
"vpc-provider:account=<account_number>:filter.vpc-id=vpc-00fe623bb1cb307af:region=us-east-1:returnAsymmetricSubnets=true": {
"vpcId": "vpc-00fe623bb1cb307af",
"vpcCidrBlock": "10.0.0.0/16",
"availabilityZones": [],
"subnetGroups": [
{
"name": "Public",
"type": "Public",
"subnets": [
{
"subnetId": "subnet-0dcd6214a092e97bb",
"cidr": "10.0.0.0/19",
"availabilityZone": "us-east-1a",
"routeTableId": "rtb-049bcd6081554adba"
},
{
"subnetId": "subnet-0439f6c9f8173550d",
"cidr": "10.0.32.0/19",
"availabilityZone": "us-east-1b",
"routeTableId": "rtb-001a243184f9a0bf6"
},
{
"subnetId": "subnet-0c08d9ed938abd694",
"cidr": "10.0.64.0/19",
"availabilityZone": "us-east-1c",
"routeTableId": "rtb-0ecad04cad49bd826"
}
]
},
{
"name": "Private",
"type": "Private",
"subnets": [
{
"subnetId": "subnet-0085d228d3e18249e",
"cidr": "10.0.96.0/19",
"availabilityZone": "us-east-1a",
"routeTableId": "rtb-0e68dc83a7eaee52b"
},
{
"subnetId": "subnet-0c1f57177b5f27e76",
"cidr": "10.0.128.0/19",
"availabilityZone": "us-east-1b",
"routeTableId": "rtb-08af3c4138d1a26ca"
},
{
"subnetId": "subnet-07492c442575dbd2c",
"cidr": "10.0.160.0/19",
"availabilityZone": "us-east-1c",
"routeTableId": "rtb-0743875d0f322eab2"
}
]
}
]
},
"vpc-provider:account=<account_number>:filter.vpc-id=vpc-05c9125968a03fe97:region=us-east-1:returnAsymmetricSubnets=true": {
"vpcId": "vpc-05c9125968a03fe97",
"vpcCidrBlock": "10.0.0.0/16",
"availabilityZones": [],
"subnetGroups": [
{
"name": "Public",
"type": "Public",
"subnets": [
{
"subnetId": "subnet-0ae7ba04619dfc7af",
"cidr": "10.0.0.0/19",
"availabilityZone": "us-east-1a",
"routeTableId": "rtb-04b0440e27503b7c2"
},
{
"subnetId": "subnet-070b8abc78ee45cc4",
"cidr": "10.0.32.0/19",
"availabilityZone": "us-east-1b",
"routeTableId": "rtb-03f934535932dccf3"
},
{
"subnetId": "subnet-0dabcba1c8fee9aee",
"cidr": "10.0.64.0/19",
"availabilityZone": "us-east-1c",
"routeTableId": "rtb-0f6f68b9a7bbd1df1"
}
]
},
{
"name": "Private",
"type": "Private",
"subnets": [
{
"subnetId": "subnet-0b12f11b33aa588f0",
"cidr": "10.0.96.0/19",
"availabilityZone": "us-east-1a",
"routeTableId": "rtb-0c8fd18577d1db091"
},
{
"subnetId": "subnet-0c26ce5ac93015603",
"cidr": "10.0.128.0/19",
"availabilityZone": "us-east-1b",
"routeTableId": "rtb-033f5989cd6fec4db"
},
{
"subnetId": "subnet-04f624dc04d0b23ba",
"cidr": "10.0.160.0/19",
"availabilityZone": "us-east-1c",
"routeTableId": "rtb-020d6b2c9c6ce540d"
}
]
}
]
},
"ami:account=<account_number>:filters.image-type.0=machine:filters.name.0=amzn-ami-vpc-nat-*:filters.state.0=available:owners.0=amazon:region=us-east-1": "ami-04027ecc3f40c1801"
}
[17:00:30] merged settings: {
versionReporting: true,
assetMetadata: true,
pathMetadata: true,
output: 'cdk.out',
app: 'cdk.out',
build: 'yarn compile',
progress: 'events',
context: {},
debug: false,
toolkitBucket: {},
staging: true,
bundlingStacks: [ 'backend-cd' ],
lookups: true
}
[17:00:30] [trace] SdkProvider#withAwsCliCompatibleDefaults()
[17:00:30] Determining if we're on an EC2 instance.
[17:00:30] Does not look like an EC2 instance.
[17:00:30] Toolkit stack: CDKToolkit
[17:00:30] Setting "CDK_DEFAULT_REGION" environment variable to us-east-1
[17:00:30] [trace] SdkProvider#defaultAccount()
[17:00:30] [trace] SdkProvider#defaultCredentials()
[17:00:30] Resolving default credentials
[17:00:30] [trace] SDK#currentAccount()
[17:00:30] [trace] SDK#forceCredentialRetrieval()
[17:00:30] Reading cached notices from /home/toha/.cdk/cache/notices.json
[17:00:30] Retrieved account ID <account_number> from disk cache
[17:00:30] Setting "CDK_DEFAULT_ACCOUNT" environment variable to <account_number>
[17:00:30] context: {
'availability-zones:account=<account_number>:region=us-east-1': [
'us-east-1a',
'us-east-1b',
'us-east-1c',
'us-east-1d',
'us-east-1e',
'us-east-1f'
],
'vpc-provider:account=<account_number>:filter.vpc-id=vpc-00fe623bb1cb307af:region=us-east-1:returnAsymmetricSubnets=true': {
vpcId: 'vpc-00fe623bb1cb307af',
vpcCidrBlock: '10.0.0.0/16',
availabilityZones: [],
subnetGroups: [ [Object], [Object] ]
},
'vpc-provider:account=<account_number>:filter.vpc-id=vpc-05c9125968a03fe97:region=us-east-1:returnAsymmetricSubnets=true': {
vpcId: 'vpc-05c9125968a03fe97',
vpcCidrBlock: '10.0.0.0/16',
availabilityZones: [],
subnetGroups: [ [Object], [Object] ]
},
'ami:account=<account_number>:filters.image-type.0=machine:filters.name.0=amzn-ami-vpc-nat-*:filters.state.0=available:owners.0=amazon:region=us-east-1': 'ami-04027ecc3f40c1801',
'aws:cdk:enable-path-metadata': true,
'aws:cdk:enable-asset-metadata': true,
'aws:cdk:version-reporting': true,
'aws:cdk:bundling-stacks': [ 'backend-cd' ]
}
yarn run v1.22.22
$ tsc -b
Done in 0.50s.
[17:00:31] --app points to a cloud assembly, so we bypass synth
[17:00:31] Reading cached notices from /home/toha/.cdk/cache/notices.json
Cannot convert undefined or null to object
[17:00:31] TypeError: Cannot convert undefined or null to object
at Function.keys (<anonymous>)
at calculateTemplateDiff (/home/toha/.nvm/versions/node/v18.19.1/lib/node_modules/aws-cdk/lib/index.js:394:52274)
at diffTemplate (/home/toha/.nvm/versions/node/v18.19.1/lib/node_modules/aws-cdk/lib/index.js:394:50944)
at Object.fullDiff (/home/toha/.nvm/versions/node/v18.19.1/lib/node_modules/aws-cdk/lib/index.js:394:50728)
at printStackDiff (/home/toha/.nvm/versions/node/v18.19.1/lib/node_modules/aws-cdk/lib/index.js:433:166276)
at CdkToolkit.diff (/home/toha/.nvm/versions/node/v18.19.1/lib/node_modules/aws-cdk/lib/index.js:433:193682)
at async exec4 (/home/toha/.nvm/versions/node/v18.19.1/lib/node_modules/aws-cdk/lib/index.js:488:54378)
Possible Solution
No response
Additional Information/Context
Logs of a working run with v2.132.0:
cdk diff --exclusively --color -vvv --template tmp/backend-cd.template.json -a cdk.out --no-change-set backend-cd
[16:51:09] CDK toolkit version: 2.132.0 (build 9a51c89)
[16:51:09] Command line arguments: {
_: [ 'diff' ],
exclusively: true,
e: true,
color: true,
v: 3,
verbose: 3,
template: 'tmp/backend-cd.template.json',
a: 'cdk.out',
app: 'cdk.out',
'change-set': false,
changeSet: false,
lookups: true,
'ignore-errors': false,
ignoreErrors: false,
json: false,
j: false,
debug: false,
ec2creds: undefined,
i: undefined,
'version-reporting': undefined,
versionReporting: undefined,
'path-metadata': undefined,
pathMetadata: undefined,
'asset-metadata': undefined,
assetMetadata: undefined,
'role-arn': undefined,
r: undefined,
roleArn: undefined,
staging: true,
'no-color': false,
noColor: false,
ci: false,
'context-lines': 3,
contextLines: 3,
strict: false,
'security-only': false,
securityOnly: false,
processed: false,
quiet: false,
q: false,
'$0': 'cdk',
STACKS: [ 'backend-cd' ],
'S-t-a-c-k-s': [ 'backend-cd' ]
}
[16:51:09] cdk.json: {
"app": "node --unhandled-rejections=strict dist/aws/deployment-app.js",
"build": "yarn compile",
"progress": "events"
}
[16:51:09] cdk.context.json: {
"availability-zones:account=<account_number>:region=us-east-1": [
"us-east-1a",
"us-east-1b",
"us-east-1c",
"us-east-1d",
"us-east-1e",
"us-east-1f"
],
"vpc-provider:account=<account_number>:filter.vpc-id=vpc-00fe623bb1cb307af:region=us-east-1:returnAsymmetricSubnets=true": {
"vpcId": "vpc-00fe623bb1cb307af",
"vpcCidrBlock": "10.0.0.0/16",
"availabilityZones": [],
"subnetGroups": [
{
"name": "Public",
"type": "Public",
"subnets": [
{
"subnetId": "subnet-0dcd6214a092e97bb",
"cidr": "10.0.0.0/19",
"availabilityZone": "us-east-1a",
"routeTableId": "rtb-049bcd6081554adba"
},
{
"subnetId": "subnet-0439f6c9f8173550d",
"cidr": "10.0.32.0/19",
"availabilityZone": "us-east-1b",
"routeTableId": "rtb-001a243184f9a0bf6"
},
{
"subnetId": "subnet-0c08d9ed938abd694",
"cidr": "10.0.64.0/19",
"availabilityZone": "us-east-1c",
"routeTableId": "rtb-0ecad04cad49bd826"
}
]
},
{
"name": "Private",
"type": "Private",
"subnets": [
{
"subnetId": "subnet-0085d228d3e18249e",
"cidr": "10.0.96.0/19",
"availabilityZone": "us-east-1a",
"routeTableId": "rtb-0e68dc83a7eaee52b"
},
{
"subnetId": "subnet-0c1f57177b5f27e76",
"cidr": "10.0.128.0/19",
"availabilityZone": "us-east-1b",
"routeTableId": "rtb-08af3c4138d1a26ca"
},
{
"subnetId": "subnet-07492c442575dbd2c",
"cidr": "10.0.160.0/19",
"availabilityZone": "us-east-1c",
"routeTableId": "rtb-0743875d0f322eab2"
}
]
}
]
},
"vpc-provider:account=<account_number>:filter.vpc-id=vpc-05c9125968a03fe97:region=us-east-1:returnAsymmetricSubnets=true": {
"vpcId": "vpc-05c9125968a03fe97",
"vpcCidrBlock": "10.0.0.0/16",
"availabilityZones": [],
"subnetGroups": [
{
"name": "Public",
"type": "Public",
"subnets": [
{
"subnetId": "subnet-0ae7ba04619dfc7af",
"cidr": "10.0.0.0/19",
"availabilityZone": "us-east-1a",
"routeTableId": "rtb-04b0440e27503b7c2"
},
{
"subnetId": "subnet-070b8abc78ee45cc4",
"cidr": "10.0.32.0/19",
"availabilityZone": "us-east-1b",
"routeTableId": "rtb-03f934535932dccf3"
},
{
"subnetId": "subnet-0dabcba1c8fee9aee",
"cidr": "10.0.64.0/19",
"availabilityZone": "us-east-1c",
"routeTableId": "rtb-0f6f68b9a7bbd1df1"
}
]
},
{
"name": "Private",
"type": "Private",
"subnets": [
{
"subnetId": "subnet-0b12f11b33aa588f0",
"cidr": "10.0.96.0/19",
"availabilityZone": "us-east-1a",
"routeTableId": "rtb-0c8fd18577d1db091"
},
{
"subnetId": "subnet-0c26ce5ac93015603",
"cidr": "10.0.128.0/19",
"availabilityZone": "us-east-1b",
"routeTableId": "rtb-033f5989cd6fec4db"
},
{
"subnetId": "subnet-04f624dc04d0b23ba",
"cidr": "10.0.160.0/19",
"availabilityZone": "us-east-1c",
"routeTableId": "rtb-020d6b2c9c6ce540d"
}
]
}
]
},
"ami:account=<account_number>:filters.image-type.0=machine:filters.name.0=amzn-ami-vpc-nat-*:filters.state.0=available:owners.0=amazon:region=us-east-1": "ami-04027ecc3f40c1801"
}
[16:51:09] merged settings: {
versionReporting: true,
assetMetadata: true,
pathMetadata: true,
output: 'cdk.out',
app: 'cdk.out',
build: 'yarn compile',
progress: 'events',
context: {},
debug: false,
toolkitBucket: {},
staging: true,
bundlingStacks: [ 'backend-cd' ],
lookups: true
}
[16:51:09] [trace] SdkProvider#withAwsCliCompatibleDefaults()
[16:51:09] Determining if we're on an EC2 instance.
[16:51:09] Does not look like an EC2 instance.
[16:51:09] Toolkit stack: CDKToolkit
[16:51:09] Setting "CDK_DEFAULT_REGION" environment variable to us-east-1
[16:51:09] [trace] SdkProvider#defaultAccount()
[16:51:09] [trace] SdkProvider#defaultCredentials()
[16:51:09] Resolving default credentials
[16:51:09] [trace] SDK#currentAccount()
[16:51:09] [trace] SDK#forceCredentialRetrieval()
[16:51:09] Reading cached notices from /home/toha/.cdk/cache/notices.json
[16:51:09] Retrieved account ID <account_number> from disk cache
[16:51:09] Setting "CDK_DEFAULT_ACCOUNT" environment variable to <account_number>
[16:51:09] context: {
'availability-zones:account=<account_number>:region=us-east-1': [
'us-east-1a',
'us-east-1b',
'us-east-1c',
'us-east-1d',
'us-east-1e',
'us-east-1f'
],
'vpc-provider:account=<account_number>:filter.vpc-id=vpc-00fe623bb1cb307af:region=us-east-1:returnAsymmetricSubnets=true': {
vpcId: 'vpc-00fe623bb1cb307af',
vpcCidrBlock: '10.0.0.0/16',
availabilityZones: [],
subnetGroups: [ [Object], [Object] ]
},
'vpc-provider:account=<account_number>:filter.vpc-id=vpc-05c9125968a03fe97:region=us-east-1:returnAsymmetricSubnets=true': {
vpcId: 'vpc-05c9125968a03fe97',
vpcCidrBlock: '10.0.0.0/16',
availabilityZones: [],
subnetGroups: [ [Object], [Object] ]
},
'ami:account=<account_number>:filters.image-type.0=machine:filters.name.0=amzn-ami-vpc-nat-*:filters.state.0=available:owners.0=amazon:region=us-east-1': 'ami-04027ecc3f40c1801',
'aws:cdk:enable-path-metadata': true,
'aws:cdk:enable-asset-metadata': true,
'aws:cdk:version-reporting': true,
'aws:cdk:bundling-stacks': [ 'backend-cd' ]
}
yarn run v1.22.22
$ tsc -b
Done in 0.51s.
[16:51:10] --app points to a cloud assembly, so we bypass synth
[16:51:10] [trace] SdkProvider#resolveEnvironment()
[16:51:10] [trace] SdkProvider#defaultAccount()
[16:51:10] [trace] SdkProvider#baseCredentialsPartition()
[16:51:10] [trace] SdkProvider#resolveEnvironment()
[16:51:10] [trace] SdkProvider#obtainBaseCredentials()
[16:51:10] [trace] SdkProvider#defaultAccount()
[16:51:10] [trace] SdkProvider#defaultCredentials()
[16:51:10] [trace] SDK#currentAccount()
[16:51:10] [trace] SDK#forceCredentialRetrieval()
[16:51:10] Retrieved account ID <account_number> from disk cache
[16:51:10] [trace] SdkProvider#forEnvironment()
[16:51:10] [trace] SdkProvider#resolveEnvironment()
[16:51:10] [trace] SdkProvider#obtainBaseCredentials()
[16:51:10] [trace] SdkProvider#defaultAccount()
[16:51:10] [trace] SdkProvider#defaultCredentials()
[16:51:10] [trace] SdkProvider#withAssumedRole()
[16:51:10] Assuming role 'arn:aws:iam::<account_number>:role/cdk-hnb659fds-deploy-role-<account_number>-us-east-1'.
[16:51:10] [trace] SDK#forceCredentialRetrieval()
[16:51:11] [trace] SDK#cloudFormation()
[16:51:11] [trace] SDK#wrapServiceErrorHandling()
[16:51:11] [AWS cloudformation 200 0.722s 0 retries] describeStacks({ StackName: 'backend-cd' })
Resources
[~] AWS::Logs::LogGroup CodeBuildResultsLogGroup CodeBuildResultsLogGroup535329BA replace
└─ [~] LogGroupName (requires replacement)
├─ [-] /aws/codebuild/202403261110
└─ [+] /aws/codebuild/202404181350
✨ Number of stacks with differences: 1
[16:51:12] Reading cached notices from /home/toha/.cdk/cache/notices.json
NOTICES (What's this? https://github.com/aws/aws-cdk/wiki/CLI-Notices)
29420 (cli): List stack output change issue.
Overview: v2.132.0 introduced functionality to the cdk list command to
display stack dependencies. This feature introduced a change
that displays stack ids over displayName altering the
existing list functionality
Affected versions: cli: 2.132.0
More information at: https://github.com/aws/aws-cdk/issues/29420
29483 (cli): Upgrading to v2.132.0 or v2.132.1 breaks cdk diff functionality
Overview: cdk diff functionality used to rely on assuming lookup-role.
With a recent change present in v2.132.0 and v2.132.1, it is
now trying to assume deploy-role with the lookup-role. This
leads to an authorization error if permissions were not
defined to assume deploy-role.
Affected versions: cli: >=2.132.0 <=2.132.1
More information at: https://github.com/aws/aws-cdk/issues/29483
CDK CLI Version
2.133.0 (build dcc1e75)
Framework Version
No response
Node.js Version
v18.19.1
OS
Ubuntu 22.04.4 LTS
Language
TypeScript
Language Version
4.7.3
Other information
Looking at commits between 2.132.0 and 2.133.0 there were at least two PRs merged related to diffing but Im not competent on CDK to understand if they could be related: https://github.com/aws/aws-cdk/commits/main/?since=2024-03-09&until=2024-03-15
Toltar
Metadata
Metadata
Assignees
Labels
bugThis issue is a bug.This issue is a bug.cliIssues related to the CDK CLIIssues related to the CDK CLIeffort/mediumMedium work item – several days of effortMedium work item – several days of effortp1package/toolsRelated to AWS CDK Tools or CLIRelated to AWS CDK Tools or CLI