AWS Cloud Development Kit

{{Short description|Open-source software development framework developed by Amazon Web Services}}

{{Infobox software

| name = AWS Cloud Development Kit

| screenshot =

| logo =

| caption =

| developer = Amazon Web Services

| released =

| latest_release_version =

| latest_release_date =

| operating_system = Cross-platform

| genre = Cloud computing, Infrastructure as Code

| license = Apache License 2.0

| website = {{URL|https://aws.amazon.com/cdk/}}

}}

The AWS Cloud Development Kit (AWS CDK) is an open-source{{Cite web |last=Kocher |first=Laveesh |date=2021-12-13 |title=AWS Announces The Release AWS Cloud Development kit |url=https://www.opensourceforu.com/2021/12/aws-announces-the-release-of-open-source-aws-cloud-development-kit/ |access-date=2023-03-19 |website=Open Source For You |language=en-US}} software development framework developed by Amazon Web Services (AWS) for defining and provisioning cloud infrastructure resources using familiar programming languages.{{Cite web |title=AWS Cloud Development Kit (CDK) |url=https://aws.amazon.com/cdk/ |access-date=2023-03-19 |publisher=Amazon Web Services, Inc.}} The AWS CDK aims to improve the experience of working with Infrastructure as Code by providing higher-level, reusable constructs that enable developers to create and manage AWS resources more efficiently and with less boilerplate code compared to traditional configuration files like AWS CloudFormation templates.{{Cite web |title=AWS Cloud Development Kit (AWS CDK) User Guide |url=https://docs.aws.amazon.com/cdk/latest/guide/home.html |access-date=2023-03-19 |publisher=Amazon Web Services, Inc.}}

Overview

AWS CDK{{Cite web |last=Steenman |first=Danny |date=2022-07-23 |title=What is the AWS CDK? (A beginners guide) |url=https://towardsthecloud.com/aws-cdk |access-date=2023-09-23 |website=Towards the Cloud |language=en-US}} allows developers to model and provision cloud infrastructure resources using programming languages such as TypeScript, JavaScript, Python, Java, Go, and C#.{{Cite web |title=AWS Cloud Development Kit (CDK) FAQs |url=https://aws.amazon.com/cdk/faqs/ |access-date=2023-03-19 |publisher=Amazon Web Services, Inc.}}{{Cite news |last=Ramel |first=David |orig-date=12 March 2019 |title=AWS Adds .NET, Java Support in Cloud Development Kit |url=https://awsinsider.net/articles/2019/12/03/cdk-net-java.aspx}} Developers can define their infrastructure using the same programming languages and tools they use for their application code, enabling better integration between application and infrastructure development processes.{{Cite web |title=What's so Cool About AWS CDK? |url=https://www.beyondjava.net/cdk-primer |access-date=2023-03-19 |website=www.beyondjava.net}}

AWS CDK includes a library of constructs,{{Cite web |date=2022-03-10 |title=An Introduction To AWS Cloud Development Kit (CDK) |url=https://www.smashingmagazine.com/2022/03/introduction-aws-cloud-development-kit/ |access-date=2023-03-19 |website=Smashing Magazine |language=en}} which are pre-built components that encapsulate one or more AWS resources and their configurations.{{Cite web |title=Working with Constructs |url=https://docs.aws.amazon.com/cdk/latest/guide/constructs.html |access-date=2023-03-19 |publisher=Amazon Web Services, Inc.}} Constructs can be used to build higher-level abstractions known as patterns, which simplify common cloud infrastructure patterns and best practices. The AWS Construct Library provides a collection of constructs for various AWS services, such as Amazon S3, Amazon EC2, and AWS Lambda.{{Cite web |title=AWS Construct Library |url=https://docs.aws.amazon.com/cdk/latest/guide/aws_construct_lib.html |access-date=2023-03-19 |publisher=Amazon Web Services, Inc.}}

Key features

  • Familiar programming languages: AWS CDK supports TypeScript, JavaScript, Python, Java, Go, and C#, allowing developers to use their preferred programming languages for defining cloud infrastructure.
  • Reusable constructs: AWS CDK includes a library of constructs that encapsulate AWS resources, their configurations, and best practices, promoting reusability and reducing boilerplate code.
  • Higher-level abstractions: Developers can use constructs{{Cite web |last=Steenman |first=Danny |date=2022-05-03 |title=How to create an AWS CDK Construct |url=https://towardsthecloud.com/aws-cdk-construct |access-date=2023-09-23 |website=Towards the Cloud |language=en-US}} to create custom, higher-level abstractions, known as patterns, to simplify complex infrastructure patterns and improve maintainability.
  • Integration with AWS CloudFormation: AWS CDK applications are compiled into AWS CloudFormation templates, ensuring compatibility with existing AWS CloudFormation features and tools.{{Cite web |title=AWS Cloud Development Kit (CDK) FAQs |url=https://aws.amazon.com/cdk/faqs/ |access-date=2023-03-19 |publisher=Amazon Web Services, Inc.}}
  • Modularity and extensibility: AWS CDK promotes modularity and extensibility by allowing developers to create and share custom constructs and patterns.

Release history

  • 2018: AWS CDK was announced as a developer preview at the AWS Summit in New York on July 17, 2018, offering an early version of the framework for developers to test and provide feedback.{{Cite web |date=2018-08-27 |title=AWS CDK Developer Preview {{!}} AWS Developer Tools Blog |url=https://aws.amazon.com/blogs/developer/aws-cdk-developer-preview/ |access-date=2023-03-19 |website=aws.amazon.com |language=en-US}}
  • 2019: AWS CDK reached general availability (GA) on July 11, 2019, with support for TypeScript and Python as the initial programming languages.{{Cite web |author=Werner Vogels |date=2019-07-11 |title=AWS Cloud Development Kit (CDK) – TypeScript and Python are Now Generally Available |url=https://aws.amazon.com/blogs/aws/aws-cloud-development-kit-cdk-typescript-and-python-are-now-generally-available/ |access-date=2023-03-19 |publisher=Amazon Web Services, Inc.}}
  • 2019: Support for Java and C# was added to AWS CDK on November 25, 2019, broadening the range of programming languages available for defining and provisioning cloud infrastructure resources.{{Cite web |date=2019-11-25 |title=AWS Cloud Development Kit (CDK) – Java and .NET are Now Generally Available {{!}} AWS News Blog |url=https://aws.amazon.com/blogs/aws/aws-cloud-development-kit-cdk-java-and-net-are-now-generally-available/ |access-date=2023-03-19 |website=aws.amazon.com |language=en-US}}
  • 2021: AWS CDK v2 is released and consolidates the AWS Construct Library into a single package called aws-cdk-lib, streamlining usage and updates, ensuring stable APIs, and offering developer productivity improvements such as CDK Watch, a refreshed API Reference, and a new assertions library for automated unit testing in all CDK-supported languages.{{Cite web |title=AWS Cloud Development Kit (AWS CDK) v2 is now generally available |url=https://aws.amazon.com/about-aws/whats-new/2021/12/aws-cloud-development-kit-cdk-generally-available/ |access-date=2023-03-19 |website=Amazon Web Services, Inc. |language=en-US}}

Launching CDK

To get started with AWS CDK, developers need to install the AWS CDK Toolkit, which provides a command-line interface (CLI) for creating and managing AWS CDK projects.{{Cite web |title=AWS CDK Toolkit |url=https://docs.aws.amazon.com/cdk/latest/guide/tools.html |access-date=2023-03-19 |publisher=Amazon Web Services, Inc.}} The CLI can be installed using the Node.js package manager (npm) or any compatible package manager. Once the AWS CDK Toolkit is installed, developers can create a new AWS CDK project, define their infrastructure using constructs, and deploy the resulting AWS CloudFormation stack to their AWS account.

== Example code ==

The following is AWS CDK code written in TypeScript that creates an Amazon S3 bucket with public read access. This code imports the necessary AWS CDK libraries to create a new CloudFormation stack with a single Amazon S3 bucket resource. The Bucket constructor is used to create the bucket with the specified properties, including encryption, block public access, public read access, and versioning. The removal policy property specifies that the bucket should be destroyed when the stack is deleted.

import { Construct, Stack, StackProps } from 'aws-cdk-lib';

import { Bucket } from 'aws-cdk-lib/aws-s3';

import { BucketEncryption } from 'aws-cdk-lib/aws-s3';

import { BlockPublicAccess } from 'aws-cdk-lib/aws-s3';

export class MyStack extends Stack {

constructor(scope: Construct, id: string, props?: StackProps) {

super(scope, id, props);

const myBucket = new Bucket(this, 'MyBucket', {

encryption: BucketEncryption.S3_MANAGED,

blockPublicAccess: BlockPublicAccess.BLOCK_ALL,

publicReadAccess: true,

removalPolicy: RemovalPolicy.DESTROY,

versioned: true

});

}

}

See also

References

{{Reflist}}