MENU

AWS CDKに初めて触れてみた話

リポジトリ名を変えただけなのに、デプロイが壊れた話を説明する画像

おはようございます。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へデプロイして、そのあときちんと後片付け(削除)するところまでを、次はセットでやってみようと思います。疲れた状態で無理に進めず、判断力があるうちに区切りをつけたのは、我ながら悪くない選択だったと思っています。

それでは、また次の記事で。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次