よく使うCDKの基本コマンドをまとめます。
はじめに
おはよう。@bioerrorlogです。
AWS CDKは、TypeScriptやPythonなどの言語でAWSインフラリソースを定義・デプロイできるフレームワークです。
CDKコードからCloudFormationテンプレートが生成され、AWSにリソースがデプロイされる、という仕組みになっています。
CDKは、YAMLで直接記述するCloudFormationテンプレートより書きやすく、またCloudFormationテンプレートより抽象度が高い(記述量が少なくて済む)ため、個人的にはよく好んで使っています。
CDKには、プロジェクトを作成する、リソースをデプロイ/削除するなど、いくつかのコマンドがあります。
毎回コマンドを忘れて調べなおしている自分がいるので、今回は基本的なCDKコマンドを備忘録としてまとめることにしました。
環境
今回の作業環境は以下の通りです。
CDKバージョン:
$ cdk --version 1.31.0 (build 8f3ac79)
Amazon LiunxのCloud9で確認作業を行いました。
$ cat /etc/system-release Amazon Linux AMI release 2018.03
CDKコマンドまとめ
一般的な作業の流れに沿って、必要となるコマンドをまとめていきます。
CDKバージョン確認
CDKのバージョンを確認します
cdk --version
CDKインストール
CDKがインストールされていない場合、以下のnpmコマンドでインストールします。
npm install -g aws-cdk
CDKプロジェクト作成
CDKのプロジェクトを作成します。
主な例(pythonの場合)は次のようになります。
- シンプルなテンプレートからCDKプロジェクトを作りたい場合:
cdk init app --language=python
- サンプルコードを含んだCDKプロジェクトを作りたい場合:
cdk init sample-app --language=python
- 仮想環境やgitファイルの作成なしに、まっさらなCDKプロジェクトを作りたい場合:
cdk init --generate-only --language=python
もう少し詳しく説明すると、次のようになります。
cdk init [template] --language=[python|typescript|csharp|fsharp|java|javascript]
[template]
部分には app
, sample-app
, lib
のどれかをオプションで入力し、
[language]
部分には python
や typescript
などの言語をひとつ入力します。
templateの app
, lib
, sample-app
それぞれの特徴は、cdk init --list
で確認できます。
$ cdk init --list Available templates: * app: Template for a CDK Application └─ cdk init app --language=[csharp|fsharp|java|javascript|python|typescript] * lib: Template for a CDK Construct Library └─ cdk init lib --language=typescript * sample-app: Example CDK Application with some constructs └─ cdk init sample-app --language=[csharp|fsharp|java|javascript|python|typescript]
app
:素の状態のCDKテンプレート
sample-app
:Stackのサンプルやtestフォルダがあらかじめ作成されたCDKテンプレート
lib
:CDK Construct Library用のテンプレート
となっています。
そして、仮想環境やgitの作成なしにまっさらな状態からCDKプロジェクトを作りたい場合は、テンプレートを指定せずに --generate-only
を指定します。
CDKコマンド実行前の下準備
CDKコマンドとは直接関係ありませんが、CDKプロジェクト内で作業を始める前に済ませておく必要のあるコマンドをメモします。
※Pythonの場合を例として書きます。
- 仮想環境起動
cdk init
時に作成されたPython仮想環境.env
を起動します。
source .env/bin/activate
- 必要パッケージのインストール
requirement.txt
に書かれたPythonパッケージをインストールします。
pip install -r requirements.txt
CDK Stack一覧表示
CDKコードに含まれたCDK Stackの一覧を表示します。
cdk ls
CloudFormationテンプレートの生成
CDKコードに含まれたCDK Stackから、CloudFormationテンプレートを生成・表示します。
cdk synth
特定Stackを指定して、CloudFormationテンプレートを生成・表示することもできます。
cdk synth [Stack名]
※Stack名はcdk ls
で確認できます。
CDKデプロイ前準備:bootstrap
CDKで定義したAWSリソースをデプロイする前に、次のコマンドでCDKデプロイ環境を構築します。
cdk bootstrap
cdk bootstrap
すると、CDKToolkit
というCloudFormation Stackが作成され、S3バケットcdktoolkit-stagingbucket-[random]
が作成されます。
CDKToolkit
Stackは、デプロイ先のリージョンに作成されている必要があります。
CDKデプロイ
CDKコードで定義したAWSリソースをデプロイします。
cdk deploy [Stack名]
CDKコード内にStackが一つしかない場合は、Stack名を指定しなくともデプロイできます。
cdk deploy
CDK Stackの差分を表示
コードを変更した際に、CDK Stackリソースの差分を表示します。
cdk diff [Stack名]
Stack名を指定しないと、全Stackの差分が表示されます。
cdk diff
CDKリソース削除
CDKデプロイされたリソースを削除します。
cdk destroy [Stack名]
CDKコード内に Stackが一つしかない場合は、Stack名を指定せずにリソースを削除できます。
cdk destroy
おわりに
今回は、CDKの基本コマンドをまとめました。
CDKはCloudFormationテンプレートより可読性が高く、テストコードも書けるなど一般言語ならではのメリットも享受できます。
これからもどんどん利用していきたいです。
[関連記事]
参考
AWS CDK Intro Workshop :: AWS Cloud Development Kit (AWS CDK) Workshop