はじめに
最近AWS CDKを触り始めたのですが、デプロイまで簡単に行う例が見当たらなかったので、「IAMユーザを作るだけ」を例にして記事にしました。
用意する環境
Cloud9を使いましたので、PCはブラウザのみ。
言語はTypeScriptで行いました。
環境構築
Cloud9であれば中にすべて入っていましたので、何もインストールする必要ありませんでした。
- Cloud9作成
- デフォルトVPC
- デフォルトIAMロール
- インスタンスタイプはメモリが2GB以上
- Node.jsはインストール済み
- AWS CDKもインストール済み
やったこと
CDKのバージョン確認
cdk --version
最新バージョンは以下を確認
CDKのアップデート
- 参考
# Cloud9の場合
npm update -g cdk
# 一般的な場合
sudo npm update -g aws-cdk
プロジェクト作成
今回はtestcreate-user
という名前のプロジェクトとします。
mkdir testcreate-user
cd testcreate-user
cdk init --language=typescript
以下のようなポップアップ出てきましたので、Yesで閉じます。
Bootstrap
アカウントごと(かつリージョンごと?)に1回実行していればよく、すでに実施済みであれば不要。
cdk bootstrap
修正するファイル
- 以下のファイルがスタックを定義するファイルになります。
lib/testcreate-user-stack.ts
単純にユーザを作る場合です。
import { Stack, StackProps } from 'aws-cdk-lib';
import { Construct } from 'constructs';
+import * as iam from 'aws-cdk-lib/aws-iam';
export class TestcreateUserStack extends Stack {
constructor(scope: Construct, id: string, props?: StackProps) {
super(scope, id, props);
// 第二引数はスタックの論理ID(末尾に乱数が自動付与される)
+ const user = new iam.User(this, 'Heroine',{userName:'Komichi-Akebi'});
}
}
TypeScriptのコンパイル
コードを修正したらコンパイルです。
都度実行する場合
- 都度、以下のコマンドを実行
npm run build
監視させ、自動で実行する場合
- 別ターミナルを開き以下を実行
cd testcreate-user
npm run watch
- ターミナルが実行中のままになるので、1回実行すればよい
テンプレートに変換
cdk synth
デプロイ
cdk deploy
プロジェクト名に関連した名前でCloudFormationのスタックが作成されます。
ユーザも作られました。
差分をみる
(例えば名前を変えて)差分を見る場合は以下の流れです。
cdk synth
# 自動でコンパイルするようにしていれば不要
npm run build
cdk diff
おまけ Gitつかってみる
Cloud9上だと、GUIでGitが使えます。
左メニューのGitのアイコンをクリックすると、プロジェクトごとに差分が表示されます。
まずはCommit - Commit All
で現時点のをすべてコミットしてみます。
ポップアップはYesで。
コミットのメッセージを入力する必要があります。
差分がなくなりました。
コードを修正しユーザ名を変えてみると、差分が検知され、左右で比較することもできます。
戻るのようなアイコンをクリックすれば、元のバージョンまで戻すことができます。
Pushなどは試してませんが、個人で少し使う程度であればローカルだけで十分かと思います。
削除
プロジェクトを削除するのは以下のコマンドです。
cdk destroy
- 削除されるもの
- プロジェクトのスタック
- 削除されないもの
- Cloud9内のプロジェクトのフォルダ
- Bootstrapで作成されたリソース
おわりに
新しいプログラミング言語に触る際の"Hello World"を表示させる例のように、AWS CDKの簡単なデプロイ例をまとめました。
初めてAWS CDKを触る方は参考にしてください。
参考:AWS CDK v2のリファレンス
ユーザ以外を作成する際によく使うリファレンスは以下のページになります。少し前まで検索してもv1のページが上位に出てきてしまっていたので。。。