kakakakakku blog

Weekly Tech Blog: Keep on Learning!

AWS CDK の実践的なトピックがまとまった「マスタリング AWS CDK」を読んだ

「マスタリング AWS CDK」を読んだ📕

著者の経験から語られる実践的なトピックが満載の一冊だった❗️AWS CDK を使っていると悩むポイントが多く解説されていて,AWS CDK 初学者から日々活用してる人まで幅広く読める内容だった.また本書を読んでいて 積極的に活用すべきです。 / ベストです。 / 推奨しています。 / 基本利用しないほうがよいです。 という表現が多く出てくるところも印象的だった.

techbookfest.org

目次

  • 1章: はじめに
  • 2章: AWS CDK の開発環境セットアップ
  • 3章: AWS CDK について
  • 4章: CDK で Lambda を実装してみよう
  • 5章: CDK で ECS を実装してみよう
  • 6章: CDK のテスト
  • 7章: 型によるパラメータ管理と環境分離
  • 8章: アーキテクチャ設計と Stack 構成
  • 9章: アーキテクチャ設計の実践
  • 10章: CI/CD パイプライン

L2.5 Construct

本書を読んでいたら NodejsFunction などは L2.5 Construct って呼ばれるって書いてあってこれは知らなかった💡

docs.aws.amazon.com

調べてみたら AWS Black Belt Online Seminar「AWS CDK Basic #1」 にも L2.5 constructs という表現が書いてあった.へぇ❗️

• より特定のシナリオに合わせて単⼀リソースを抽象化した L2.5 constructs も存在

エスケープハッチ

3章のコラムに「エスケープハッチ」の紹介が載っていた.エスケープハッチ自体は知っていたけど実は今まで使ったことがなくて,本書を読みながら気になって試した記事も書いた \( 'ω')/

kakakakakku.hatenablog.com

テスト戦略

IaC (Infrastructure as Code) のテスト・AWS CDK のテストは悩みポイントも多く,第6章はイイ内容だった.AWS CDK で宣言的なコードを実装していると,Fine-grained Assertions で想定したパラメータが設定されているかどうかをテストするのは効果的ではないと書いてあったりもして「それな〜」という共感ポイントも多かった.

印象的だったのは本書では「スナップショットテスト」基本的には導入を強くお勧めします。 と書かれているところだった.個人的には効果的に使えたことがなく,導入したけど消してしまったこともあった.リファクタリングをするときは cdk diff を実行すれば良いしな〜と思ったりもしていて.とは言え改めて導入を検討してみたいと思った😀

さらに本書で「ポリシー検証」として紹介されていた cdk-nag は便利で最近よく使ってる.テストという観点以外に「お作法を学ぶ」ために使うこともできて「あ〜こういう設定を考慮する必要があるんだな〜」という気付きにつながるので,結果不要だったら抑制してしまえば OK👌cdk-nag に関しては最近ブログにまとめた.

kakakakakku.hatenablog.com

スタック設計

AWS CDK プロジェクトのスタック設計も悩みポイントの一つだと思う.本書では第8章に どんな状況にも当てはまる万能なアーキテクチャは存在しません。 と書いてありつつも「こういう考え方はどうか」という具体的な例が紹介されていて良かった.第8章と第9章は特に読みたい人が多そうだな〜と感じた❗️

AWS CDK の強い参照 (Strong Reference) の大変さも紹介されていて「あ〜」という気持ちに😇前に参照を消すにも消せなくなって苦労した過去を思い出してしまった.他にも Construct ベースのクラス分割や Lambda / ECS を使ったアーキテクチャのディレクトリ構成例なども参考になる.なお,本書に載っているコードは GitHub に公開されていて,イメージを掴めると思う.

github.com

あと個人的には Dify on AWS with CDK の実装を最近読んでキレイだな〜と感じた👏 本書の GitHub リポジトリも含めて,何かしら参考にできるお手本を持っておくと良さそう.

github.com

気付いた誤植

  • P.10 200 回以上の更新されています。200 回以上も更新されています。
  • P.12 把握することを難しくなります。把握することが難しくなります。
  • P.15 AWS CDK を生まれました。AWS CDK が生まれました。
  • P.82 AWS 予約アドレス� → 特殊文字?
  • P.118 新鋭申請
  • P.124 Eventbridge ScheduleEventBridge Scheduler
  • P.124 DynamoDB StreamDynamoDB Streams
  • P.140 パブリックリポジトリ出ない場合パブリックリポジトリではない場合
  • P.142 ID を AWS_ACCOUNT_ID を設定してください。ID を AWS_ACCOUNT_ID に設定してください。
  • P.158 LambadaLambda

まとめ

AWS CDK の基礎から実践まで学べる「マスタリング AWS CDK」良かった📕あと個人的には us-east-1 リージョン(バージニア北部)の AWS Certificate Manager (ACM) 証明書を管理しようとすると面倒になる気がしてて,他にもありそうな「AWS CDK あるあるとその対策」をもっと読みたいな〜と思ったりもした😀

kakakakakku.hatenablog.com

ちなみに AWS CDK に限らず IaC (Infrastructure as Code) 全体のトピックを網羅的に学びたかったら「Infrastructure as Code, 3rd Edition」もおすすめしたい😀最近読んで最高だった.

kakakakakku.hatenablog.com