Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Amplify Gen2から知るAWS CDK Toolkit Libraryの使い方/How...
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
MURAKAMI Masahiko
July 12, 2025
Technology
1k
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
580
AWS Blocks を触ってみた/first-tach-aws-blocks
fossamagna
2
250
AWS Amplifyをもっと便利に使うための取り組み/amplify-tools-and-contributions
fossamagna
1
190
Amazon Verified Permissions実践入門 〜Cedar活用とAppSync導入事例/Practical Introduction to Amazon Verified Permissions
fossamagna
2
480
AWS Amplify Gen2向けのVSCode拡張を作って公開してみた話/lts-techday-2024
fossamagna
0
80
CDKアプリとしてのAmplify Gen2 - @aws-amplify/backendのアーキテクチャにみるCDKベストプラクティス -
fossamagna
3
3.8k
Amplify Gen2の 新機能と実践的な使用例 AWS Amplify Gen 2 Festival in Japan/New features and practical use cases in Amplify Gen2
fossamagna
0
890
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
220
Other Decks in Technology
See All in Technology
LLM機能を自作して分かるSnowflake Cortex AIの強み
nayuts
0
360
全人類(ほぼ)AWS Organizations の上でAWSを利用している、その世界を知る話
htan
1
130
SREでアラート疲れを 解決しよう!
kairim0
1
220
Kiro Crewをはじめよう
kizawa2020
1
140
契約書画像からの情報抽出に特化した視覚接地モデルを育てる話
sansantech
PRO
1
160
Execution in the Kingdom of Agents: Reflections on Abstraction and Complexity
bcantrill
0
940
自作バイナリを動かす「入口」8選
puhitaku
2
1.3k
OR学会2026年秋期大会_機械学習と数理最適化の融合による、配合レシピ最適化システム開発事例
brainpadpr
0
130
Running Kotlin + Quarkus with Lambda
nealle
1
410
WasmをRustにする
sansantech
PRO
0
150
AI 時代の Azure エンジニアリング ~ 私たちは何を磨き、何を任せるのか ~
chack411
1
590
go-sqletch
moznion
0
130
Featured
See All Featured
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
340
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
400
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
2
470
Between Models and Reality
mayunak
4
490
Building Flexible Design Systems
yeseniaperezcruz
330
41k
Producing Creativity
orderedlist
PRO
348
41k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
KATA
mclloyd
PRO
35
16k
We Are The Robots
honzajavorek
0
390
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
120
120k
The Cost Of JavaScript in 2023
addyosmani
55
10k
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