Amazon Web Services ブログ

AWS CDK 開発者プレビュー

皆さんに AWS Cloud Development Kit (CDK) の開発者プレビューをご案内できることを嬉しく思います。現在の対応言語は TypeScript、 JavaScript そして Java で、.NET と Python を近々ご案内予定です。AWS CDK はソフトウェア開発のフレームワークであり、クラウドのインフラストラクチャをコードで定義して CloudFormation でプロビジョニングできます。CDK は AWS のサービスと統合され、高レベルかつオブジェクト指向の抽象概念を使ってAWS リソースを定義できます。CDK によってモダンなプログラミング言語を使ってAWS インフラストラクチャを見通しよく効率よく定義できるため、アプリケーションからインフラストラクチャまで一貫した開発体験 (development experience) が得られます。

CDK はクラウドインフラストラクチャの「コンパイラ」であると考えてください。CDKは Constructs というハイレベルなクラスライブラリ群を提供します。Constructsは抽象化されたAWSリソースで、AWSのベストプラクティスに従った設定を内包します。Constructsはオブジェクト指向の CDK application に割り当て可能です。CDK application は個別のアプリケーションのインフラストラクチャを定義し、繰り返し使われる複雑な処理を管理します。CDK application を実行することによって AWS の “アセンブリ言語” である、CloudFormation テンプレートが生成されます。これでテンプレートを CloudFormation のプロビジョニングエンジンで処理する準備が整います。CDK tools はアプリケーションインフラストラクチャのスタック定義を容易にし、 CloudFormation サービスがスタックのプロビジョニングを安全性および信頼性高く実施します。


CDK のコンパイルプロセス フローチャート

使い慣れたツール

CDK によって、あなたが使い慣れた環境上でインフラストラクチャを定義でき、あなたが毎日使っているチームワークフローを使えます。高い快適性と生産性を実現してください。CDK はあなたのお気に入りのオブジェクト指向プログラミング言語をサポートしています。ループや条件といったコードロジックを自然に記述できるため、インフラストラクチャを環境やシナリオに合わせてカスタマイズすることもできます。CDK のコードは通常のソースコードであるため、既存の IDE の機能たとえばインラインドキュメンテーション、リファクタリングツール、コードナビゲーション、ユニットテストなど全ての機能が利用可能です。以下のコードはインフラストラクチャロジックと環境コンテキスト(アベイラビリティゾーンやリージョン固有の AMI ID など)の使用方法を示しています。この単一のコードで、別のリージョンに別のアプリケーションスタックを作成できます。インフラストラクチャの定義をコピー&ペーストする必要はありません。


// get the list of AZs for the current region/account
const azs = new cdk.AvailabilityZoneProvider(this).availabilityZones;

// get the AMI ID for a specific Windows version in this region
const ami = new ec2.WindowsImage(ec2.WindowsVersion.WindowsServer2016EnglishNanoBase).getImage(this);

for (const az of azs) {
// render construct name based on it’s availability zone
const constructName = `InstanceFor${az.replace(/-/g, ”).toUpperCase()}`;

new ec2.cloudformation.InstanceResource(this, constructName, {
    imageId: ami.imageId,
    availabilityZone: az,
    });
}

詳細情報の抽象化

CloudFormation テンプレートをモダンなプログラミング言語で、かつオブジェクト指向的に生成するツールはこれまでも存在しており、CDK が最初の解決策ではありません。ただ、CDK が他のツールと異なるのは、AWS サービスと完全に統合されていることです。IAM ポリシーやセキュリティグループ、ネットワーク設計など AWS の重要なリソースと自動的に連携する便利な API を提供しています。例えば Amazon Virtual Private Cloud (VPC) を追加するとき、CDK application では以下のような1行のコードを追加するだけで済みます。


new ec2.VpcNetwork(this, ‘MyVPC’);

CDK application がコンパイルされると、長い CloudFormation テンプレートが自動生成されます。このテンプレートは対象リージョンの各 AZ にサブネットを定義し、ルート、ルートテーブル、サブネットとルートテーブルの関係、NAT Gateway、Internet Gateway そして ElasticIP を定義し、VPC が正しく動作するように定義されています。CDK が自動生成するデフォルト設定があなたの要件と異なる場合は、VPC のパラメータをご自身の考える値で上書きすることができます。

拡張性

さらに、CDK Constructs で提供される AWS 製 API を機能強化するため、あなた自身のベストプラクティスを、見通しよく再利用可能なコードで定義できます。たとえば、S3 バケットを常に暗号化機能付きで生成する CDK application を記述することができます。これによってあなたのチームはデフォルトでこのルールを守ることができます。


new s3.Bucket(this, ‘EncryptedBucket’, {
    encryption: s3.BucketEncryption.KmsManaged
    });

これによってより高レベルの CDK application を定義することができます。自社の方針の埋め込み、クラウドネイティブなデザインパターン、特定ユースケースにフォーカスした設計、社内あるいは世界への共有など…。あなたが作るクールなコードが待ち遠しいです。

バザールへ行こう

CDK はまだ完成していません。私たちは CDK をクローズな伽藍ではなくオープンなバザールのように作っています。参照元をご存じない方のために説明すると「伽藍とバザール」というのは Eric S. Raymond によるエッセイのタイトルです。このエッセイでは2つのソフトウェア開発スタイルを比較しており、オープンソースでは「十分なレビュアの目があれば、全てのバグは洗い出される」と言及しました。CDK はオープンソースであり開発者向けプレビューです。AWS 上でクラウドアプリケーションを開発するための、ベストな開発体験を提供するために、あなたの協力が必要です。aws-cdk GitHub README を訪れてください。CDKの使い方を知ってください。そしてCDKを試してください。Gitterに投稿して会話を始めましょう。issue をオープンして開発者と議論しましょう。pull request を送ってコントリビュートしてください。プロジェクトに スター をつけて、あなたが興味を持っていると教えてください。あなたとのコラボレーションを楽しみにしています。

原文は こちら。翻訳は SA 大村が担当しました。