Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

cdk-from-cfn

cdklabs383.8kMIT OR Apache-2.00.225.0TypeScript support: included

Turn AWS CloudFormation templates into AWS CDK applications

readme

cdk-from-cfn

cdk-from-cfn is a command-line tool that converts AWS CloudFormation templates into AWS CDK code. It supports multiple programming languages including TypeScript, Python, Java, Go, and C#.

Installation

$ cargo install cdk-from-cfn

Usage

$ cdk-from-cfn [INPUT] [OUTPUT] --language <LANGUAGE> --stack-name <STACK_NAME>
  • INPUT is the input file path (STDIN by default).
  • OUTPUT is the output file path; if not specified, output will be printed on your command line (STDOUT by default).

Node.js Module Usage

cdk-from-cfn leverages WebAssembly (WASM) bindings to provide a cross-platform npm module, which exposes apis to be used in Node.js projects. Simply take a dependency on cdk-from-cfn in your package.json and utilize it as you would a normal module. i.e.

import * as cdk_from_cfn from 'cdk-from-cfn';

// get supported languages
cdk_from_cfn.supported_languages();

// transmute cfn template into cdk app
cdk_from_cfn.transmute(template, language, stackName)

Language and Feature support

Name Enabled by default Description
typescript :heavy_check_mark: Enables support for TypeScript output
golang :heavy_check_mark: Enables support for Go output
java :heavy_check_mark: Enables support for Java output
Python :heavy_check_mark: Enables support for Python output
csharp :heavy_check_mark: Enables support for C# output

You can enable experimental languages (not enabled by default) by enabling the relevant feature:

$ cargo build --release --features=<feature-name>
Finished release [optimized] target(s) in 0.17s

If you want to disable on-by-default languages, you can pass --no-default-features:

$ cargo build --release --no-default-features --features=golang
Finished release [optimized] target(s) in 0.17s

Implemented

  • <input checked="" disabled="" type="checkbox"> Fn::FindInMap
  • <input checked="" disabled="" type="checkbox"> Fn::Join
  • <input checked="" disabled="" type="checkbox"> Fn::Sub
  • <input checked="" disabled="" type="checkbox"> Ref
  • <input checked="" disabled="" type="checkbox"> Fn::And
  • <input checked="" disabled="" type="checkbox"> Fn::Equals
  • <input checked="" disabled="" type="checkbox"> Fn::If
  • <input checked="" disabled="" type="checkbox"> Fn::Not
  • <input checked="" disabled="" type="checkbox"> Fn::Or
  • <input checked="" disabled="" type="checkbox"> Fn::GetAtt
  • <input checked="" disabled="" type="checkbox"> Fn::Base64 support
  • <input checked="" disabled="" type="checkbox"> Fn::ImportValue support
  • <input checked="" disabled="" type="checkbox"> Fn::Select support
  • <input checked="" disabled="" type="checkbox"> Resource ordering based on dependencies
  • <input checked="" disabled="" type="checkbox"> Conditions are emitted in ts but not attached to resource conditions
  • <input checked="" disabled="" type="checkbox"> Metadata emission for updates to asgs / lambda functions.
  • <input checked="" disabled="" type="checkbox"> Emission of outputs / exports
  • <input checked="" disabled="" type="checkbox"> Fn::GetAZs support
  • <input checked="" disabled="" type="checkbox"> Adding depends-on, and ordering based on it too.
  • <input checked="" disabled="" type="checkbox"> Deletion policy
  • <input checked="" disabled="" type="checkbox"> Fn::Cidr support

Remaining

There are known unsupported features. Working on them in priority order:

  • <input disabled="" type="checkbox"> Create policy
  • <input disabled="" type="checkbox"> ssm metadata references
  • <input disabled="" type="checkbox"> secretsmanager references