Skip to content

intercept6/cdk-checkers

Repository files navigation

CDK checkers

Overview

It is a library that uses Aspects to test whether the constructs in the stack generated by AWS CDK meet the requirements.

Install

# use npm
npm install --save-dev cdk-checkers
# use yarn
yarn add -D  cdk-checkers

Example

Test

In test

import * as cdk from '@aws-cdk/core';
import * as assert from '@aws-cdk/assert';
import * as CdkAspectDemo from '../lib/cdk-aspect-demo-stack';
import * as checkers from 'cdk-checkers';

test('aspects test', () => {
  const app = new cdk.App();
  const stack = new CdkAspectDemo.CdkAspectDemoStack(app, 'test-stack');

  cdk.Aspects.of(stack).add(new checkers.BucketVersioningChecker());

  const assembly = app.synth();
  const {messages} = assembly.getStackArtifact(stack.artifactId);

  expect(messages).toHaveLength(1);
  expect(messages[0].entry.type).toEqual('aws:cdk:error');
  expect(messages[0].entry.data).toEqual('Bucket versioning is no enabled');
});

In entrypoint

#!/usr/bin/env node
import 'source-map-support/register';
import * as cdk from '@aws-cdk/core';
import * as CdkAspectDemo from '../lib/cdk-aspect-demo-stack';
import * as checkers from 'cdk-checkers';

const app = new cdk.App();
const cdkAspectDemoStack = new CdkAspectDemo.CdkAspectDemoStack(
  app,
  'CdkAspectDemoStack'
);

cdk.Aspects.of(cdkAspectDemoStack).add(new checkers.BucketVersioningChecker());

Fix CloudFormation Template with a checker

#!/usr/bin/env node
import 'source-map-support/register';
import * as cdk from '@aws-cdk/core';
import * as CdkAspectDemo from '../lib/cdk-aspect-demo-stack';
import * as checkers from 'cdk-checkers';

const app = new cdk.App();
const cdkAspectDemoStack = new CdkAspectDemo.CdkAspectDemoStack(
  app,
  'CdkAspectDemoStack'
);

cdk.Aspects.of(cdkAspectDemoStack).add(
  new checkers.BucketVersioningChecker({fix: true})
);