@jnj/vdxp-be-lib-cdk-core
Table of Contents
- AWS Cloud Development Kit (AWS CDK)
- @jnj/vdxp-be-lib-cdk-core
- Installation
- Structure
- Usage
- [Library docs](#library-docsdocsreadmemd)
AWS Cloud Development Kit (AWS CDK)
Developer Guide | CDK Workshop | Getting Started | API Reference | Examples |
The AWS Cloud Development Kit (AWS CDK) is an open-source software development framework to define cloud infrastructure in code and provision it through AWS CloudFormation. It offers a high-level object-oriented abstraction to define AWS resources imperatively using the power of modern programming languages.
Developers use the CDK framework to define reusable cloud components called constructs, which are composed together into stacks, forming a "CDK app".
@jnj/vdxp-be-lib-cdk-core
This construct library allows to use prepared services created by AWS CDK
Installation
$ npm install @jnj/vdxp-be-lib-cdk-core --save-dev
Structure
This library contains several levels of abstraction:
-
construct
- Low level of abstraction. Provides classes to create one resource. The same level of abstraction thataws-cdk
provides. -
kit
- Mid level of abstraction. Provides classes to create fully configured AWS service e.g. Lambda Function with log groups, policies, etc. Usesconstruct
s as building blocks. -
suit
- High level of abstraction. Provides classes to create integrated AWS services e.g. API Gateway with Lambda Function handler with all necessary integrations and policies. Useskit
s as building blocks. -
constant
- Contains constants for resources. -
util
- Contains util functions.
Usage
Get environment variables to configure stack
import { VdxpEnvProps } from '@jnj/vdxp-be-lib-cdk-core';
const envProps = new VdxpEnvProps();
console.log('Git commit SHA:', envProps.gitCommitSha);
cdk.json
context variables to configure stack
Get import { VdxpCdkPropsBase } from '@jnj/vdxp-be-lib-cdk-core';
const contextProps = new VdxpCdkPropsBase();
console.log('Service name:', contextProps.serviceName);
VdxpCdkPropsBase
to add specific properties
Extend import { Construct } from 'constructs';
import { VdxpCdkPropsBase, VdxpEnvironment } from '@jnj/vdxp-be-lib-cdk-core';
class MyProps extends VdxpCdkPropsBase {
myProperty: string;
constructor(scope: Construct, environment: VdxpEnvironment, region: string) {
super(scope, environment, region);
this.myProperty = this._props.from.cdk.json.myProperty;
}
}
const contextProps = new MyProps(scope, VdxpEnvironment, 'us-east-1');
console.log('My property:', contextProps.myProperty);
Create API Gateway with Lambda Function
import { VdxpApiGatewayLambda, VdxpEnvProps, VdxpCdkPropsApigwLambda, getEnvironment } from '@jnj/vdxp-be-lib-cdk-core';
const envProps = new VdxpEnvProps();
const environment = getEnvironment(envProps.envName);
const contextProps = new VdxpCdkPropsApigwLambda(this, environment, envProps.region);
// Create ApiGateway with Lambda
new VdxpApiGatewayLambda(this, 'ApiGwLambda', {
env: envProps,
context: contextProps,
stageVars: {
// APIGateway stage variables example
TEST_KEY: `${contextProps.serviceName}-${contextProps.serviceVersion}-${envProps.envName}-${envProps.gitCommitSha}`,
},
});