What is @aws-cdk/aws-cloudformation?
@aws-cdk/aws-cloudformation is an AWS Cloud Development Kit (CDK) module that allows you to define AWS CloudFormation templates using TypeScript or JavaScript. It provides a high-level, object-oriented abstraction to define AWS resources and manage their lifecycle.
What are @aws-cdk/aws-cloudformation's main functionalities?
Creating a CloudFormation Stack
This code sample demonstrates how to create a CloudFormation stack using the @aws-cdk/aws-cloudformation package. It defines a nested stack with a template URL and parameters.
const cdk = require('@aws-cdk/core');
const cfn = require('@aws-cdk/aws-cloudformation');
class MyStack extends cdk.Stack {
constructor(scope, id, props) {
super(scope, id, props);
new cfn.CfnStack(this, 'MyNestedStack', {
templateUrl: 'https://s3.amazonaws.com/my-bucket/my-template.json',
parameters: {
MyParameter: 'ParameterValue'
}
});
}
}
const app = new cdk.App();
new MyStack(app, 'MyStack');
app.synth();
Custom Resources
This code sample demonstrates how to create a custom resource using the @aws-cdk/aws-cloudformation package. It defines a custom resource with a service token and properties.
const cdk = require('@aws-cdk/core');
const cfn = require('@aws-cdk/aws-cloudformation');
class MyStack extends cdk.Stack {
constructor(scope, id, props) {
super(scope, id, props);
new cfn.CfnCustomResource(this, 'MyCustomResource', {
serviceToken: 'arn:aws:lambda:region:account-id:function:function-name',
properties: {
MyProperty: 'PropertyValue'
}
});
}
}
const app = new cdk.App();
new MyStack(app, 'MyStack');
app.synth();
Wait Conditions
This code sample demonstrates how to create a wait condition using the @aws-cdk/aws-cloudformation package. It defines a wait condition handle and a wait condition with a timeout and count.
const cdk = require('@aws-cdk/core');
const cfn = require('@aws-cdk/aws-cloudformation');
class MyStack extends cdk.Stack {
constructor(scope, id, props) {
super(scope, id, props);
const waitHandle = new cfn.CfnWaitConditionHandle(this, 'MyWaitHandle');
new cfn.CfnWaitCondition(this, 'MyWaitCondition', {
handle: waitHandle.ref,
timeout: '300',
count: 1
});
}
}
const app = new cdk.App();
new MyStack(app, 'MyStack');
app.synth();
Other packages similar to @aws-cdk/aws-cloudformation
aws-sdk
The aws-sdk package is the official AWS SDK for JavaScript, which allows you to interact with AWS services directly. Unlike @aws-cdk/aws-cloudformation, which provides a high-level abstraction for defining CloudFormation templates, aws-sdk provides low-level APIs to interact with AWS services, including CloudFormation.
serverless
The serverless package is a framework for building and deploying serverless applications on AWS and other cloud providers. It abstracts away much of the complexity of managing infrastructure, similar to @aws-cdk/aws-cloudformation, but focuses on serverless architectures and provides a different set of abstractions and tools.
pulumi
Pulumi is an infrastructure as code tool that allows you to define cloud resources using general-purpose programming languages. It is similar to @aws-cdk/aws-cloudformation in that it provides high-level abstractions for defining cloud infrastructure, but it supports multiple cloud providers and languages beyond just AWS and TypeScript/JavaScript.