とは AWS CDK - AWS Cloud Development Kit (AWS CDK) v2

これは AWS CDK v2 デベロッパーガイドです。古い CDK v1 は 2022 年 6 月 1 日にメンテナンスを開始し、2023 年 6 月 1 日にサポートを終了しました。

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

とは AWS CDK

AWS Cloud Development Kit (AWS CDK) は、コードでクラウドインフラストラクチャを定義し、 を通じてプロビジョニングするためのオープンソースのソフトウェア開発フレームワークです AWS CloudFormation。

は 2 つの主要部分 AWS CDK で構成されています。

  • AWS CDK コンストラクトライブラリ — コンストラクトと呼ばれる、事前に記述されたモジュール式で再利用可能なコードのコレクションで、インフラストラクチャを迅速に開発するために使用、変更、統合できます。 AWS CDK Construct Library の目的は、 でアプリケーションを構築するときに AWS サービスを定義して統合するために必要な複雑さを軽減することです AWS。

  • AWS CDK ツールキット — CDK アプリケーションを操作するためのコマンドラインツール。 AWS CDK ツールキットを使用して、 AWS CDK プロジェクトを作成、管理、デプロイします。

は、TypeScript、JavaScript、、Python、C#/.Net、および Java AWS CDK をサポートしますGo。これらのサポートされているプログラミング言語のいずれかを使用して、コンストラクト と呼ばれる再利用可能なクラウドコンポーネントを定義できます。これらをスタックとアプリケーションまとめて構成します。次に、CDK アプリケーションを にデプロイ AWS CloudFormation して、 リソースをプロビジョニングまたは更新します。

の利点 AWS CDK

を使用して、プログラミング言語のかなりの表現力を備えた、信頼性が高くスケーラブルで費用対効果の高いアプリケーションをクラウドで AWS CDK 開発します。このアプローチには、次のような多くの利点があります。

Infrastructure as Code (IaC ) を開発および管理する

Infrastructure as Code を実践し、プログラムによる説明的な宣言的な方法でインフラストラクチャを作成、デプロイ、維持します。IaC では、デベロッパーがコードを処理するのと同じ方法でインフラストラクチャを扱います。これにより、インフラストラクチャを管理するためのスケーラブルで構造化されたアプローチが作成されます。IaC の詳細については、 AWS ホワイトペーパーの「 の概要」の DevOps 「コードとしてのインフラストラクチャ」を参照してください。

を使用すると AWS CDK、インフラストラクチャ、アプリケーションコード、および設定をすべて 1 か所に配置することができるため、あらゆるマイルストーンでクラウドにデプロイできる完全なシステムを確保できます。コードレビュー、ユニットテスト、出典管理などのソフトウェアエンジニアリングのベストプラクティスを採用して、インフラストラクチャをより堅牢にします。

一般的なプログラミング言語を使用してクラウドインフラストラクチャを定義する

では AWS CDK、次のプログラミング言語のいずれかを使用して、クラウドインフラストラクチャを定義できます: TypeScript、JavaScript、、PythonJava、C#/.Net。 Go任意の言語を選択し、パラメータ、条件、ループ、コンポジション、継承などのプログラミング要素を使用して、インフラストラクチャの望ましい結果を定義します。

構文の強調表示やインテリジェントなコード補完など、希望する IDE (統合開発環境) でインフラストラクチャを開発する利点を活用できます。

によるインフラストラクチャのデプロイ AWS CloudFormation

AWS CDK は と統合 AWS CloudFormation して、 にインフラストラクチャをデプロイおよびプロビジョニングします AWS。 AWS CloudFormation は、 でサービスをプロビジョニングするためのリソースとプロパティの設定を広範囲にサポート AWS のサービス するマネージド です AWS。を使用すると AWS CloudFormation、エラー発生時にロールバックしながら、インフラストラクチャのデプロイを予測どおりに繰り返し実行できます。既に に精通している場合は AWS CloudFormation、 の使用を開始するときに新しい IaC 管理サービスを学ぶ必要はありません AWS CDK。

コンストラクトを使用してアプリケーションを迅速に開発する

低レベルのコンストラクトを使用して、個々の AWS CloudFormation リソースとそのプロパティを定義します。高レベルのコンストラクトを使用すると、アプリケーションのより大きなコンポーネントをすばやく定義し、 AWS リソースに対して適切で安全なデフォルトを使用して、より少ないコードでより多くのインフラストラクチャを定義できます。

独自のユースケースに合わせてカスタマイズした独自のコンストラクトを作成し、組織全体またはパブリックと共有します。

