CDK#AWSツールとSDK#AWS中山順博2018.08.08この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。CDK)なるツールが存在するとtwitterで発見しました。typescriptでCloudFormationのテンプレートを生成できるみたいです。わかんないのでさわってみたいと思います。Startedの通りにやってみたいと思います。追記】上記のドキュメントはリンク切れになっていました。チュートリアルをやってみたい方は以下のドキュメントをご覧ください。2で動作確認しました。前提となるツールは以下の通りです。CLIgitNode.jsのインストール手順は以下の通りです。nodejsインストールまずはAWS-CDKのコマンドラインツールをインストールします。aws-cdk正常にインストールできたことの確認を兼ねてバージョンを確認します。bb95676)プロジェクトの初期化プロジェクトを作成します。現時点ではJavaScript、Java、TypeScriptが選べるようです。今回はTypeScriptを使ってみます。--language=typescript生成されたファイルを確認します。tsconfig.jsontsconfig.jsonおよびpackage.jsonの内容を確認します。}}今回はこれらのファイルに修正を加える必要はありません。CDKを利用するうえで必須となるコアライブラリをインストールします。@types/nodeアプリケーションの作成まずは、リソースを何も作らない空っぽのアプリケーションを作成します。MyApp(process.argv).run());ファイルができたらコンパイルします。CLIの認証情報を設定します。アクセスキーを環境変数に設定したり、"~/.aws"配下のファイルに認証情報を設定しましょう。最後に設定できていることを確認してください。結果はインスタンスプロファイルを利用している場合の例です。Noneアプリケーションの指定コンパイルした結果生成される.jsファイルをプロジェクトのディレクトリ直下にある"cdk.json"へ設定します。現時点で存在するスタックの一覧を表示します。先ほど作成したコード内にスタックを作成するクラスを定義してます。エントリーポイント(?)となるクラスにおいて定義したクラスのインスタンスを作成します。MyApp(process.argv).run());追記したらコンパイルします。buildスタックの一覧を確認します。CDK的にはこの時点でスタックが作成されるようですが、AWSアカウントにCFnスタックが実際に作成されるわけではありません。ap-northeast-1S3バケットを作ってみる次は実際に何かリソースを作ってみましょう。今回はS3バケットを作ります。必要なライブラリをインストールします。@aws-cdk/aws-s3次に、ライブラリをインポートしてリソースを作成する処理を追加します。バケットに対してバージョニングの有効化を行っています。MyApp(process.argv).run());追記したらコンパイルします。buildCloudFormationテンプレートの確認アプリケーションをデプロイする際に利用されることになるテンプレートを確認します。'@aws-cdk/aws-kms=0.8.0,@aws-cdk/aws-s3=0.8.0,@aws-cdk/cdk=0.8.0,@aws-cdk/cx-api=0.8.0,hello-cdk=0.1.0,js-base64=2.4.5'デプロイ(1回目)デプロイします。作成したリソースを確認します。CFnスタックを確認します。]}S3バケットを確認します。リソースが存在することの確認を兼ねて、CFnスタックからリソースIDを確認します。}]また、S3バケットのバージョニングが有効であることを確認します。"Enabled"}このように、アプリケーション通りにリソースが作成されることが確認できました。修正する流れも確認しましょう。サーバーサイド暗号化を有効化してみます。MyApp(process.argv).run());追記したらコンパイルします。build差分を確認します。以下のコマンドで、修正に伴いリソースがどのように変更されるかを確認できます。CloudFormationの変更セットのようなものでしょうか。{"ServerSideEncryptionConfiguration":[{"ServerSideEncryptionByDefault":{"SSEAlgorithm":"aws:kms"}}]}最後にデプロイします。最後はdestroyコマンドで削除します。destroyed.まとめCloudFormationのテンプレートでは宣言的な記述しかできませんが、このようにコードで記述できれば反復処理や分岐処理も書けますので、柔軟な運用ができそうです。現時点でサポートしているコードは私自身どれも書き慣れていないのですが、いい機会なのでTypeScriptでも勉強してみるのもいいかなーと思いました。プレビュー版ではありますが、サポートしているリソースは多そうですので気になる方はいろいろ試してみてはいかがでしょうか。aws-cdk/packages/@aws-cdk/現場からは以上です。