AWS認定資格 WEB問題集&徹底解説

ソリューションアーキテクト – アソシエイト

正解 B,C問題
要復習(もう一度解きたい問題) 1 2 3 4
合格に向けて、もっと深く学習する
豊富な問題と詳細なAWSサービス解説を、24時間無料でお試しいただけます
プレミアム会員機能を無料で試す ❯
問題文と選択肢
ある企業のデータ分析チームは、毎週末に顧客行動データと在庫データを Amazon S3 から読み込み、Python スクリプトによる機械学習モデルのトレーニングを実行する必要があります。処理には 3〜4 時間かかり、完了後は結果を Amazon S3 へ出力します。現在は Amazon EC2 インスタンスを手動で起動して処理していますが、運用の自動化とコスト削減を図りたいと考えています。この要件を満たす最適な実装方法を 2 つ選択してください。
  • AWS Step Functions と AWS Lambda を組み合わせて、データ処理ワークフローを構築する
  • AWS Batch でジョブ定義を作成し、Amazon EventBridge のスケジュールで定期実行する
  • AWS Glue でジョブを作成し、Python シェルまたは Apache Spark 環境で処理を実行する
  • Amazon RDS のストアドプロシージャでバッチ処理を実行し、Amazon EventBridge で定期起動する
解説 頻出度★★★★★
この問題は、「長時間(15 分超)× 定期実行 × S3 連携 × コスト削減」の要件で、実行時だけ課金されるマネージドなバッチ実行基盤を選べるかがポイント

A. AWS Step Functions と AWS Lambda を組み合わせて、データ処理ワークフローを構築する

AWS Step Functions と AWS Lambda でワークフローを自動化すること自体は可能。
ただし本要件の処理は3〜4 時間かかり、Lambda の関数タイムアウト上限(900 秒=15 分)を超えるため完走できない。
処理を細切れにして複数の Lambda 関数へ分割する回避策は、機械学習トレーニングのような一続きの計算では状態の受け渡しが複雑になり、現実的ではない。

正解

B. AWS Batch でジョブ定義を作成し、Amazon EventBridge のスケジュールで定期実行する

AWS Batch はコンテナ化したバッチジョブを実行するマネージドサービスで、実行時間の上限に縛られず 3〜4 時間の処理を完走できる。
既存の Python スクリプトをそのままコンテナイメージに載せられ、S3 からの読み込み・S3 への出力も問題なく行える。
Amazon EventBridge のスケジュールで毎週末に自動起動でき、ジョブ実行中だけコンピューティングが起動するため、EC2 を手動起動する現状よりも運用負荷・コストの両面で有利。

正解

C. AWS Glue でジョブを作成し、Python シェルまたは Apache Spark 環境で処理を実行する

AWS Glue は S3 上のデータを処理するサーバーレスのマネージド実行基盤で、Python シェルジョブと Apache Spark ジョブを選べる。
Python シェルジョブには pandas・numpy・scikit-learn などが同梱され、追加ライブラリも指定できるため Python による処理をそのまま実行でき、大規模データなら Spark を選べばよい。
S3 から読み込み → Python で処理 → S3 へ出力という流れと、スケジュールによる定期実行・実行時間課金という要件に合致する。

D. Amazon RDS のストアドプロシージャでバッチ処理を実行し、Amazon EventBridge で定期起動する

Amazon RDS はリレーショナルデータベースサービスであり、ストアドプロシージャはDB 内の SQL 処理を書くための仕組み。Python スクリプトによる機械学習モデルのトレーニングを走らせる実行基盤ではない。
そもそも S3 上のデータを直接読み書きする用途にも向かず、要件のデータフローを満たせない。
加えて RDS インスタンスは常時稼働で課金されるため、週末だけの処理ではコスト削減の要件にも反する。

構成図

Amazon EventBridge(毎週末スケジュール)
   │ 定期に起動
   ▼
実行基盤(B: AWS Batch / C: AWS Glue)
   ▲ 入力              │ 処理結果を書き戻す
