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
AWSコンテナサービスの選び方_ECS・Lambdaのユースケースと設計ポイント
Search
BrainPad
June 26, 2025
Technology
720
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
AWSコンテナサービスの選び方_ECS・Lambdaのユースケースと設計ポイント
BrainPad
June 26, 2025
More Decks by BrainPad
See All by BrainPad
白金鉱業Meetup_Vol.24_「AIエージェントは分けるほど良い」は本当か? / Is it true that “the more you divide AI agents, the better”?
brainpadpr
1
430
「ビジネス現場でのデータ分析者」 東京大学 GCI 2026 Summer
brainpadpr
2
2.2k
BrainPad_DE_202604
brainpadpr
1
14k
BrainPad AAA_AIエージェントの社会実装する上での壁 / Barriers to the Social Implementation of AI Agents
brainpadpr
1
250
白金鉱業Meetup_Vol.22_Orbital Senseを支える衛星画像のマルチモーダルエンベディングと地理空間のあいまい検索技術
brainpadpr
3
430
DTD_AIエージェント開発プロジェクトのメソッドを体系化してみる
brainpadpr
1
360
DTD_Databricksことはじめ
brainpadpr
0
300
【採用候補者向け】BrainPad AAAご紹介資料
brainpadpr
0
2.2k
DTD_はじめての因子分析_理論とビジネス活用.pdf
brainpadpr
2
2.6k
Other Decks in Technology
See All in Technology
[AWS Summit Japan 2026]迷っているあなたへ_小さな一歩が、やがて自分を助けてくれる
sh_fk2
2
400
GitHub Copilot app最速の発信の裏側
tomokusaba
1
250
AIチャットの改善から見えた、良いAI体験とは / What Constitutes a Good AI Experience: Insights from Improving AI Chat
kubode
0
120
コミュニティの有益性 ~JAWS Days 2026 での体験を通して~ / The Benefits of a Community ~Through My Experience at JAWS Days 2026~
seike460
PRO
0
270
從開發到部署全都交給 AI:實作 AI 驅動的自動化流程
appleboy
0
160
FPC(フレキシブル)基板にZephyr実装してみた。
iotengineer22
0
170
40代で“やっとエンジニアになれた”――閉じた学びを開き、空の青さを知る / 20260628 Naoki Takahashi
shift_evolve
PRO
4
830
AI-DLCを “そのまま導入しなかった”話 ~組織に合わせてアジャストした 私たちの実践共有~
hiroramos4
PRO
1
420
フィジカル版Github Onshapeの紹介
shiba_8ro
0
320
iOS アプリの「これって不具合ですか?」を AI に調べてもらう
miichan
0
140
起点・思考・出力で分解する 〜PM業務の自動化設計〜
kazu_kichi_67
1
1k
AWS Security Hub CSPMの成功・失敗体験
cmusudakeisuke
0
540
Featured
See All Featured
KATA
mclloyd
PRO
35
15k
Done Done
chrislema
186
16k
The Limits of Empathy - UXLibs8
cassininazir
1
370
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
1.8k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
200
Statistics for Hackers
jakevdp
799
230k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
780
Writing Fast Ruby
sferik
630
63k
Accessibility Awareness
sabderemane
1
140
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
62
44k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
1
230
The Pragmatic Product Professional
lauravandoore
37
7.3k
Transcript
DEU TECH DRIVE AWS コンテナサービスの選び方 〜ECS・Lambdaのユースケースと設計ポイント〜 2026年 6月26日
2 ©BrainPad Inc. Strictly Confidential 所属 自己紹介 データエンジニアリングユニット ビジネス開発 クラウドサービスグループ
経歴 • 製造系事業会社を経て、2022年にブレインパッドに入社。 • 機械学習や数理最適化領域のプロジェクトに従事。 分析アプリケーションの開発・機械学習モデルのシステム化など担当 好きなAWSサービス 岩本 全央 (いわもと まさちか) • Amazon ECS、AWS Lambda、AWS CodePipeline その他 • 2024/2025 Japan AWS ALL Certifications Engineers
3 ©BrainPad Inc. Strictly Confidential 普段の業務 データ分析システムの分析アプリケーション開発・機械学習のシステム化などを担当 今回はETL・Webアプリ・推論APIなどで活用しうるコンテナ技術(特にAWS関連)について話します
©BrainPad Inc. Strictly Confidential 4 1. コンテナの概要とAWSのコンテナサービスの紹介 2. Amazon ECSの特徴
3. AWS Lambdaの特徴 4. Webアプリケーション用途でのサービスの比較 5. まとめ 目次
©BrainPad Inc. Strictly Confidential コンテナの概要とAWSのコンテナサービスの紹介
6 ©BrainPad Inc. Strictly Confidential コンテナとは アプリケーションとその実行環境をひとまとめにして、どこでも同じように動かせる仕組み 特徴 • 軽量:仮想マシン(VM)と比較して起動が速い
• 移植性:コンテナ化すればどこでも(開発者PC・開発環境・本番環境など)同じ動作 • スケーラビリティ:必要なときに同じコンテナを複数起動 コンテナ利用時の主なツール • コンテナランタイム: Docker、containerdなど。コンテナ作成・実行時に利用。 • コンテナイメージレジストリ:Docker Hub、Amazon ECRなど。コンテナイメージの保管・共有に利用。 • コンテナオーケストレーション: Kubernetes、Amazon ECSなど。コンテナ群の運用管理に利用。
7 ©BrainPad Inc. Strictly Confidential コンテナ利用時の基本的な開発の流れ ①開発環境準備 ローカルPCにDocker Desktopなどを導入 ②アプリケーション開発
ローカルPCでコンテナを起動して動作確認 ③コンテナイメージの登録 ビルドしたイメージをイメージレジストリ(Docker Hub・ECRな ど)にプッシュ ④デプロイ サーバー上のコンテナ実行環境がイメージをプルして起動 サーバー上で動作確認 ③コンテナイメージの登録 ①開発環境準備 ②アプリケーション開発 Amazon ECR ④デプロイ Amazon ECS Amazon EKS AWS Lambda
8 ©BrainPad Inc. Strictly Confidential AWSで利用できるコンテナ実行サービスの一覧 様々なユーザーに応じたコンテナサービスがある。今回は青枠のサービスを紹介。 サービス名 特徴 主な用途
Amazon ECS AWS独自のコンテナオーケストレーションサービス。実行環境としてEC2 or Fargateを選択して利用。 シンプルでAWSサービスと統合しやすい。 • Webアプリ • バッチ Amazon EKS Kubernetesのマネージドサービス。KubernetesのAPI・エコシステムはそのままで、AWSサービスと統合可能。 Kubernetesユーザー向け。 • Webアプリ • バッチ AWS Batch バッチジョブをコンテナベースで実行・スケジュール・管理するサービス。ECS上で動作。 高負荷の並列処理、大量データ処理にも対応。並列・依存関係のあるバッチ処理を行いたいユーザー向け。 • バッチ AWS App Runner コンテナアプリケーションを簡単にデプロイ&スケーリングできるフルマネージドサービス 。 インフラの構築や管理を意識せず、アプリのコードを用意すれば、即 Webアプリ/API として公開できる。 裏ではECSが動作していると思われる。 インフラ知識が少ない場合や迅速にデプロイしたいユーザー向け。 • Webアプリ AWS Lambda サーバーレスコンピューティングサービス。 2020年12月リリースのコンテナイメージ対応により、コンテナイメージを Lambdaで実行できるようになった。 サーバーレス×コンテナのいいとこ取り。 • Webアプリ • バッチ ※制限あり その他にも、SageMaker Processing, Light sail, EC2, Elastic Beanstalkでもコンテナの実行が可能です。
©BrainPad Inc. Strictly Confidential Amazon ECSの特徴
10 ©BrainPad Inc. Strictly Confidential Amazon ECSとは AWS独自のコンテナオーケストレーションサービス 特徴 •
コンテナ化されたアプリケーションのデプロイ・管理・スケーリングが簡単 →運用の多くを自動化できる(例:オートスケーリング・サーバー異常時の自動復旧など) • 動作環境はEC2 or Fargateを選択可能 →おすすめはFargate(サーバー管理・パッチ適用などが不要になり、人的コストを削減可能) EC2は特定のインスタンスタイプ(GPU利用など)やカスタムAMIを使いたい場合などに選択。 • Webアプリケーション、バッチ処理など幅広い用途に利用可能
11 ©BrainPad Inc. Strictly Confidential タスク サービス ECS Amazon ECSの構成要素(起動タイプ:Fargateの場合)
タスク定義 Elastic Load Balancing (ELB) コンテナ2 コンテナ1 参照 ECR Docker イメージ 参照 Fargate タスク コンテナ2 コンテナ1 Fargate クラスター サービスやタスクを実行するための土台 サービス タスクを実行し続けるための管理単位 ネットワーク・タスク数などを設定 Webアプリとしてタスクを使う場合に必要 バッチ処理としてタスクを使う場合は不要 Fargate サーバーレスなコンテナ実行環境 タスク タスク定義に基づいて起動されるコンテナ群 タスク定義 タスク上でコンテナアプリを実行するため の定義 Dockerイメージ参照場所、CPU・メモリ、 IAMロールなどを設定 クラスター
12 ©BrainPad Inc. Strictly Confidential AWS Cloud Private subnet アーキテクチャ例と設計時の考慮ポイント
ECSを使う際の考慮ポイントを3点紹介 Public subnet Private subnet IGW ALB クライ アント RDS VPC Region Fargate フロント エンドApp ALB Fargate バック エンドApp タスク 定義 考慮ポイント③ 環境変数の設定 Secrets Manager DB接続情報 など 考慮ポイント② サービス間通信 考慮ポイント① コンテナ間通信 例:リバースプロキ シ利用、ログ収集
13 ©BrainPad Inc. Strictly Confidential 設計・運用時のポイント:①同一タスク内のコンテナ間の通信 ECSサービスで設定するネットワークモードによってコンテナ間通信の仕方は変わる。 推奨されるのはawsvpcモード。その場合はlocalhostで通信。 awsvpc bridge
host none 利用可能な 動作環境 Fargate・EC2 EC2 EC2 EC2 特徴 タスクごとにENI割り当て。 AWSの推奨モード。 Docker標準の仮想ブリッジ。 ポットマッピングで複数コンテナの 同一ポート利用が可能。 ホストのネットワークを直接利用。 ポート競合の問題あり。 AWSの非推奨モード。 ネットワークなし。 外部通信不要なタスク向け。 同一タスク 内のコンテ ナ間通信 localhost(127.0.0.1) localhost通信は不可。 bridgeネットワークのIPアドレス localhost通信は不可。 ホストのIPアドレス+ポート番号 不可 利用シーン 例 本番環境、大規模サービス、 セキュリティ重視 開発環境、小規模サービス パフォーマンス重視だが、単一コン テナのみ バッチ処理やローカル処理 ローカル環境(docker-compose利用時)では、localhostではなくコンテナ名での通信する (ブリッジネットワークが自動生成され、コンテナ名から内部DNSで名前解決される) 各ネットワークモードの特徴と通信方法
14 ©BrainPad Inc. Strictly Confidential 設計・運用時のポイント:②サービス間の通信 ECSタスクは起動のたびにIPが変わるためIP指定の通信は非推奨。 サービス間通信する場合は以下から選択。本番環境向けは ALB or
ECS Service Connect。 ALB ECS Service Discovery ECS Service Connect メリット •負荷分散が可能 •Blue/Greenデプロイが可能 •トラフィックのメトリクスあり デメリット •ALBの管理・コストが発生 メリット •追加コストなし デメリット •負荷分散機能に劣る •トラフィックのメトリクスなし →リクエストロスト時など調査が難しい メリット •負荷分散が可能 •トラフィックのメトリクスあり デメリット •ローリングデプロイのみ • ECS Service Connect Proxyのコンテナ用のリ ソースが必要 ALBを介してECSサービスにアクセス Cloud Mapを利用して、ECSタスクのIPアドレス をDNS名前解決。プロキシやエージェントなし。 ECS Service Connect Proxyのコンテナを各タス クに自動追加。Cloud Mapを利用して名前解決。 参考:ECS Service Connectによるサービスの新しいつなぎ方 ECS ECS ECS ECS Cloud Map Route53 ECS ECS Cloud Map Route53 サービス名
15 ©BrainPad Inc. Strictly Confidential 設計・運用時のポイント:③タスク定義の環境変数設定 タスク定義で環境変数を設定することで、環境間の差分吸収やコード上の特別な考慮が不要になる 環境変数の設定方法は以下から選択。パスワードなど秘匿情報用はParameter Store or
Secrets Manager タスク定義に直接記述 S3ファイルからインポート タスク定義のコンテナ定義内に名前と値を記述 特徴 •設定が簡単 •パスワードなどの秘匿情報は非推奨 環境変数ファイルをS3に配置し、タスク定義で S3からインポートするよう設定 特徴 •環境変数が多い場合に便利 •パスワードなどの秘匿情報は非推奨 注意点 •タスク実行ロールにS3読み取り権限が必要 •インターネットアクセス不可の場合は、VPC Endpoint経由でのアクセス設定が必要 Parameter Store/ Secrets Managerからインポート Parameter StoreやSecrets Managerに名前と値を 設定。タスク定義でインポートするよう設定。 特徴 •タスク定義内でParameter Store or Secrets ManagerのARNを指定し、環境変数として安全 に取得 •パスワードなどの秘匿情報に最適 注意点 •タスク実行ロールに適切なアクセス権限が必要 •インターネットアクセス不可の場合は、VPC Endpoint経由でのアクセス設定が必要 補足:Parameter Store・Secrets Managerの使い分け ・コストを抑えつつ、シンプルに管理したい→Parameter Store ・大量アクセス(タスク増減が激しい)、自動ローテーションが必要→Secrets Manager
©BrainPad Inc. Strictly Confidential AWS Lambdaの特徴
17 ©BrainPad Inc. Strictly Confidential Lambdaとは AWSのサーバーレスコンピューティングサービス 特徴 • インフラのプロビジョニング不要
→ 運用負荷なし • 処理実行時のみの課金 → コスト効率が良い • 自動でスケール → スパイク(瞬間的なアクセス増加)にも対応可能 ただし上限あり(デフォルトで同時実行数1000) • 各種イベントをトリガーにしてコードを自動実行 • 制限事項あり(次ページ以降で紹介)
18 ©BrainPad Inc. Strictly Confidential 1. zipパッケージのサイズ制限(基本的には50MB。Lambda Layer利用で250MB) 2. ランタイムの制限(Node.js,
Python, Javaなどの限られたバージョンのみ) 3. プログラミングの観点でも注意が必要(次ページで一部紹介) 4. 最大実行時間15分 5. コールドスタート 6. ストレージの書き込みは/tmpフォルダのみ(永続化なし) 7. 同時実行数のデフォルト1000(引き上げ申請可能) 8. コンピューティングサイズの指定ができない(メモリ量(128MB〜10,240MB)に応じて増減する) 9. リクエスト/レスポンスのペイロードサイズ:6MB Lambdaの主な制限事項 1, 2はコンテナイメージ対応で対処可能 Lambdaは制限事項があるため、利用の際は注意が必要 制限事項の一部は使い方で対処可能
19 ©BrainPad Inc. Strictly Confidential Lambdaのプログラミング上の注意点 エントリーポイントはLambdaハンドラー Lambda関数は必ずLambdaハンドラーをエントリーポイントとして実装し、ここに処理の本体を書く。 eventで呼び出し元からの入力を受け取り、contextで実行環境情報を取得。いずれもJSON形式。 def
lambda_handler(event, context): # 処理内容 return "Hello from Lambda!" ステートレス設計 Lambdaは実行の度に新規 or 既存の実行環境で動作するため、関数内に状態を保持しないようにする。 状態は外部のデータベースやストレージに保存。 その他にも注意点はあります(冪等性の確保・再起呼び出し禁止など) 参考URL:AWS Lambda 関数を使用するためのベストプラクティス
20 ©BrainPad Inc. Strictly Confidential Lambdaのコンテナイメージ対応 コンテナイメージ利用のメリット • デプロイサイズの拡大(従来:250MB コンテナイメージ:10GB)
• ランタイムの制限なし(従来はNode.js, Python, Javaなどの限られたバージョンのみ) →Dockerfileを使って好きなOS・ランタイム・ライブラリ・ツールを詰め込める Lambdaランタイムのサポート終了に影響されない コンテナイメージ利用のデメリット • コールドスタートの時間増加(従来:〜1秒程度 コンテナイメージ:〜数秒程度 ※イメージサイズにもよる) • ECR利用の手間が増える 2020年12月に導入された機能。ECRに格納されたコンテナイメージをLambdaで実行する。
21 ©BrainPad Inc. Strictly Confidential AWS Cloud Lambdaのユースケース例:APIのバックエンド処理 API Gatewayと組み合わせて利用。API
Gatewayの設定を使える点が便利。 LambdaやAPI Gatewayの制限事項がある点は注意。 クライ アント Region API Gateway DynamoDB Lambda メリット • コスト効率 • スケーラビリティ • セキュリティ(API Gatewayでの認証・認可、 APIキー管理、WAF連携など) • AWSサービスとの連携 デメリット • Lambdaの制限事項(コールドスタートなど) • API Gatewayのデフォルトタイムアウト(29 秒)※上限緩和可能 • LambdaハンドラーのeventにHTTPリクエスト が含まれる →Webフレームワークが使えない →移植性が悪い 補足 ・AWS SAMを使うと各サービスの設定やデプロイ、テストが行いやすい ・コーディング時にLamda Power Toolsを使うとログ・バリデーションなどに対応しやすくなる Lambda Web Adapterで対処可能
22 ©BrainPad Inc. Strictly Confidential Lambda Web Adapterの紹介 Lambda Web
AdapterはRust製のLambda拡張機能OSS 非Lambda用のWebアプリ(FastAPI, Flask, Spring Bootなど)をLambda上で動かすためのツール Lambda Web Adapterのやること • 受信したイベントを HTTPリクエスト に変換して Web アプリに送信 • HTTPレスポンスを Lambda イベント レスポンスに変換して返す メリット • 導入が簡単(Dockerfileに一行追加) • 移植性向上(アプリケーションを Lambda用に書き換えなくて良い) • 様々な言語に対応 GitHub awslabs/aws-lambda-web-adapter Lambda Web Adapterに似たツールとしてMangumなどあるが、移植性の観点でLambda Web Adapterがおすすめ (アプリケーションのコードにLambda Web Adapterの要素がないため)
23 ©BrainPad Inc. Strictly Confidential Lambda Web Adapter利用時のメリット①導入が簡単 Dockerfileに青字部分を追加するだけ FROM
public.ecr.aws/docker/library/python:3.12-slim # 公開リポジトリから/lambda-adapterにあるファイルを/opt/extensions/以下にコピー(Lambda拡張機能として実行) COPY --from=public.ecr.aws/awsguru/aws-lambda-adapter:0.9.1 /lambda-adapter /opt/extensions/lambda-adapter WORKDIR /var/task COPY requirements.txt ./ RUN python -m pip install -r requirements.txt COPY *.py ./ CMD exec uvicorn --port=8000 main:app 補足 ・/opt/extensions/ディレクトリはLambda拡張機能(2021/6にリリース)の実行ファイルを配置する場所 実行可能ファイルが配置された場合、Lambdaは自動的に検出して実行する ・起動スクリプトや環境変数を工夫することで、zipパッケージでもLambda Web Adapterは利用可能 参考URL:Lambda Web Adapter でウェブアプリを (ほぼ) そのままサーバーレス化する
24 ©BrainPad Inc. Strictly Confidential Lambda Web Adapter利用時のメリット②移植性 アプリケーションのコードにはLambda特有のコードが不要なため、ECSにもそのまま移植可能 from
fastapi import FastAPI app = FastAPI() @app.get("/") async def root(): print("in root method") return {"message": "Hello World"} FastAPI利用時のコード例
25 ©BrainPad Inc. Strictly Confidential Lambda Web Adapter利用時のメリット③様々なWebフレームワークに対応 公式リポジトリでは以下のWebフレームワークの例がある Python
• FastAPI • Flask • Django JavaScript / TypeScript • Express.js • Next.js • Remix • Sveltekit SSR • Deno Oak Java • SpringBoot PHP • Laravel Rust • Actix Web • axum Go • Gin C# (.NET) • ASP.NET MVC • ASP.NET Web API Webサーバ • Nginx 注意事項 • HTTPリクエスト・レスポンスではない Webフレームワーク(WebSocketやgRPC、 独自プロトコルなど利用)は非対応 例:StreamlitはWebSocketを利用しているため非対応
©BrainPad Inc. Strictly Confidential Webアプリケーション用途でのサービス比較
27 ©BrainPad Inc. Strictly Confidential Webアプリケーション用途での比較 ECSのユースケース:本番稼働など安定稼働が求められる Lambdaのユースケース:制限事項が許容でき、コスト削減重視(PoC・社内用・個人開発など) ECS +
ALB API Gateway + Lambda (Docker + Lambda Web Adapter) 運用管理 ・Lambdaに比べるとインフラ管理あり ・ECSより運用負荷少ない スケーラビリティ ・オートスケーリングの管理あり ・自動スケーリング パフォーマンス ・安定した低レイテンシ ・コールドスタートあり コスト ・稼働時間ベース ・利用量ベース(未使用時はほぼ無課金) API管理機能 ・ALBの負荷分散 ・API Gatewayの様々な機能(認証・API使用量管理など)を利用可能 大きな制限事項 ・なし ・Lambdaの制限事項あり ・Lambda Web Adapterの対応フレームワークの制限 Lambda-Web-Adapterを利用していると、ECSへの移行もしやすいため、 PoCではLambda-Web-Adapterを用いて、本番稼働ではECSに移行するといった使い方も考えられます。
©BrainPad Inc. Strictly Confidential まとめ
29 ©BrainPad Inc. Strictly Confidential まとめ ・コンテナとはアプリケーションとその実行環境をひとまとめにして、どこでも同じように動かせる仕組み ・AWSでの代表的なコンテナ実行サービスはECS ・Lambda上でもコンテナの実行が可能 ・ECSの特徴
・幅広い用途に利用可能 ・Lambdaの特徴 ・運用負荷はECSより少ないが、制限事項・注意事項がある ・コンテナやLambda Web Adapterと組み合わせると、Webアプリにも対応しやすい ・ECSとLambdaのWebアプリ用途での比較 ※個人的な見解です ・ECSは安定稼働重視の場合 ・Lambdaは制限事項が許容でき、コスト削減重視の場合
株式会社ブレインパッド 106-0032 東京都港区六本木三丁目1番1号 六本木ティーキューブ TEL:03-6721-7002 FAX:03-6721-7010 www.brainpad.co.jp
[email protected]
本資料は、未刊行文書として日本及び各国の著作権法に基づき保護されております。本資料には、株式会社ブレインパッド所有の特定情報が含まれており、これら情報に基づく本資料の内容は、貴社以外の第三者に開示されること、また、本資料を評価する以外の目的で、その 一部または全文を複製、使用、公開することは、禁止されています。また、株式会社ブレインパッドによる書面での許可なく、それら情報の一部または全文を使用または公開することは、いかなる場合も禁じられております。
©BrainPad Inc.
31 ©BrainPad Inc. Strictly Confidential Lambda Web Adapterの参考URL • AWS
Lambda Web Adapterを活用する新しいサーバーレスの実装パターン • AWS Lambda の上でいろんなWEB フレームワークを動かそう!