AWS SAA(Solutions Architect – Associate)で頻出の
「ファイルアップロード × 非同期処理 × コスト最適化」
パターン問題です。
今回のテーマは、
更新頻度が予測できない
ファイルサイズが大きい(2GB)
1ファイル数秒の処理
とにかくコストを抑えたい
という条件をどう捌くか、です。
早速、問題を見ていきましょう
【問題】
B社は自社の製造支援アプリケーションに対して、製造拠点からファイルをアップロードするレポート共有化機能を追加開発しています。アップロードされた2GBの各ファイルからメタデータを抽出することになり、ファイル当たりの処理時間は数秒かかります。頻繁に更新が発生する日もあれば、更新が全く発生しないこともあり、ファイルの更新頻度は予測できません。
最も費用対効果の高い方法でこのワークロードを処理する方法を選択してください。
選択肢
- ファイルをAmazon S3バケットに格納して、S3のイベント通知をトリガーとしてLambdaファンクションを実行し、メタデータを処理する。
- ファイルをEBSボリュームに格納して、EC2インスタンスでメタデータ処理ロジックを実行する。
- SQSを使用してファイルを格納して、EC2インスタンスでメタデータ処理ロジックを実行する。
- Kinesisストリームを利用して、データ処理パイプラインを構築する。
これより先は正解と解説が載っているのでまず考えてみましょう。
【正解】
ファイルを Amazon S3 バケットに格納し、
S3 のイベント通知をトリガーとして AWS Lambda を実行し、
メタデータ処理を行う。
構成図
製造拠点
│
▼
Amazon S3(2GB ファイル)
│
│ S3 Event Notification
▼
AWS Lambda
│
▼
メタデータ保存(例:DynamoDB)
なぜこの構成が正解なのか?
この問題のキーワードは 3つ です。
①「2GB のファイルを扱う」
👉 まず保存先は Amazon S3 一択
理由:
- 大容量オブジェクトに最適
- 高耐久・高可用
- 圧倒的に低コスト
- イベント駆動と相性が良い
②「更新頻度が予測できない」
👉 常時起動するリソースは不利
| 構成 | 問題点 |
|---|---|
| EC2 常時起動 | アイドル時間が無駄 |
| バッチサーバ | 更新ゼロの日も課金 |
| Lambda | 実行時のみ課金 |
この条件が出た時点で、
サーバーレスが最有力 になります。
③「1ファイル数秒の処理」
👉 Lambda の実行制限に余裕で収まる
- Lambda 最大実行時間:15分
- 数秒処理 → 問題なし
- 並列実行も自動対応
なぜ「S3 イベント × Lambda」が最も安い?
コスト観点
| 項目 | EC2 | Lambda |
|---|---|---|
| アイドル課金 | あり | なし |
| スケーリング | 手動/設定必要 | 自動 |
| 運用 | 必要 | 不要 |
👉 更新がない日は「0円」に近づく
これが「費用対効果が高い」と評価される理由です。
❌ なぜ他の選択肢は不正解?
❌ EBS + EC2 で処理
・常時起動が前提
・更新がなくても課金
・明らかにオーバースペック
👉 「予測不能な負荷」×「EC2」は地雷
❌ SQS にファイルを格納
・SQS は メッセージキュー
・2GB ファイルは格納不可
・ファイル保存用途ではない
👉 即除外
❌ Kinesis ストリーム
・ストリーミングデータ向け
・ログや IoT、リアルタイム分析用
・ファイルアップロード処理には不適切
👉 「ストリーム」という単語に釣られない
🎯 試験での見抜き方(超重要)
問題文に以下が出たら即反応してください。
| キーワード | 連想 |
|---|---|
| ファイルアップロード | S3 |
| 更新頻度が不定 | サーバーレス |
| 数秒処理 | Lambda |
| コスト最優先 | Lambda + イベント駆動 |
👉 S3 イベント × Lambda
📌 まとめ
| 要件 | 解決策 |
|---|---|
| 大容量ファイル | Amazon S3 |
| 不定期処理 | イベント駆動 |
| 低コスト | AWS Lambda |
| 高い拡張性 | サーバーレス構成 |
ここまで読んでいただき、ありがとうございます。もしこの記事の技術や考え方に少しでも興味を持っていただけたら、ネクストのエンジニアと気軽に話してみませんか。
- 選考ではありません
- 履歴書不要
- 技術の話が中心
- 所要時間30分程度
- オンラインOK