の例 AWS CDK

以下は、 AWS CDK コンストラクトライブラリを使用して AWS Fargate (Fargate) 、起動タイプで Amazon Elastic Container Service (Amazon ECS) サービスを作成する例です。この例の詳細については、「」を参照してくださいを使用した AWS Fargate サービスの作成 AWS CDK

TypeScript
export class MyEcsConstructStack extends Stack { constructor(scope: App, id: string, props?: StackProps) { super(scope, id, props); const vpc = new ec2.Vpc(this, "MyVpc", { maxAzs: 3 // Default is all AZs in region }); const cluster = new ecs.Cluster(this, "MyCluster", { vpc: vpc }); // Create a load-balanced Fargate service and make it public new ecs_patterns.ApplicationLoadBalancedFargateService(this, "MyFargateService", { cluster: cluster, // Required cpu: 512, // Default is 256 desiredCount: 6, // Default is 1 taskImageOptions: { image: ecs.ContainerImage.fromRegistry("amazon/amazon-ecs-sample") }, memoryLimitMiB: 2048, // Default is 512 publicLoadBalancer: true // Default is false }); } }
JavaScript
class MyEcsConstructStack extends Stack { constructor(scope, id, props) { super(scope, id, props); const vpc = new ec2.Vpc(this, "MyVpc", { maxAzs: 3 // Default is all AZs in region }); const cluster = new ecs.Cluster(this, "MyCluster", { vpc: vpc }); // Create a load-balanced Fargate service and make it public new ecs_patterns.ApplicationLoadBalancedFargateService(this, "MyFargateService", { cluster: cluster, // Required cpu: 512, // Default is 256 desiredCount: 6, // Default is 1 taskImageOptions: { image: ecs.ContainerImage.fromRegistry("amazon/amazon-ecs-sample") }, memoryLimitMiB: 2048, // Default is 512 publicLoadBalancer: true // Default is false }); } } module.exports = { MyEcsConstructStack }
Python
class MyEcsConstructStack(Stack): def __init__(self, scope: Construct, id: str, **kwargs) -> None: super().__init__(scope, id, **kwargs) vpc = ec2.Vpc(self, "MyVpc", max_azs=3) # default is all AZs in region cluster = ecs.Cluster(self, "MyCluster", vpc=vpc) ecs_patterns.ApplicationLoadBalancedFargateService(self, "MyFargateService", cluster=cluster, # Required cpu=512, # Default is 256 desired_count=6, # Default is 1 task_image_options=ecs_patterns.ApplicationLoadBalancedTaskImageOptions( image=ecs.ContainerImage.from_registry("amazon/amazon-ecs-sample")), memory_limit_mib=2048, # Default is 512 public_load_balancer=True) # Default is False
Java
public class MyEcsConstructStack extends Stack { public MyEcsConstructStack(final Construct scope, final String id) { this(scope, id, null); } public MyEcsConstructStack(final Construct scope, final String id, StackProps props) { super(scope, id, props); Vpc vpc = Vpc.Builder.create(this, "MyVpc").maxAzs(3).build(); Cluster cluster = Cluster.Builder.create(this, "MyCluster") .vpc(vpc).build(); ApplicationLoadBalancedFargateService.Builder.create(this, "MyFargateService") .cluster(cluster) .cpu(512) .desiredCount(6) .taskImageOptions( ApplicationLoadBalancedTaskImageOptions.builder() .image(ContainerImage .fromRegistry("amazon/amazon-ecs-sample")) .build()).memoryLimitMiB(2048) .publicLoadBalancer(true).build(); } }
C#
public class MyEcsConstructStack : Stack { public MyEcsConstructStack(Construct scope, string id, IStackProps props=null) : base(scope, id, props) { var vpc = new Vpc(this, "MyVpc", new VpcProps { MaxAzs = 3 }); var cluster = new Cluster(this, "MyCluster", new ClusterProps { Vpc = vpc }); new ApplicationLoadBalancedFargateService(this, "MyFargateService", new ApplicationLoadBalancedFargateServiceProps { Cluster = cluster, Cpu = 512, DesiredCount = 6, TaskImageOptions = new ApplicationLoadBalancedTaskImageOptions { Image = ContainerImage.FromRegistry("amazon/amazon-ecs-sample") }, MemoryLimitMiB = 2048, PublicLoadBalancer = true, }); } }
Go
func NewMyEcsConstructStack(scope constructs.Construct, id string, props *MyEcsConstructStackProps) awscdk.Stack { var sprops awscdk.StackProps if props != nil { sprops = props.StackProps } stack := awscdk.NewStack(scope, &id, &sprops) vpc := awsec2.NewVpc(stack, jsii.String("MyVpc"), &awsec2.VpcProps{ MaxAzs: jsii.Number(3), // Default is all AZs in region }) cluster := awsecs.NewCluster(stack, jsii.String("MyCluster"), &awsecs.ClusterProps{ Vpc: vpc, }) awsecspatterns.NewApplicationLoadBalancedFargateService(stack, jsii.String("MyFargateService"), &awsecspatterns.ApplicationLoadBalancedFargateServiceProps{ Cluster: cluster, // required Cpu: jsii.Number(512), // default is 256 DesiredCount: jsii.Number(5), // default is 1 MemoryLimitMiB: jsii.Number(2048), // Default is 512 TaskImageOptions: &awsecspatterns.ApplicationLoadBalancedTaskImageOptions{ Image: awsecs.ContainerImage_FromRegistry(jsii.String("amazon/amazon-ecs-sample"), nil), }, PublicLoadBalancer: jsii.Bool(true), // Default is false }) return stack }

このクラスは、 AWS CloudFormation 500 行を超える テンプレートを生成します。 AWS CDK アプリケーションをデプロイすると、次のタイプの 50 を超えるリソースが生成されます。

AWS CDK features

AWS CDKGitHub リポジトリ

公式 AWS CDK GitHubリポジトリについては、「aws-cdk」を参照してください。ここでは、問題の送信、ライセンスの表示、リリースの追跡などを行うことができます。

AWS CDK はオープンソースであるため、チームは、さらに優れたツールになるように支援するようお勧めします。詳細については、「 への寄稿 AWS Cloud Development Kit (AWS CDK)」を参照してください。

AWS CDK API リファレンス

AWS CDK Construct Library にはAPIs が用意されています。詳細については、「 APIリファレンスAWS CDK」を参照してください。

コンストラクトプログラミングモデル

構成プログラミングモデル (CPM) は、 の概念を追加のドメイン AWS CDK に拡張します。CPM を使用するその他のツールには、次のものがあります。

Construct Hub

Construct Hub は、オープンソース AWS CDK ライブラリを検索、公開、共有できるオンラインレジストリです。

次のステップ

の使用を開始するには AWS CDK、「」を参照してくださいの開始方法 AWS CDK

詳細はこちら

について学習を続けるには AWS CDK、以下を参照してください。

  • AWS CDK の概念 — の重要な概念と用語 AWS CDK。

  • AWS CDK ワークショップ — を学習して使用するハンズオンワークショップ AWS CDK。

  • AWS CDK パターン – AWS エキスパート AWS CDK によって 用に構築された AWS サーバーレスアーキテクチャパターンのオープンソースコレクション。

  • AWS CDK コード例 – サンプル AWS CDK プロジェクトのGitHubリポジトリ。

  • cdk.dev – コミュニティSlackワークスペースを含む AWS CDK、 のコミュニティ駆動型ハブ。

  • 優れた CDK — AWS CDK オープンソースプロジェクト、ガイド、ブログ、その他のリソースの厳選されたリストを含むGitHubリポジトリ。

  • AWS ソリューションコンストラクト — 本番稼働対応のアプリケーションに簡単に組み立てることができる、セットされたコードとしてのインフラストラクチャ (IaC) パターン。

  • AWS デベロッパーツールブログ — のブログ投稿をフィルタリングしました AWS CDK。

  • AWS CDK on Stack Overflow – で aws-cdk でタグ付けされた質問Stack Overflow。

  • AWS CDK の チュートリアル AWS Cloud9 – AWS CDK AWS Cloud9 開発環境での の使用に関するチュートリアル。

に関連するトピックの詳細については AWS CDK、以下を参照してください。

  • AWS CloudFormation の概念 – AWS CDK は と連携するように構築されているため AWS CloudFormation、主要な AWS CloudFormation 概念を学習して理解することをお勧めします。

  • AWS 用語集 - で使用される主要な用語の定義 AWS。

サーバーレスアプリケーションの開発とデプロイを簡素化するために AWS CDK 使用できる に関連するツールの詳細については、以下を参照してください。

  • AWS Serverless Application Model – でサーバーレスアプリケーションを構築して実行するエクスペリエンスを簡素化および改善するオープンソースのデベロッパーツール AWS。

  • AWSChalice – でサーバーレスアプリケーションを記述するためのフレームワークPython。