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

Amplify Gen2でbackend.tsにCDKを定義する/しない事によるCDKの挙動の...

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for Makky12 Makky12
July 17, 2026

Amplify Gen2でbackend.tsにCDKを定義する/しない事によるCDKの挙動の違いとユースケース

2026/07/18(土)に開催された「AWS CDK Conference Japan 2026」における私のセッション「Amplify Gen2でbackend.tsにCDKを定義する/しない事によるCDKの挙動の違いとユースケース」の発表資料です。 
#jawsug_cdk #cdkconf2026

https://jawsug-cdk.com/cdkconf2026/

Avatar for Makky12

Makky12

July 17, 2026

More Decks by Makky12

Other Decks in Technology

Transcript

  1. Amplify Gen2でbackend.tsにCDKを 定義する/しない事によるCDKの挙動の 違いとユースケース 2026.07.18 AWS CDK Conference Japan 2026

    presented by JAWS-UG CDK支部 KDDIアジャイル開発センター 名古屋オフィス 鈴木 正樹
  2. 1 KDDI Agile Development Center Corporation 自己紹介 ◼ 氏名:鈴木 正樹

    ◼ 所属:KDDIアジャイル開発センター(KAG) 名古屋オフィス ◼ 役割:クラウドアーキテクト & Atlassian テクニカルエキスパート サーバーレス&IaCが大好き。好きなサービスはAWS CDKとAWS Lambda 主にJAWS-UG CDK支部 & JAWS-UG 名古屋で活動 ◼ Certification: ◼ AWS Community Builder(serverless)(2023~) ◼ Scrum Inc. 認定スクラムマスター(2025~) ◼ : @makky12(SUZUKI Masaki@クラウドエンジニア) ◼ Blog:https://makky12.hatenablog.com/
  3. 2 KDDI Agile Development Center Corporation この発表について ※ backend.tsを使用しなかった理由が知りたい方は、あとで聞いてください(個別にお教えします) •

    この発表は、私が担当しているAtlassian Cloud業務で作成した「Atlassian Cloud サポート チーム用AIエージェント」の作成実績がベースになっています ※なおこのAIエージェントでは、backend.tsは使用してません。(Amplify Hostingのみ使用)
  4. 3 KDDI Agile Development Center Corporation アジェンダ 本セッションのアジェンダ一覧 • 前提:Amplify

    Gen2について • ケース1: backend.tsを使うケース • ケース2: backend.tsを使わないケース • AIによる課題の解消 • 参考情報 ◦ Gen2を使用しない場合のフロントエンドデプロイについて ※ この資料は、下記URLで公開済みです ◦ この資料です
  5. 5 KDDI Agile Development Center Corporation Amplify Gen2とは? Amplify Gen2のおさらい

    • AWS Amplify(フルスタックWeb・モバイル開発プラットフォーム)の第2世代 • 最大の特徴は「バックエンド構築にAWS CDKが採用された」こと ◦ 「amplify/backend.ts」ファイル(以下「backend.ts」と記載)にバックエンド定義を記載する ◦ Gen1では「Amplify CLI」というCLIベースで構築 • 一部のリソースを簡単なTypeScript定義で作成可能(CDK定義が不要) ◦ 例:認証(Cognito)/ API(AppSync + DynamoDB)など ◦ 実装例は次スライドに記載 • 各種Gitプロバイダーのブランチpushをトリガにデプロイ可能 ◦ 以後「ブランチトリガデプロイ」と記載
  6. 6 KDDI Agile Development Center Corporation Amplify Gen2とは? Amplify Gen2のおさらい

    • 「backend.ts」の実装例 ◦ ほぼ最小構成の内容。実際はもっと複雑になります(別ファイルにCDK定義を記載したり、既存Stackクラスの 内容をcreateStack関数で新規作成したクラスに反映したり…など) • ただし「絶対にbackend.tsを使わなければならない」わけではない ◦ そもそもGen2の機能(ブランチトリガデプロイなど)が使えないケースも存在します(詳細は後述) ◦ 使う場合/使わない場合の違いについて、次スライドからお話しします
  7. 8 KDDI Agile Development Center Corporation backend.tsを使った際のメリット • 一部機能をCDK定義不要で作成可能 ◦

    認証(Cognito)/ API(AppSync & DynamoDB)/ ストレージ(S3)など ◦ 特にCognitoを用いた認証基盤をシンプルに構築できるのは便利 • CDKスタックの運用負荷を軽減可能 ◦ CDKで定義するリソース数が少なくなり、CDKスタックの運用負荷削減につながる ◦ CDK定義に費やす時間も短くなるため、より短い時間でアプリリリース(=デプロイ)が可能に • ブランチトリガデプロイにより、デプロイ基盤(=CD定義)の作成・運用が不要に ◦ push/mergeと同時に自動でデプロイ実行されるため、デプロイ基盤の作成・運用が不要(CIは必要)
  8. 9 KDDI Agile Development Center Corporation backend.tsを使った際の課題 デメリットとまではいかないまでも、検討する必要がある事項 • CDK定義不要なリソースについて、詳細なカスタマイズができない

    ◦ ある程度は可能だが、CDKほど細かくカスタマイズはできない(Amplifyに握られてしまう) • Gen2の作法にロックインしてしまう ◦ defineBackend, createStack など、Gen2独自の作法に寄せることになってしまう ◦ 既存スタックを組み込む際にcreateStackを利用した統合が必要で、通常のCDKと比べレイヤーが1つ増える ◦ Authなど一部のリソース定義がCDKに記載されないため、EaC(Everything as Code/Everything as CDK)と いう観点で懸念が残る(とはいえbackend.tsに記載があるのは確か) • 一部リソースやデプロイなどのブラックボックス化 ◦ AuthなどCDK定義不要なリソースについて、実際にどのような構成なのかは見えない(Gen2に握られている) ◦ ブランチトリガデプロイについても便利な反面、その詳細な挙動が把握しづらい
  9. 10 KDDI Agile Development Center Corporation backend.tsのユースケース backend.tsを使うべきケース(使った方がいいケース) • 詳細なカスタマイズが不要で、Webアプリを(素早く)作りたい

    ◦ カスタマイズが不要であれば「Gen2にお任せ」という面がプラスに働く(特にCognito) ◦ 特に「素早くWebアプリを作りたい」という場合、Gen2は非常に有効 • 運用管理負荷を減らしたい ◦ Authなど一部リソースのCDK定義が不要なので、CDK(=インフラ構成)の運用負荷を減らせる ◦ ブランチトリガデプロイによりデプロイ基盤の作成・運用が不要で、フロントエンド&バックエンドをまとめて デプロイ可能 • サンドボックス環境の作成 ◦ 上記の通り「管理工数を少なくし、素早くアプリを作りたい」ケースに向いているため、動作確認用のサンド ボックス環境としてうってつけである ◦ ブランチトリガデプロイで使うブランチごとにアプリを作れば、開発者ごとのサンドボックス環境作成も容易
  10. 12 KDDI Agile Development Center Corporation その前に:そもそもbackend.tsが使えないケースがある backend.tsを使えない環境 • Gen2では「ブランチトリガデプロイ」にてデプロイを実施する

    ◦ Amplify Gen2のマネジメントコンソールで設定 • 対応するGitプロバイダーは GitHub/BitBucket/CodeCommit/GitLab の4つ ◦ 裏を返せば、これら以外のGitプロバイダーではそもそもbackend.tsの使用は不可能 • 例えばGitHub Enterpriseを使用している場合、そもそもbackend.tsは使用不可 ◦ 少なくともGitHub Enterprise Serverでは使用不可(Cloud版は未確認)
  11. 13 KDDI Agile Development Center Corporation backend.tsを使わない際の恩恵 簡単に言えば「backend.tsを使った際の課題」の逆です • 各種リソース・デプロイ設定の詳細なカスタマイズが可能

    ◦ 各種AWSリソースの設定やデプロイの挙動など、細かいカスタマイズが可能 ◦ 全て自分でカスタマイズ可能なので、ブラックボックス化することはない • 今までのCDKに関する知見を活かせる ◦ Gen2のような独自の抽象化が不要で通常のCDKの作法で書けるので、今までの知見を活かせる ◦ 特に「マルチスタック/マルチリージョンでスタック定義を行う」など複雑な定義を行う場合、独自の作法が不 要な通常のCDKの方がやりやすい(例:メインスタックとWAF用スタックでリージョンが違うなど) • 全てのリソースがCDKに定義されている ◦ 全てのリソース定義がCDKで管理されているため、EaC(Everything as Code/Everything as CDK)の観点で も懸念が少ない
  12. 14 KDDI Agile Development Center Corporation backend.tsを使わない際の課題 これも簡単に言えば「backend.tsを使った際の恩恵」の逆…というわけではないです • 運用管理の負荷が増える

    ◦ 運用・管理が必要な項目が増えるため、運用管理の負荷は増える ◦ 「詳細カスタマイズ可能」「ブラックボックス化しない」という点とのトレードオフ • 全CDKリソースの定義が必要 ◦ Cognitoを含めた全リソースでCDK定義が必要なので、その分CDKスタックサイズや作業量は増える ◦ 特に、フロント側(Amplify Hosting)に関しても定義が必要 • Amplify HostingはL2コンストラクト未対応なので、L1(=CloudFormationと同じ定義)で書く必要がある • フロントエンド/バックエンドでデプロイを個別に行う必要がある ◦ Gen2のようにフロントエンド・バックエンドまとめてデプロイする基盤がないので、個別にデプロイ基盤を作 る必要がある ◦ Gen2を使わないフロントエンドデプロイについては後述の「参考情報」セクションを参照
  13. 16 KDDI Agile Development Center Corporation AIによる課題の解消 backend.tsコーディングやCDK定義の課題は、AIにより解消可能 • 先述の「課題」の一部(下記)は、backend.tsコーディングやCDK定義に関連するもの

    ◦ backend.ts使用時:Gen2独自の作法に寄せる、通常のCDKと比べレイヤーが1つ増える ◦ backend.ts未使用時:全リソースのCDK定義が必要、Amplify HostingのL1コンストラクト定義が必要、フロン トエンド・バックエンドを個別にデプロイする基盤の作成が必要…など • 今はAIエージェントに任せれば、これらのほとんどを解決してくれる(はず) ◦ どちらのケースでも、プロンプトで指示すればAIが作業完了してくれる ◦ CDKについては、AWS公式の「AWS IaC MCP Server」を利用する • つまりコーディングやCDK定義の課題に関しては、あまり深刻に考える必要はない ◦ backend.tsの使用は「リリースまでの早さ」「運用・管理負荷」「カスタマイズ性」など「コーディング・ CDK定義」以外の要素から決めればよい ◦ とはいえ、人間のレビューは必須なので「AIに丸投げでOK!」という事ではないです
  14. 18 KDDI Agile Development Center Corporation 「StartDeploymentCommand」によるデプロイ Gen2を使用しない場合のフロントエンドの自動デプロイフロー構築 • フロントエンドデプロイは「@aws-sdk/client-amplify(AWS

    SDK)」の 「StartDeploymentCommand」でLambdaから実施可能(引数は以下) ◦ appId:AmplifyアプリのID(App ID) ◦ branchName:Amplifyアプリ作成時に設定した「ブランチ名」(Gitのリポジトリブランチとは別) ◦ sourceUrl:フロントエンド一式の*.zipファイルのS3バケット&キー名 • 上記Lambdaは「sourceUrl」のS3バケットからCreateObjectトリガで実行可能 ◦ *.zipファイルのS3アップロードをトリガにLambdaを実行することができる
  15. 19 KDDI Agile Development Center Corporation 「StartDeploymentCommand」によるデプロイ Gen2を使用しない場合のフロントエンドの自動デプロイフロー構築 • つまり下記フローを組むことで、フロントエンドの自動デプロイが可能

    ◦ これもAIに指示すれば組んでくれるはず • 注意点は以下の通り ◦ 初回だけは、先にバックエンド(CDK)からデプロイしないと失敗する(*.zipファイルアップロード先のS3バ ケットが存在しないから) ◦ ListBucket, GetObjectなどのS3の読み取りポリシーはAmplify(amplify.amazonaws.com)にも必要(デプ ロイ時にAmplifyが*.zipファイルをダウンロードするので) Amazon Simple Storage Service (Amazon S3) AWS Lambda AWS Amplify GitHub Actions (CI/CD) push/merge CreateObject トリガ実行 フロントエンド デプロイ GitHub Actions (repo/branch) zip作成& アップロード
  16. 21 KDDI Agile Development Center Corporation まとめ ※ 本セッションのまとめ •

    backend.tsを使用すると一部リソースをCDK定義せず作成可能で、CDKスタックやCDKデプ ロイの運用負荷が削減する反面「詳細なカスタマイズができない」「Gen2の作法に寄せるこ とになる(ロックイン)」「一部リソースのブラックボックス化」などの課題がある • 逆に利用しない場合、詳細なカスタマイズが可能だが「スタックの運用負荷が増える」「フ ロントエンド/バックエンドで個別にデプロイ基盤を作る必要がある」などの課題がある ◦ フロントエンドデプロイについては「StartDeploymentCommandによるデプロイ」スライドを参照 • backend.tsコーディングやCDK定義の作業は、AIを利用することで効率的に実施可能 ◦ 「AWS IaC MCP Server」など、専用の各種MCPを利用する