AWS Cloud Development Kit のよくある質問

全般

AWS クラウド開発キット (AWS CDK) は、最新のプログラミング言語を使用してクラウドインフラストラクチャをコードとして定義し、それを AWS CloudFormation を通じてデプロイするためのオープンソースのソフトウェア開発フレームワークです。

AWS CDK Command Line Interface (CLI) を使用すると、CDK アプリケーションを操作することができます。CDK CLI では、CDK アプリで定義されているスタックを一覧表示し、それらのスタックを CloudFormation テンプレートに合成でき、実行中のスタックインスタンスと CDK コードで定義されているスタックの違いを確認でき、AWS の任意のパブリックリージョンにスタックをデプロイできます。

CloudFormation テンプレートを生成するために実行される AWS CDK プロジェクトを、AWS CDK フレームワークを使用して作成します。AWS CDK プロジェクトは、AWS CDK コマンドラインを使用して、または継続的デリバリーシステムで実行できます。

AWS CDK の使用を開始するには、AWS CDK デベロッパーガイドの開始方法セクションを参照してください。数分以内に、最初の AWS CDK アプリケーションを定義してデプロイできます。より詳細なガイド付きチュートリアルについては、https://CDKworkshop.com をご覧ください。

はい。https://github.com/aws-samples/aws-cdk-examples に、複数のプログラミング言語用の AWS CDK の例を多数ご用意しています。AWS デベロッパーガイドにもいくつかの例が用意されています (https://docs.aws.amazon.com/cdk/latest/guide/examples.html)。

AWS は、AWS Construct ライブラリパッケージのビジネスロジックを TypeScript で構築し、サポートされている各プログラミング言語へのマッピングを提供します。これにより、AWS CDK コンストラクトの動作が異なる言語間で一貫していることを確認でき、すべての言語で利用できる包括的なコンストラクトパッケージのセットを提供できます。AWS CDK プロジェクトで作成したコードはすべてお客様ご希望のプログラミング言語でネイティブになっています。JavaScript ランタイムはお客様のプログラミング経験の実施詳細です。jsii プロジェクトは https://github.com/aws/jsii で参照できます。

AWS CDK コードはオープンソースであり、GitHub の https://github.com/awslabs/aws-cdk から入手できます。

アプリを AWS CDK v2 に移行するには、最初に cdk.json の機能フラグを更新します。次に、アプリの依存関係を更新し、プログラミング言語の必要に応じてインポートします。詳細については、 https://docs.aws.amazon.com/cdk/latest/guide/work-with-cdk-v2.html をご覧ください。

AWS では AWS CDK をオープンに開発しており、当社のコードベースに貢献したい人は誰でも歓迎します。詳細については、https://github.com/awslabs/aws-cdk/blob/master/CONTRIBUTING.md をご覧ください。

AWS CDK は、JavaScript、TypeScript、Python、Java、C# が一般公開されており、開発者プレビューでは Go がサポートされています。将来的にはほかの言語用の AWS CDK バインディングも計画しています。GitHub でお気に入りを投票してください。

AWS CDK は、すべてのパブリックリージョンで AWS のリソースを定義してデプロイするためにご利用いただけます。AWS CDK は CloudFormation サービスを利用するため、AWS リージョンごとの具体的なリソースの利用可否についての詳細はリージョン別の製品とサービスを参照してください。

AWS CDK は CloudFormation を利用するため、AWS CDK アプリケーションには CloudFormation サービスと同じ制限が課せられます。

AWS Solutions Constructs は、AWS CDK のオープンソースのライブラリ拡張です。AWS Solutions Constructs では、AWS Well-Architected Framework によって確立されたベストプラクティスを使用して構築された、検証済みの一連のマルチサービスアーキテクチャパターンをお客様に提供します。AWS Solutions Constructs では、前提条件として、AWS CDK のインストールが必要です。AWS Solutions Constructs を AWS CDK 環境に追加する方法については、開発ガイドをご覧ください。

AWS Construct ライブラリ

