Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I disable AWS CDK Metadata for path and assets automatically?

There are 3 types of metadata CDK is writing to CFN. Version, Path, and Assets. There's documentation on how to disable version metatadata and it works fine, but i'm struggling with the rest. CLI options --path-metadata false --asset-metadata false work fine, but are kind of annoying.

I've been through CDK Source code trying to figure out key words to plug into cdk.json, but they are ignored. The following is verbose cdk output where it reads my settings and seems to ignore the 2 i care about.

cdk.json: {
  "app": "python app.py",
  "versionReporting": false,              <-- custom, works as intended
  "assetMetadata": false,                 <-- custom, doesn't seem to do anything
  "pathMetadata": false,                  <-- custom, doesn't seem to do anything
  "context": {
    "@aws-cdk/aws-apigateway:usagePlanKeyOrderInsensitiveId": true,
    "@aws-cdk/core:stackRelativeExports": "true",
    "@aws-cdk/aws-rds:lowercaseDbIdentifier": true,
    "@aws-cdk/aws-lambda:recognizeVersionProps": true,
    "@aws-cdk/core:bootstrapQualifier": "myQualifier",
    "aws:cdk:enable-path-metadata": false, <-- custom, produces namespace warnings
    "aws:cdk:enable-asset-metadata": false, <-- custom, produces namespace warnings

  }
}
merged settings: {                        <------------results of combined settings
  versionReporting: false,                <-- worked
  pathMetadata: true,                     <--didn't work
  output: 'cdk.out',
  app: 'python app.py',
  assetMetadata: true,                    <--didn't work
  context: {
    '@aws-cdk/aws-apigateway:usagePlanKeyOrderInsensitiveId': true,
    '@aws-cdk/core:stackRelativeExports': 'true',
    '@aws-cdk/aws-rds:lowercaseDbIdentifier': true,
    '@aws-cdk/aws-lambda:recognizeVersionProps': true,
    '@aws-cdk/core:bootstrapQualifier': 'myQualifier',
    'aws:cdk:enable-path-metadata': false, <-- seems like a dud
    'aws:cdk:enable-asset-metadata': false,<-- seems like a dud
  },
  debug: false,
  profile: 'mycdkIAMUser',
  toolkitBucket: {},
  staging: true,
  bundlingStacks: [ 'my-cdk-policies' ],
  lookups: true
}
like image 486
donkz Avatar asked Dec 06 '25 04:12

donkz


1 Answers

Looking at the CDK source code, it seems as if the CLI options are currently the only viable option.

Have a look at execProgram() lines 23 to 31:

const pathMetadata: boolean = config.settings.get(['pathMetadata']) ?? true;
if (pathMetadata) {
  context[cxapi.PATH_METADATA_ENABLE_CONTEXT] = true;
}

const assetMetadata: boolean = config.settings.get(['assetMetadata']) ?? true;
if (assetMetadata) {
  context[cxapi.ASSET_RESOURCE_METADATA_ENABLED_CONTEXT] = true;
}

The CLI options both default to true, which then override their respective context variables. Might warrant a bug report.

like image 167
Fabian Knittel Avatar answered Dec 10 '25 14:12

Fabian Knittel



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!