【超初心者】AWS CDKに入門してみた
はじめに
インフラエンジニア歴1年弱、IaC超初心者のよわよわエンジニアですが、時間ができたのでAWS提供のCDK入門ワークショップを利用してようやっとCDKに入門してみました。
TypeScript の基礎から始める AWS CDK 開発入門
TypeScriptに関しては、アプリエンジニア時代に所属していたプロジェクトでほんの少し経験がある程度です。本当に初心者に毛も生えない程度の経験です。果たして無事に入門できるのか。
ワークショップの内容
TypeScriptの基礎
まずはじめにTypeScriptの基礎から説明してくれます。
どんな言語でどういった型があるのか、初心者が理解しづらいクラスの概念なども必要最低限かつ分かりやすく記載されていて、CDKでリソースを作成する際にはクラスやコンストラクタをどう使うのかまで教えてくれます。
ここでなんとなく以下のことは理解できました。
- いろいろな型がある
- 特にobject型は、型が異なる複数のキーと値のセットをひとまとめにして「object型」として定義できる
- AWSリソースを作成するときは、CDKのライブラリからそのサービスに該当するクラスをimportする
- newで宣言することによって、importしたクラスから対象リソースのインスタンスを作成できる
- newするときに、コンストラクタに引数を渡すことで対象リソースのパラメータを指定できる
実際につくってみる
ワークショップではWordPressのサイトを作成します。
今回は発展版もやってみて、最終的に以下の構成となりました(ワークショップに載っている図とほぼ同じですが)。
ワークショップは本当に親切で、どのようにCDKのAPIリファレンスを参照すればよいか懇切丁寧に教えてくれました。自分の備忘のためにも、改めて大体の流れを書いてみます。
-
ライブラリ一覧から、作成したいリソースに該当するライブラリを見つける。
-
Overviewを見る。対象のライブラリがimportされていなければimportする。
-
Constructsから、作成したいリソースのクラスを確認する。作成するリソースによって実装されているクラスは異なるので、例えばEC2インスタンスであれば
Instance
を参照するし、VPCフローログであればFlowLog
を参照する必要がある。
-
ExampleやInitializerでインスタンスの宣言方法を確認する。
-
Construct Propsで、コンストラクタに渡すことができるパラメータを確認する。Nameに「?」がついていないものは必須パラメータである。「?」がついているものは、指定しなければデフォルト値が適用される。EC2インスタンスだと、インスタンスタイプ、マシンイメージ、インスタンスを配置するVPCは必須指定になっていることが分かる。
6.各パラメータの型を確認する。例えばInstanceクラスのvpcSubnets
(インスタンスを配置するサブネットを指定するパラメータ)はSubnetSelection
型とのこと。。青文字部分をクリックするとinterface SubnetSelection
ページに飛んでくれるので、どんなプロパティを指定できるかを確認する。
「TypeScriptの基礎」編がなんとなく分かっていれば、実際こうやって使うんだ〜みたいな大枠が理解できるようになっていました。発展編ではALB、2台目のEC2、セカンダリRDSを追加するのですが、ヒントだけ出してくれてあとは実装してみてね!スタイルになっています(もちろん答えは用意してくれていますが)。特にALBの追加では、上記の流れが掴めていれば超初心者でもなんとかほぼ正解の実装を導き出せたのでとても達成感がありました・・・!!!
まとめ
サンプルを実装するだけなら超初心者でもなんとかなりますが、実際のプロジェクトで難しいのは実装ではなく設計ですよね。。コード規約をどうするのか、作成したソースの管理はどのように行うのか、どのような単位でスタックをまとめるのか、などなど実装の前に山ほど考えなければならないことがあると思います。そのレベルまで辿り着きたいと思いつつ、まずはCDK最初の一歩を踏み出せたということで今回はおしまいです!!
Discussion