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

cdk deploy JawsSonic #MARATHONしながらAWSリソースをデプロイし...

cdk deploy JawsSonic #MARATHONしながらAWSリソースをデプロイしてみよう

Avatar for アキキー | Akihisa Ikeda

アキキー | Akihisa Ikeda

September 05, 2026

More Decks by アキキー | Akihisa Ikeda

Other Decks in Programming

Transcript

  1. 音声でやりとりする仕組み Discord 話す ボイスチャンネル 聞く AWS Cloud ⾳声 読み上げ ⾳声

    bot 受信 送信 ECS タスク AWS Fargate Discord Gateway Discord 接続・⾳声の⼊出⼒と制御 ⾳声→⽂字 ⽂章→⾳声 Speech to Text 投稿 検知 ⽂字起こしの オーケストレーション Text to Speech VOICEVOX で 読み上げ⾳声を合成 ⽂字起こし Claude Code channels プラグイン 通知 返信 Claude Code bot 読む 投稿 テキストチャンネル Transcribe Stream
  2. CDK × コーディングエージェント CDKの検証サイクル CDKで利用できる検証ツール/コマンド 実装・修正する Linter 型チェッカー 単体テスト cdk

    synth コーディングエージェント AWS CDK cdk diff cdk validate 検証してフィードバックを返す cdk drift cdk diagnose
  3. CDK × コーディングエージェント CDKの最近の動向 CDKの実装が正しいか検証できるコマンドが続々追加されている 2026/04 プレビュー 2026/06 プレビュー 2026/07

    プレビュー cdk diagnose cdk validate cdk lsp デプロイに失敗した原因を調査 するコマンド デプロイログやCloudTrail、作 成したリソースのログなどを見 て判断する デプロイに失敗しないか検証す るコマンド オフラインバリデーション →ルールセットに照らして検証 オンラインバリデーション →AWSアカウントの実際の状 態に合わせて、デプロイ可能か 検証する コードを書いている最中に、 CDK特有のエラーや警告を教え てくれるLanguage Serverを 立てるコマンド 保存時にSynthesizeを実行し て、エラー箇所をソースコード とマッピングして返す
  4. CDKアプリの開発フロー エージェントの動きをトレースしてみよう ▲ 実行サイクルが速い / 変更の回数が多い ファイル編集 実装のためにファイルを編集する git commit

    編集したファイルをまとめてコミットする git push コミットをまとめてリモートブランチにプッシュする 作成 PR cdk deploy プルリクエストを作成するとCIで検証が走る PRをマージするとCDから実環境にデプロイされる ▼ 実行サイクルが遅い / 変更の回数が少ない
  5. CDKアプリの開発フロー エージェントの動きをトレースしてみよう ▲ 実行サイクルが速い / 変更の回数が多い ファイル編集 実装のためにファイルを編集する git commit

    編集したファイルをまとめてコミットする 早いタイミングでエラーを潰すことで、検証サイクルを早められる! git push 作成 PR cdk deploy コミットをまとめてリモートブランチにプッシュする プルリクエストを作成するとCIで検証が走る PRをマージするとCDから実環境にデプロイされる ▼ 実行サイクルが遅い / 変更の回数が少ない
  6. CDKで検証する仕組み エージェントの動きをトレースしてみよう ファイル編集 Linter / 型チェッカー git commit 単体テスト /

    cdk synth git push cdk diff 作成 PR cdk deploy CI (cdk validate / cdk drift / Linter / 単体テスト / 型チェッカー) CD (cdk deploy) / cdk diagnose これらのタイミングで検証が走るように設定しています
  7. エージェントの動きをトレースしてみよう ファイルを編集するよ〜 ファイル編集 git commit git push 作成 PR cdk

    deploy ファイル編集後に検証する仕組み Linter ソースコードを静的解析して、プログラミング言語や CDKのルール違反を検証 型チェッカー ソースコードで定義している型に矛盾がないかを検証
  8. エージェントの動きをトレースしてみよう Lintエラーが出ちゃった ファイル編集 Lint結果 $ pnpm lint git commit git

    push 作成 PR cdk deploy awscdk-lint Lint plugins for AWS CDK × awscdk/pascal-case-construct-id Construct ID PascalCase は で指定してください Found 0 warnings and 1 error. awscdk-lint (eslint-plugin-awscdk/oxlint-plugin-awscdk) CDKのセオリーに基づくコーディング規約を提供する Lintプラグイン
  9. エージェントの動きをトレースしてみよう 修正したよ ファイル編集 ソースコード git commit // Construct ID PascalCase

    const bucket = new s3.Bucket(this, 'LogBucket', { removalPolicy: cdk.RemovalPolicy.RETAIN, }); git push 作成 PR cdk deploy ✅ を に修正
  10. エージェントの動きをトレースしてみよう 一区切りついたしcommitするね ファイル編集 git commit git push commit前に検証する仕組み Synthesize(cdk synth)

    作成 PR cdk deploy AWS CDK における単体テストの使い所を学ぶ CDKアプリを実行してCDKソースをCFnテンプレートに 合成し、デプロイできる状態にする CDKの単体テスト スナップショットテスト Fine-grained assertionsテスト バリデーションテスト
  11. エージェントの動きをトレースしてみよう 一通り実装できたしpushするよ ファイル編集 git commit git push 作成 PR cdk

    deploy push前に検証する仕組み cdk diff デプロイ済みのCFnテンプレートと合成した CFnテンプレートを見比べて差分を検証 AWSへアクセスして確認する
  12. エージェントの動きをトレースしてみよう プルリクエスト作ったよ ファイル編集 git commit git push 作成 PR cdk

    deploy プルリクエスト作成後の検証(CI) cdk validate オフライン:ルールセットに照らして検証 オンライン:AWSの状態を見てデプロイ可能か検証 cdk drift デプロイ済みのリソースに手で変更された形跡がない かを検証 Lint / 型チェック / 単体テスト
  13. エージェントの動きをトレースしてみよう cdk validate ファイル編集 が失敗してる cdk validate結果 $ cdk validate

    BotStack --unstable=validate git commit git push 作成 PR cdk deploy FATAL Resource of type 'AWS::S3::Bucket' with identifier 'akikii-conversation-log' already exists. # AWS S3 に同名の バケットが既に存在していた
  14. エージェントの動きをトレースしてみよう 修正したよ ファイル編集 ソースコード git commit const bucket = new

    s3.Bucket(this, 'LogBucket', { // bucketName CDK removalPolicy: cdk.RemovalPolicy.RETAIN, }); git push 作成 PR cdk deploy ✅ は指定せず、 に一意な名前を付けさせる
  15. エージェントの動きをトレースしてみよう cdk validate ファイル編集 通った!CIも成功したよ cdk validate結果 $ cdk validate

    BotStack --unstable=validate git commit git push 作成 PR cdk deploy ✨ Validation passed (1 stack)
  16. エージェントの動きをトレースしてみよう 実装完了したよ!ニンゲン、これでいい? ファイル編集 git commit git push 作成 PR cdk

    deploy 会話ログ用のS3バケット追加 会話を書込むようアプリ修正 おk、マージするね マージすると走るデプロイ $ cdk deploy --no-rollback # --no-rollaback # をつけるとデプロイ失敗してもリソースを切り戻さない 開発環境のような失敗しても問題ない環境で検証する
  17. エージェントの動きをトレースしてみよう デプロイが失敗しちゃった... ファイル編集 デプロイログ git commit BotStack | UPDATE_FAILED |

    AWS::ECS::Service Resource handler returned message: 'ECS Deployment Circuit Breaker was triggered' # git push 作成 PR cdk deploy タスクが起動できずデプロイ失敗 デプロイログからはタスク起動に失敗した理由がわ からない
  18. エージェントの動きをトレースしてみよう cdk diagnose で原因を調べるね ファイル編集 cdk diagnose結果 git commit $

    cdk diagnose BotStack --unstable=diagnose Source Location: new ConversationLog (lib/conversation-log.ts:31:5) git push 作成 PR cdk deploy Task stopped: Essential container in task exited Container "discord-bot" exited with code 1 # S3 Object upload failed: An error occurred (AccessDenied) when calling the PutObject operation: ... is not authorized to perform: s3:PutObject on resource: "arn:aws:s3:::botstack-.../run.log" 作成した バケットへ を書き込む権限がなかった ロールバックされずに残ったECSログから原因判明
  19. エージェントの動きをトレースしてみよう 修正したよ ファイル編集 git commit git push 作成 PR cdk

    deploy ソースコード const bucket = new s3.Bucket(this, 'LogBucket', { removalPolicy: cdk.RemovalPolicy.RETAIN, }); // Grants bucket.grants.write(props.taskRole); ✅ クラスで書き込み権限を付与
  20. CDKで検証する仕組み エージェントの動きをトレースしてみよう ファイル編集 Linter / 型チェッカー git commit 単体テスト /

    cdk synth git push cdk diff 作成 PR cdk deploy CI (cdk validate / cdk drift / Linter / 単体テスト / 型チェッカー) CD (cdk deploy) / cdk diagnose 検証サイクルを回すことでエージェントが自律的に修正できた!