Amazon S3 ───────────▶ Amazon S3
これだけ覚える(記憶フック)
Lambda は 15 分の壁。長時間 × 定期実行 × 低コストのバッチは Batch(汎用)/Glue(ETL)が定番。
正解への思考ルート 問題文から要件を抽出し、選択肢の適否を判断するのがポイントです。
要件 判断ポイント
処理に 3〜4 時間かかる(長時間処理) AWS Lambda のタイムアウト上限は 15 分。長時間処理はそもそも完走できない
→選択肢(A)を消す
Python スクリプトで機械学習モデルをトレーニング RDS のストアドプロシージャは SQL 処理用で、Python の実行基盤にならない
→選択肢(D)を消す
Amazon S3 から読み込み、Amazon S3 へ出力 AWS Batch(コンテナ)・AWS Glue(Python Shell / Spark)はどちらも S3 との入出力に対応
→選択肢(B・C)は候補
毎週末に定期実行し、運用を自動化したい Amazon EventBridge のスケジュールや Glue のスケジュールトリガーで、手動の EC2 起動を置き換えられる
→選択肢(B・C)は候補
コスト削減(現在は EC2 を手動起動) ジョブ実行時だけリソースが起動・課金される B・C が有利。常時稼働の RDS は週次バッチでは無駄が大きい
→選択肢(B・C)が正解
ひっかけポイント
  • 「Step Functions + Lambda」は自動化の定番構成に見えるが、本問では3〜4 時間 > 15 分という一点だけで即座に切れる。実行時間を最初に確認する癖をつける
  • Step Functions 自体は最大 1 年実行できるため惑わされやすいが、制限に引っかかるのは中で動く Lambda 側
  • 「Amazon RDS のストアドプロシージャ」は EventBridge で定期起動できる点がもっともらしいが、スケジュール実行できること機械学習の実行基盤であることは別問題
  • AWS Glue は ETL 寄り、AWS Batch は汎用バッチ寄り。本問はどちらでも要件を満たすため「2 つ選択」で両方が正解になる
出題バリエーション 同じ知識が本番では条件を変えて出題されます。
問題文がこう変わったら 正解はこう変わる
「処理は10 分以内に終わる」 Lambda(+ EventBridge)が正解に浮上。Batch / Glue は過剰。
複数の処理を順番に実行し、失敗時はリトライ・分岐したい」 Step Functions によるオーケストレーションが正解軸に(実行の中身は Batch / Glue)。
GPU を使った大規模なモデル学習と、学習済みモデルの推論エンドポイントが必要」 Amazon SageMaker(トレーニングジョブ/エンドポイント)が正解軸に。
「中断されても構わないので、とにかく安く実行したい」 AWS Batch + スポットインスタンス(Fargate Spot 含む)の組み合わせが問われる。
Hadoop / Spark クラスターを細かくチューニングして使いたい」 Amazon EMR が選択肢として登場する。
関連サービスの解説 Amazon EventBridge
Amazon RDS
Amazon Simple Storage Service (Amazon S3)
AWS Batch
AWS Glue
AWS Lambda
AWS Step Functions
+ 質問 / コメント
解答・解説に疑問がある場合や、よりよい解説がある場合など、お気軽にコメントください。ただし、短文コメントは表示されません。また、中傷などコメントの内容によっては、会員機能を停止させて頂きます。教え学び合える場になれば嬉しいです。(コメント投稿にはログインが必要です)
正答率 39%
No.1 解説
ある企業のデータ分析チームは、毎週末に顧客行動データと在庫データを Amazon S3 から読み込み、Python スクリプトによる機械学習モデルのトレーニングを実行する必要があります。処理には 3〜4 時間かかり、完了後は結果を Amazon S3 へ出力します。現在は Amazon EC2 インスタンスを手動で起動して処理していますが、運用の自動化とコスト削減を図りたいと考えています。この要件を満たす最適な実装方法を 2 つ選択してください。
  • AWS Step Functions と AWS Lambda を組み合わせて、データ処理ワークフローを構築する
  • AWS Batch でジョブ定義を作成し、Amazon EventBridge のスケジュールで定期実行する
  • AWS Glue でジョブを作成し、Python シェルまたは Apache Spark 環境で処理を実行する
  • Amazon RDS のストアドプロシージャでバッチ処理を実行し、Amazon EventBridge で定期起動する

(会員限定)当問題の評価をお願いします。改善に活用します。