Upgrade to Pro — share decks privately, control downloads, hide ads and more …

CDK Toolkit Libraryの紹介

Avatar for Makky12 Makky12
July 05, 2025
43

CDK Toolkit Libraryの紹介

2025/07/05(土)に開催された「JAWS ミート 2025」における私の発表「CDK Toolkit Libraryの紹介」における私の発表資料です。 #jawsmt #jawsug

https://jaws-ug-tokaido.connpass.com/event/355144/

Avatar for Makky12

Makky12

July 05, 2025
Tweet

More Decks by Makky12

Transcript

  1. 1 KDDI Agile Development Center Corporation 自己紹介 ◼ 氏名:鈴木 正樹

    ◼ 所属:KDDIアジャイル開発センター(KAG) 名古屋オフィス ◼ 役割:クラウドアーキテクト & バックエンドエンジニア AWS(特にサーバーレスやInfrastructure as Code)が大好き。 好きなサービスはAWS LambdaとAWS CDK 主にJAWS-UG 名古屋 & JAWS-UG CDK支部で活動 ◼ Certification: ◼ AWS Solution Architect Associate(2023) ◼ AWS Community Builder(serverless)(2023~) ◼ : @makky12(SUZUKI Masaki@クラウドエンジニア) ◼ Blog:https://makky12.hatenablog.com/
  2. 2 KDDI Agile Development Center Corporation 本日のアジェンダ • CDK Toolkit

    Libraryについて • CDK Toolkit Libraryの特徴・メリット • CDK Toolkit Libraryに関するQ&A ※ 「実際にCDK Toolkit Libraryを動かしてみた」的なことは話しません。ご了承ください (後日どこかで話したい)
  3. 4 KDDI Agile Development Center Corporation CDK Toolkit Libraryとは CDK

    Toolkit Libraryの概要 ※個人の認識です • 今までCLI(CDK CLI)で実施していたCDKの各種処理(※)を、プログラムコードから実行 可能なライブラリ ◦ ※ cdk synth, cdk deployなど • 2025/07/05現在、Node.js(TypeScript/JavaScript)にのみ対応 • コードベースで記載することにより、下記のようなメリットがある ◦ TypeScriptによる「型」の恩恵を受けられる(型の不一致などトランスパイル問題の早期発見など) ◦ 命名規則、セキュリティベースライン、コーディングルールなどを一元管理化し、コードレベルで自動的に適用 可能(各種Linter, cdk-nag, zodなど) ◦ 各種処理が失敗した際のエラーハンドリング処理を細かく実装可能(CDK Toolkit Libraryには独自のエラーハ ンドリング機能が用意されています)
  4. 5 KDDI Agile Development Center Corporation CDK Toolkit Libraryのインストール&実行 •

    npmモジュールなので、一般的なnpmモジュールと同じ処理を行えばOK(下記ソース参照) # インストール npm install –save @aws-cdk/tooklit-lib # ※ここからしばらくはCDK Toolkit Library独自の処理ではないが、参考のために必要な処理を記載 # npx cdk initして、CDKの構成を自動作成する(フォルダが空じゃないとエラーになる) npx cdk init --language typescript # あとはnpm install すればCDKに最低限必要なものはすべてインストールされる npm install # その他AWS SDK JavaScript v3やLambdaの型定義など、必要なものをインストールする npm i @aws-sdk/client-lambda npm i -D @types/aws-lambda # 最後にCDK Toolkit Libraryを使用して記載したTypeScriptソース(ここではcdk-toolkit-library.ts)を実行すればOK ts-node cdk-toolkit-library-source.ts
  5. 7 KDDI Agile Development Center Corporation インフラライフサイクルの細かいハンドリング&CDKソースとの統合 • 各種処理をアプリで実行することで、成功・失敗時の挙動やエラーハンドリングをコードで 細かく制御できるため、下記のようなカスタマイズが可能

    ◦ 進行状況を監視し、インジケータで表示する ◦ 進行状況や処理結果に応じた、細かいログ制御を実施する... etc. • CDKをインフラライフサイクルのワークフローに統合し、組織やチームで専用のアプリを構 築する…といったことも可能 • CDKのユースケースである「アプリエンジニアがインフラ構成を管理する」ケースに今まで 以上に適するようになった
  6. 8 KDDI Agile Development Center Corporation インテグレーションテスト・一時的な環境での動作検証 • AWS SDK

    for JavaScript v3を用いたインテグレーションテスト(※)を容易に実行可能 ◦ 「@aws-sdk/client-lambda」の「InvokeCommand」を使用する • PoCや試行目的で作成した一時的な環境の作成・動作検証・破棄をCLIを使うことなく容易に 実現可能 ◦ GitHub ActionsのようなCLIコマンド群を作成する必要がない ◦ 厳密に言えば「ts-node xxx.ts」だけは必要ですが… ◦ 最近ならAIを用いてサクッとコードを書いてもらうことも可能 ※ インフラ環境を実際にAWSにデプロイした後にAWS上のLambdaを実行し、インフラとアプリロジックが正しいこ とを確認するテスト
  7. 11 KDDI Agile Development Center Corporation CDK Toolkit Libraryに関するおすすめ参考サイトはどこ? A:下記サイトが参考になります

    • CDK Toolkit Library を使用してプログラムによるアクションを実行する ◦ AWS公式サイト。始め方から設定情報なんかも載っている • Build Custom CLI's, Deployment Automation, and more with the AWS CDK Toolkit Library ◦ Adam Keller氏のブログ ◦ とりあえず「まずCDK Toolkit Libraryを動かす」際はこちらを参照するとよい • CDK Toolkit Library と CDK CLI の違い(365歩のテック) ◦ AWS Hero 後藤さんのブログ ◦ 踏み込んだ内容にも触れているので、ぜひ一度確認することをお勧めします(context情報など) ◦ CDKのことを調べたい場合は、とりあえずここを見ましょう
  8. 13 KDDI Agile Development Center Corporation 特徴・メリットは分かったけど、注意点・デメリットもあるんでしょ? A:あるに決まってるでしょ(何事もトレードオフ) • デフォルトだと一部センシティブな処理(S3バケット削除など)も確認なしに実行される

    ◦ CDK Toolkit Libraryでは「RequireApproval」のデフォルト値が「NEVER(何もしない)」のため ◦ CDK CLIは「BROADENING」で、一部処理で事前にユーザーに承認を要求する • 「cdk destroy(スタック削除)」もユーザーへの確認なしにダイレクトで実施する ◦ 「cdk destroy(スタック削除)」も例外ではなく、事前確認なしにダイレクトに実施されてしまう ◦ ソースの記載ミス(if文分岐など)で、うっかりスタックを削除しないように注意が必要 • クラウドアセンブリのキャッシュは必ず最後にdisposeする ◦ CDK Toolkit Libraryのsynthメソッドの結果(クラウドアセンブリ)をキャッシュすることが可能 ◦ ただしその場合、最後にdisposeメソッドを実施しないとクラウドアセンブリファイルのロックが解放されず、 次回実行時にエラーになる、とのこと(AWS Hero 後藤さんの情報)
  9. 15 KDDI Agile Development Center Corporation CDK Toolkit Libraryでの単体・インテグレーションテストについてkwsk A:続きはAWS

    CDK Conference Japan 2025で! • テストについては、7/12(土)開催の「AWS CDK Conference Japan 2025」にて! ◦ イベントURL:https://jawsug-cdk.connpass.com/event/356357/ • 「CDK Toolkit Libraryにおけるテストの考え方」という内容で発表します ◦ CDK Toolkit Libraryにテストランナーはあるのか? ◦ 単体テストもCDK Toolkit Libraryでできないの? ◦ 単体テストとインテグレーションテストの扱い…etc.
  10. 札幌オフィス SAPPORO OFFICE 秋田オフィス AKITA OFFICE 高崎オフィス TAKASAKI OFFICE 金沢オフィス

    KANAZAWA OFFICE 舞鶴オフィス MAIZURU OFFICE 広島オフィス HIROSHIMA OFFICE 福岡オフィス FUKUOKA OFFICE 那覇オフィス NAHA OFFICE 仙台オフィス SENDAI OFFICE 東京本社 TOKYO MAIN OFFICE 三島オフィス MISHIMA OFFICE 名古屋オフィス NAGOYA OFFICE 大阪オフィス OSAKA OFFICE