おはようございます。YASUです。
一昨日Reactに触れたばかりだというのに、昨晩の勢いでAWS CDKにも手を出してしまいました。きっかけは単純で、クラスメソッドのYouTube動画で若手エンジニアさんがTypeScriptでコードを書いているのを見て「これは何をやっているんだ」と気になったからです。今日はその顛末を記録します。
結論
CDKは「TypeScriptの短いコードが、AWSへの詳細な指示書に自動変換される」道具でした。ただし、実際にAWSへ変更を加える一歩手前で、頭が疲れ切っていたので今回は踏みとどまりました。判断としては正しかったと思っています。
そもそもIaCとCDKの違いがわからなかった
普段からTerraformを触っているので、CDKと聞いて「また新しい道具か」と身構えました。整理すると、IaC(Infrastructure as Code、インフラをコードで書く考え方)という大きなジャンルがあって、その中の道具の一つがTerraform、もう一つがCDK、という関係でした。和食というジャンルの中に、寿司と天ぷらがあるようなものです。
違いを一言でまとめると、Terraformは専用の記法(HCL)で書くのに対し、CDKはTypeScriptやPythonなど、普段のプログラミング言語でAWSリソースを定義できる、という点でした。
また同じnpmの権限エラーが出た
CDKのCLIをインストールしようとしたら、先日Next.jsを触ったときと全く同じ、npmのキャッシュフォルダの権限エラーに再び遭遇しました。今回は一時的な回避策ではなく、根本的な原因(キャッシュフォルダの持ち主が正しくなかったこと)まで特定し、所有権を直す形で対処しました。同じ問題に2回目で出会うと、さすがに「あ、これ知ってるやつだ」という余裕が出てくるものです。
数行のコードが、詳細な指示書に化ける瞬間
環境が整ったところで、S3バケットを1個作るだけのコードを書きました。中身はものの数行です。
ここで一番面白かったのが「シンセス(synth)」というコマンドです。このコマンドを実行すると、書いたばかりの短いTypeScriptコードが、AWSへの詳細な指示書(CloudFormationテンプレートというもの)に変換されて出力されます。数行のコードの裏側に、こんなに細かい設定が隠れていたのかと、素直に驚きました。
ちなみにこの時点では、まだAWSには一切手を加えていません。あくまで「設計図ができた」段階です。
ここで踏みとどまった
次のステップは、実際にAWSアカウントへ変更を加える「ブートストラップ」という作業でした。ここまで来て、正直に告白すると、頭の中はもう限界に近い状態でした。React、TypeScript、CDK関連の専門用語が一晩でどっと押し寄せて、「これ以上進めても消化しきれない」感覚がありました。
料金がかかるかどうかも気になったので確認したところ、今回作ろうとしていたのは空のS3バケット1個だけで、実質無料枠の範囲内でした。それでも「疲れた頭で、実際にAWSアカウントに変更を加える判断をするのは危険だ」と思い、その場では見送りました。
今回の学び
- IaC(考え方)とCDK・Terraform(道具)は別の階層の話
- CDKは普段のプログラミング言語でAWSリソースを書ける道具
- 「synth」で、コードがAWSへの指示書に変換される様子が見える
- 実際にAWSへ変更を加える一歩は、頭がクリアな時に進めるべき
まとめ
今回は「TypeScriptで書く」というところまでの体験でしたが、実際にAWSへデプロイして、そのあときちんと後片付け(削除)するところまでを、次はセットでやってみようと思います。疲れた状態で無理に進めず、判断力があるうちに区切りをつけたのは、我ながら悪くない選択だったと思っています。
それでは、また次の記事で。

コメント