AWS CDK コンストラクトは AWS Construct ライブラリで提供されており、再利用のためにパッケージ化されたクラウドインフラストラクチャロジックの抽象概念を表します。コンストラクトはローカルに定義することもでき、npm、Maven、NuGet、PyPI などのパッケージマネージャーに公開して組織間で共有することもできます。

豊富でハイレベルな構成要素を備えた多くの一般的な AWS のサービスと機能、および利用可能になった直後の新しいリソースを含む、下位レベルの CloudFormation リソースを完全にカバーしています。CloudFormation の仕様が変更されるたびにリソースレベルの API を自動生成することで、AWS Construct ライブラリを最新の状態に保っています。これらの自動生成された API に加えて、AWS は、手作業による、より高レベルの抽象化を提供します。これにより、各サービスの操作がさらに簡単になります。このような高レベルで便利な抽象化はまだ AWS のすべてのサービスにはありませんが、最新のクラウドアプリケーションで最も使用されるサービスに重点を置き、常に新しい機能を追加しています。詳細については、AWS Construct ライブラリ API リファレンスを参照してください。

AWS では、新しい CloudFormation 機能の公開後すぐに AWS CDK にその機能を追加することで、AWS Construct ライブラリと CloudFormation リソース仕様の同期を保っています。

AWS CDK Construct ライブラリはその他のライブラリとまったく同じで、使用するプログラミング言語のパッケージマネージャーを通して消費されます。通常のワークフローの一部としてこれらのライブラリを最新の状態に維持してください。すべてのパッケージがセマンティックバージョニングをサポートしているため、新しいインフラストラクチャモデルに移行する時期について意識的に選択することができます。

CloudFormation と SAM

AWS CDK は、最新のプログラミング言語のすべての機能を活用して AWS Infrastructure as Code を定義する、デベロッパー中心のツールキットと考えることができます。AWS CDK アプリケーションが実行されると、それらは完全に形成された CloudFormation JSON/YAML テンプレートにコンパイルされ、プロビジョニング用に CloudFormation サービスに送信されます。AWS CDK は CloudFormation を利用しているため、CloudFormation の安全なデプロイ、自動ロールバック、ドリフト検出などのすべての利点がそのまま提供されます。

AWS サーバーレスアプリケーションモデルと AWS CDK はどちらも AWS インフラストラクチャをコードとして抽象化しているため、クラウドインフラストラクチャを簡単に定義できます。AWS SAM は特にサーバーレスのユースケースとアーキテクチャに焦点を当てており、コンパクトで宣言型の JSON/YAML テンプレートでインフラストラクチャを定義できます。AWS CDK は、AWS のすべてのサービスを幅広くカバーしており、TypeScript、Python、C#、Java などの最新のプログラミング言語でクラウドインフラストラクチャを定義できます。AWS SAM と AWS CDK は、どちらも CloudFormation をインフラストラクチャスタックのプロビジョニングエンジンとして利用します。サーバーレスインフラストラクチャを簡潔な宣言型テンプレートで定義したい場合は、SAM が適しています。AWS インフラストラクチャを使い慣れたプログラミング言語で定義したい場合は、AWS CDK を試してみることをお勧めします。どちらの場合でも、CloudFormation を通じた、再現性があり安全なインフラストラクチャデプロイが実現されます。

はい。AWS CDK アプリケーションを CloudFormation テンプレートにローカルに合成してから、SAM CLI で生成された AWS Lambda ハンドラー ID を参照できます。詳細については、CDK デベロッパーガイドの SAM CLI セクションを参照してください。

コスト

AWS CDK は Apache ライセンスバージョン 2.0 の下で配布されています。詳細については [LICENSE] (ライセンス) および [NOTICE] (通知) をご覧ください。

AWS CDK に対する追加料金はありません。AWS CDK を使用して作成した AWS リソース (Amazon EC2 インスタンス、または Elastic Load Balancing ロードバランサー) に対して、手動で作成したのと同じように料金をお支払いいただきます。お支払いはお客様が実際に使用した分だけです。最低料金や前払いの義務は発生しません。