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

自作Discord音声botをLambda MicroVMsに移行した話 / Migratin...

自作Discord音声botをLambda MicroVMsに移行した話 / Migrating My Discord Voice Bot to Lambda MicroVMs

Avatar for アキキー | Akihisa Ikeda

アキキー | Akihisa Ikeda

October 21, 2026

More Decks by アキキー | Akihisa Ikeda

Other Decks in Programming

Transcript

  1. Lambda MicroVMsとは? Lambda MicroVMsとは? 素早く起動して状態を保ったまま停止・再開できる隔離された実行環境 Lambda MicroVM ビルド(イメージの作成・更新) イメージ アプリを⼊れる

    スナップショット 起動しきった状態 実⾏中 起動 Lambda MicroVM Lambda MicroVM スナップショットから起動するので、起動時間が短い 一時停止して、止めたところから再開できる 一時停止も含めて、最大8時間使える AWS introduces Lambda MicroVMs for isolated execution of user and AI-generated code https://aws.amazon.com/about-aws/whats-new/2026/06/aws-lambda-microvms/ ⼀時停⽌
  2. Lambda MicroVMsとは? Lambda MicroVMsとは? Lambda Event Functions(旧Lambda Functions)との違い Lambda Event

    Functions イベントが来たら動く 関数の形で書く 最大15分 使い捨ての実行環境 What is AWS Lambda? - How Lambda compute primitives compare https://docs.aws.amazon.com/lambda/latest/dg/welcome.html Lambda MicroVMs 自分で立ち上げて、止めるまで動く どんなアプリケーションでも動かせる 最大8時間(一時停止を含む) 止めても、同じ環境にまた戻れる
  3. Lambda MicroVMsを試す ポイント① コンテナを1つにまとめる必要があった ECS Fargate Discord bot 読み上げ 文字起こし

    Lambda MicroVMs 1つのコンテナイメージ Discord bot 文字起こし 読み上げ(VOICEVOX) ベースイメージ Lambda MicroVMsは1つのコンテナ イメージから実行環境をセットアッ プするので、複数のコンテナを扱え ない 読み上げとして利用している VOICEVOX※はコンテナイメージで 配布されているため、仕方なくベー スイメージとして扱うことにした ※ VOICEVOX…ずんだもん等の声で読み上げられる音声合成ソフトウェア
  4. Lambda MicroVMsを試す ポイント① コンテナを1つにまとめる必要があった Q. コンテナごとに別サービスに切り出してもよいのでは? Lambda Event Functions (読み上げ)

    Lambda MicroVMs (Discord bot) API Gateway Lambda Event Functions (文字起こし) A. ネットワークの遅延が大きかった ネットワークの遅延が大きく通話体験が損なわれたため、1つのECSタスクにまと めてlocalhostで通信するようにした
  5. Lambda MicroVMsを試す ポイント② 標準ではUDP接続が失敗していた Discord ボイスチャット AWS Cloud Gateway接続 (WebSocket)

    ⾳声の送受信 (UDP) Discord bot (Lambda MicroVMs) Discordのボイスチャットにbotを入れてみた ら、接続に失敗した 原因をたどると、音声を送受信するUDPの接 続が失敗していた 標準のネット接続(INTERNET_EGRESS)で は、外向きのUDPが通らない
  6. Lambda MicroVMsを試す ポイント② 標準ではUDP接続が失敗していた INTERNET_EGRESS(標準) VPC_EGRESS Discord ボイスチャット AWS Cloud

    Gateway接続 (WebSocket) ⾳声の送受信 (UDP) Discord Gateway接続 (WebSocket) AWS Cloud VPC パブリックサブネット ボイスチャット ⾳声の送受信 (UDP) Internet Gateway NAT Gateway プライベートサブネット Discord bot (Lambda MicroVMs) → VPC_EGRESSならUDP接続ができる Discord bot (Lambda MicroVMs)
  7. ポイント③ コストが増加してしまう Lambda MicroVMsを試す NATの固定費が高い Discord Gateway接続 (WebSocket) AWS Cloud

    VPC パブリックサブネット ボイスチャット ⾳声の送受信 (UDP) Internet Gateway NAT Gateway プライベートサブネット Discord bot (Lambda MicroVMs) Lambda MicroVMsをVPCに置くとNATを利用す る必要があるが、常に配置していないといけな いのでコストがかかる NAT Gatewayだと固定費だけで1か月あたり約 49USDかかる (0.062 + パブリックIPv4 0.005) USD × 730時間(東京、オ ンデマンド) Fargateだと月に約3USD程度しかかかっていな いので、コストが大幅に増加してしまう
  8. ポイント③ コストが増加してしまう Lambda MicroVMsを試す パブリックサブネットに配置できないか考える Discord ボイスチャット AWS Cloud VPC

    パブリックサブネット セキュリティグループ アウトバウンドだけ許可 Fargateタスク パブリックIPを持つ プライベートサブネット Internet Gateway 外に出る インターネットに 出られない Lambda MicroVMs パブリックIPを持てない Fargateはパブリックサブネットに置くこ とで、NATを利用せずにインターネットア クセスしていた※ Lambda MicroVMsはパブリックIPを持て ないので、NATを利用してプライベートサ ブネットからアクセスする方法しか残さ れていない ※ インバウンドアクセスをブロックするセキュリティグ ループを設定することで、パブリックサブネットに置く ことを許容している
  9. ポイント③ コストが増加してしまう Lambda MicroVMsを試す コストを比較してみる 月20時間使う場合 ECS Fargate(今) Lambda MicroVMs+NATインスタンス

    Lambda MicroVMs+NAT Gateway Fargate Lambda MicroVMs 約2.6ドル 約14ドル NAT Gateway NATインスタンス Lambda MicroVMs自体は少し高いくらい NATはいつ呼ばれてもいいように、一か月ずっと立てておく固定費になる パブリックIPv4 約55ドル 必要なときだけNATを立てると起動が遅くなる。使う時間を絞っても、本当に使わないのは寝ている2:00〜7:00くらい AWS Lambda pricing https://aws.amazon.com/lambda/pricing/
  10. ポイント③ コストが増加してしまう Lambda MicroVMsを試す コストを比較してみる 月20時間使う場合 ECS Fargate(今) 約2.6ドル Lambda

    MicroVMs+NATインスタンス 約14ドル Lambda MicroVMs+NATということで、コストで悩んでいます… Gateway Fargate Lambda MicroVMs NAT Gateway NATインスタンス Lambda MicroVMs自体は少し高いくらい NATはいつ呼ばれてもいいように、一か月ずっと立てておく固定費になる パブリックIPv4 約55ドル 必要なときだけNATを立てると起動が遅くなる。使う時間を絞っても、本当に使わないのは寝ている2:00〜7:00くらい AWS Lambda pricing https://aws.amazon.com/lambda/pricing/