Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Amplify Gen2から知るAWS CDK Toolkit Libraryの使い方/How...
Search
MURAKAMI Masahiko
July 12, 2025
Technology
980
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Amplify Gen2から知るAWS CDK Toolkit Libraryの使い方/How to use the AWS CDK Toolkit Library as known from Amplify Gen2
MURAKAMI Masahiko
July 12, 2025
More Decks by MURAKAMI Masahiko
See All by MURAKAMI Masahiko
AmplifyHostingConstructからSSRフレームワークのためのホスティング設計を考察する/amplify-hosting-construct
fossamagna
1
530
AWS Blocks を触ってみた/first-tach-aws-blocks
fossamagna
2
230
AWS Amplifyをもっと便利に使うための取り組み/amplify-tools-and-contributions
fossamagna
1
180
Amazon Verified Permissions実践入門 〜Cedar活用とAppSync導入事例/Practical Introduction to Amazon Verified Permissions
fossamagna
2
440
AWS Amplify Gen2向けのVSCode拡張を作って公開してみた話/lts-techday-2024
fossamagna
0
72
CDKアプリとしてのAmplify Gen2 - @aws-amplify/backendのアーキテクチャにみるCDKベストプラクティス -
fossamagna
3
3.7k
Amplify Gen2の 新機能と実践的な使用例 AWS Amplify Gen 2 Festival in Japan/New features and practical use cases in Amplify Gen2
fossamagna
0
880
Amplify Gen2を 拡張してみよう JAWS-UG北陸新幹線 ( 福井開催 ) 2024-04-06/Let's extend Amplify Gen2
fossamagna
0
1.1k
みんな本当に AWS Amplify を知っている?/do-you-really-know-aws-amplify
fossamagna
0
210
Other Decks in Technology
See All in Technology
Bet AI Day 2026丨AIを「使う」から、AIが「働く」へ ― LayerXが進める「組織AI」の社会実装
layerx
PRO
3
2.8k
現場に行くだけでは足りない——プロダクトエンジニアが業務の流れを捉える観点と、その鍛え方
takumiengineering
0
330
AI時代のAPI品質を支えるガードレール / API Guardrails for API quality in the AI era
yokawasa
1
160
GuardDuty 検知対応を DevOps Agent で効率化しようとしている話 / GuardDuty Investigations with DevOps Agent
masahirokawahara
1
330
V8コントリビュート超入門
riyaamemiya
0
150
When Does a Local Qwen Start to Break
morshoto
0
190
全員がプロダクトへ向き合う組織を持続成長させるために——組織づくりのフライホイールと4象限 / The Flywheel Model and Four Quadrants for Organizational Design
hiro_torii
4
900
2026/09/10 Spring_Bootから_Jakarta_EE_MicroProfileへの移行
megascus
0
230
Autonomous AI Databaseサービス・アップデート(FY27)/ adb-service-update-jp-fy27
oracle4engineer
PRO
0
130
『止めない』を設計する — 制約の中で、事業の根幹を支える判断
hiroyaterui
0
230
生成AI時代の クレデンシャルとパーミッション設計
nrinetcom
PRO
4
1.6k
Kiro Crewしか勝たん!?
miu_crescent
PRO
0
190
Featured
See All Featured
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
380
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
810
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
4
590
Between Models and Reality
mayunak
4
450
AI: The stuff that nobody shows you
jnunemaker
PRO
9
980
The Language of Interfaces
destraynor
162
27k
Product Roadmaps are Hard
iamctodd
55
13k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
510
Transcript
AWS Amplify Gen2から知るAWS CDK Toolkit Library の使い方 AWS CDK Conference
2025 presented by JAWS-UG 2025-07-12 株式会社永和システムマネジメント 村上雅彦 (a.k.a @fossamagna) 1
自己紹介 名前: 村上 雅彦 所属: 株式会社永和システムマネジメント コミュニティ活動: Amplify Japan User
Group 運営メ ンバー、AWS Community Builder (Front-End Web & Mobile since 2022) X (Twitter): @fossamagna GitHub: @fossamagna 2
このセッションで話すこと AWS CDK Toolkit Library、このライブラリを どういった時に使うのか? 使うと何ができるのか? について、実際にライブラリを利用している Amplify Gen2
( @aws-amplify/backend ) の実装を通して紹介します。 3
AWS CDK Toolkit Library とは? 公式ドキュメント: https://docs.aws.amazon.com/ja_jp/cdk/v2/guide/toolkit-library.html AWS CDK Toolkit
Libraryは、AWS CDKをプログラムで操作するためのライブラリ です。 4
何ができるのか? AWS 上でプログラムによるアクセスを必要とする CDK アクションを実行できま す。AWS CDK Toolkit Libraryを使用すると、ブートストラップ、合成、デプロイな どのアクションを、コマンドラインインターフェイス
(CLI) コマンドではなくコー ドで実装できます。 CLIで馴染みのある cdk deploy や cdk synth といったコマンド相当の処理を あなた の書いたプログラムから実行できる ようになります。 5
どういう時に使うのか? (ユースケース) このライブラリを使用すると、カスタムツールを作成したり、専用の CLI アプリ ケーションを構築したり、CDK のプログラムによるアクセス機能を開発ワークフ ローに統合したりできます。 まさに Amplify
Gen2 は、このライブラリを使って独自のCLI ( npx ampx ) を構築して いる良い例です。 6
AWS CDK Toolkit Libraryの基本的な使い方 npm: https://www.npmjs.com/package/@aws-cdk/toolkit-lib わずか5ステップで使い始めることができます。 1. @aws-cdk/toolkit-lib をインストール
2. Toolkit インスタンスを作成 3. CDKアプリ用のクラウドアセンブリソースを作成 4. CDKアプリのプログラムアクションを定義 5. (オプション) CDKツールキットをさらにカスタマイズ 7
コード例: cdk deploy を実行する // 1. `@aws-cdk/toolkit-lib`をインストール&パッケージインポート import { Toolkit
} from '@aws-cdk/toolkit-lib'; import { App, Stack } from 'aws-cdk-lib'; import * as s3 from 'aws-cdk-lib/aws-s3'; // 2. `Toolkit` インスタンスを作成 const toolkit = new Toolkit(); // 3. CDKアプリ用のクラウドアセンブリソースを作成(インラインで S3 バケットを作成) const cloudAssemblySource = await toolkit.fromAssemblyBuilder(async () => { const app = new App(); const stack = new Stack(app, 'SimpleStorageStack'); new s3.Bucket(stack, 'MyFirstBucket', { versioned: true }); return app.synth(); }); // 4. CDKアプリのプログラムアクションを定義(デプロイを実行) await toolkit.deploy(cloudAssemblySource); 8
Toolkit Libraryが提供する「アクション」 synth list diff deploy rollback watch drift destroy
bootstrap refactor 9
Amplify Gen2で使われているアクション Amplify Gen2 ( @aws-amplify/backend ) では、以下の3つのアクションが使われていま す。 deploy
: ampx deploy/sandbox でデプロイ実行 synth : ampx deploy/sandbox でデプロイ実行前にクラウドアセンブリソースを 作成 destroy : ampx sandbox でデプロイした環境を破棄 10
Amplify Gen2の実装から学ぶカスタマイズ術 AWS CDK Toolkit Libraryの真価は、そのカスタマイズ性にあります。 Amplify Gen2の実装を例に、次のポイントを見ていきましょう。 1. IIoHost
: CLIのUI/UXをカスタマイズ 2. Cloud Assembly Source : CDKアプリのソースを動的に生成 3. エラーハンドリング: 安全なエラー処理 11
1. IIoHost : CLIのUI/UXをカスタマイズ IIoHost はCDK Toolkitとアプリケーションとの間の通信を定義するインターフェース 独自の IIoHost を実装することで、CDKからの出力(プログレスバーなど)や、対話
的な問い合わせ(これらの変更をデプロイしますか?など)への応答をカスタマイズ できます。 export interface IIoHost { /** * メッセージ: 操作の進捗や状態通知 (応答不要) */ notify(msg: IoMessage<unknown>): Promise<void>; /** * リクエスト: 利用者からの応答が必要な問いかけ */ requestResponse<T>(msg: IoRequest<unknown, T>): Promise<T>; } 12
Amplify Gen2の実装: AmplifyIOHost Amplify Gen2は AmplifyIOHost という独自の IIoHost を実装しています。 requestResponse
は常にデフォルト応答を返す(非対話的) notify はイベントハンドラ( AmplifyEventLogger )を呼び出す TTYが有効な場合、リソース毎のプログレスバーを表示 リッチで分かりやすい進捗表示を実現 13
デプロイ時の表示: CLI利用 0:00 / 3:56 14
デプロイ時の表示: Toolkit Library(AmplifyIOHost)利用時 0:00 / 6:14 15
2. Cloud Assembly Source : CDKアプリのクラウドアセンブリソースを動 的に生成 ICloudAssemblySource は、CDKアプリからクラウドアセンブリを作成方法を定義す るインタフェースです。
クラウドアセンブリソース:CloudFormationのテンプレートやLambdaソースのア セットなど、synthプロセスで作成されるソース CDK Toolkitには以下のヘルパーメソッドが定義されていて、目的に応じてクラウドア ッセンブリーソースを設定できるようになっています。 fromCdkApp: ts-node app.ts のようなCDKがサポートしている任意の言語で既存 のCDKアプリを操作する場合に利用 fromAssemblyBuilder: synthプロセスをプログラムで制御する場合に利用 fromAssemblyDirectory: synth済みのクラウドアセンブリソースを使用する場合に 利用 16
Amplify Gen2の実装: tsxの利用 Amplify Gen2では fromAssemblyBuilder ヘルパーを使い、動的にCloud Assembly を生成 amplify/backend.ts
をエントリーポイントとして tsx で読み込む this.cdkToolkit.fromAssemblyBuilder( async () => { // tsx (tsImport)で.amplify/backend.ts をエントリーポイントとして読み込む await tsImport( pathToFileURL(this.backendLocator.locate()).toString(), import.meta.url, ); return new CloudAssembly(this.absoluteCloudAssemblyLocation); }, { contextStore: new MemoryContext(contextParams), outdir: this.absoluteCloudAssemblyLocation, // .amplify/artifacts/cdk.outに出力 }, ); 17
3. エラーハンドリング CDK Toolkit Libraryからスローされるエラーには、発生元( toolkit or user )を示す フラグが付与されています。
注意点: instanceof でエラーの型を判定するとバグの元になります。公式が提供 するヘルパー関数 ( isToolkitError ) を使いましょう。 import { isToolkitError } from '@aws-cdk/toolkit-lib'; try { // ... toolkit action } catch (e) { if (isToolkitError(e)) { // Handle toolkit-specific error console.error(`Toolkit error: ${e.message}`); } else { // Handle other errors } } 18
まとめ AWS CDK Toolkit Library を使うと、CDKの各種アクションをプログラムから実行 できる。 ユースケースは、カスタムCLIの構築や開発ワークフローへの統合。 Amplify Gen2
は、このライブラリを活用した好例。 IoHost や CloudAssemblySource などのカスタマイズポイントを理解すること で、より高度で柔軟なツールを開発できる。 AWS CDKを利用したツールや開発ワークフローでの利用時にはCDK Toolkit Libraryを検 討してみてください! 19
参考資料 公式ドキュメント https://docs.aws.amazon.com/ja_jp/cdk/v2/guide/toolkit-library.html npm https://www.npmjs.com/package/@aws-cdk/toolkit-lib AWS Blog Build custom CLIs,
deployment automation, and more with the AWS CDK Toolkit Library 20
ご清聴ありがとうございました。 21