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

機械学習エンジニア–アソシエイト

正解 C問題
分野1:機械学習 (ML) のためのデータ準備 タスクステートメント1.2:データ変換と特徴量エンジニアリング タスクステートメント1.1:データの取り込みと保存
合格に向けて、もっと深く学習する
豊富な問題と詳細なAWSサービス解説を、24時間無料でお試しいただけます
プレミアム会員機能を無料で試す ❯
問題文と選択肢
あなたは、顧客からのフィードバックを即座に評価し、サービス改善に活かす機械学習ソリューションの設計を担当しています。このソリューションでは、ウェブサイトから投稿されるフィードバックデータをAmazon Data Firehoseで取り込み、Amazon S3に保存するアーキテクチャを採用しています。Amazon S3への保存前に、特定のキーワード抽出と要約処理をAWS Lambdaでリアルタイムに行う必要があります。Amazon Data Firehoseから取り込んだデータを、Amazon S3への保存前にLambdaで効率的に処理するための最も適切かつ効率的な設定はどれですか?
  • Lambda関数をFirehoseのターゲットとして直接設定し、Lambdaの同時実行数を無制限に設定することで、スループットを最大化する。
  • Lambda関数のイベントソースマッピングをAmazon Data Firehoseに対して設定し、失敗したレコードのためにAmazon SQSキューをDLQとして指定する。
  • Amazon Data Firehoseの配信ストリーム設定において、データ変換機能としてLambda関数を指定し、変換前のオリジナルデータのバックアップをS3に設定する。
  • Amazon EventBridge (または Amazon CloudWatch Events) を使用してスケジュールを設定し、定期的にLambda関数を起動してAmazon Data Firehoseからデータをバッチで取得し処理する。
解説 頻出度★★★★
この問題は、「Firehose で取り込み × S3 保存前に加工 × リアルタイム × 最小構成」の要件で、Firehose 配信ストリームに組み込まれたデータ変換(Lambda)機能を選べるかがポイントです。

A. Lambda関数をFirehoseのターゲットとして直接設定し、Lambdaの同時実行数を無制限に設定することで、スループットを最大化する。

Amazon Data Firehose の宛先(デスティネーション)に AWS Lambda を指定することはできません。宛先として選べるのは Amazon S3、Amazon Redshift、Amazon OpenSearch Service、HTTP エンドポイント、各種 SaaS などで、Lambda は宛先ではなく配信前の「データ変換」として組み込むのが正しい使い方です。

また、Lambda の同時実行数を無制限にする発想も誤りです。アカウントの同時実行クォータを他の関数と食い合い、下流サービスへのスロットリングや想定外のコスト増を招くため、通常は同時実行数を適切に制御します。

B. Lambda関数のイベントソースマッピングをAmazon Data Firehoseに対して設定し、失敗したレコードのためにAmazon SQSキューをDLQとして指定する。

Firehose はLambda のイベントソースマッピング(ESM)に対応していません。ESM で Lambda がポーリングできるのは Amazon Kinesis Data Streams、Amazon DynamoDB Streams、Amazon SQS、Amazon MSK / セルフマネージド Kafka などであり、Firehose はこの一覧に含まれません。

Firehose は自らが Lambda を同期的に呼び出すプッシュ型のサービスです。変換に失敗したレコードは Firehose が S3 の processing-failed プレフィックスへ退避するため、SQS の DLQ を別途用意する構成自体が成立しません。

正解

C. Amazon Data Firehoseの配信ストリーム設定において、データ変換機能としてLambda関数を指定し、変換前のオリジナルデータのバックアップをS3に設定する。

Amazon Data Firehose には、宛先へ配信する前にレコードを加工するデータ変換機能が組み込まれており、変換ロジックとして Lambda 関数を指定できます。Firehose がレコードをバッファリングしながら Lambda を呼び出し、変換後のデータだけを S3 に配信するため、キーワード抽出と要約を「S3 保存前」に実行するという要件をそのまま満たします。

あわせて変換前のオリジナルデータ(ソースレコード)を別の S3 バケット / プレフィックスにバックアップする設定が可能です。変換ロジックにバグがあった場合の再処理や監査に備えられるため、ベストプラクティスとしても推奨される構成であり、これが正解です。

D. Amazon EventBridge (または Amazon CloudWatch Events) を使用してスケジュールを設定し、定期的にLambda関数を起動してAmazon Data Firehoseからデータをバッチで取得し処理する。

Firehose は投入されたデータを自動的に宛先へ配信するプッシュ型のサービスで、Kinesis Data Streams のように保持したレコードを後から読み出す API を提供していません。そのため「Firehose からバッチでデータを取得する」という動作自体が成立しません。

仮に S3 配信後のデータを EventBridge のスケジュールで定期処理したとしても、それは「S3 保存前にリアルタイム処理する」という要件に反し、加工前データと加工後データの二重管理も発生します。

これだけ覚える(記憶フック)
Firehose の Lambda は「宛先」でも「イベントソース」でもなく“データ変換”。配信前の加工は設定 1 つで済む。
正解への思考ルート 問題文から要件を抽出し、選択肢の適否を判断するのがポイントです。
要件 判断ポイント
Amazon S3 への保存「前」に加工したい 保存後にスケジュール実行で加工する方式は要件そのものに反する
→選択肢(D)を消す
フィードバックを即座に評価(リアルタイム処理) 定期バッチでは遅延が発生。Firehose は投入されたら自動で配信するプッシュ型で、プルできない
→選択肢(D)を消す
Firehose と Lambda をどう繋ぐか Lambda は Firehose の宛先でもイベントソースでもない。Firehose の設定内で「データ変換」として指定する
→選択肢(A・B)を消す
最も適切かつ効率的な設定(余計な部品を足さない構成) 配信ストリームのデータ変換に Lambda を指定+ソースレコードを S3 にバックアップすれば、変換失敗時の再処理にも備えられる
→選択肢(C)が正解
ひっかけポイント
  • 選択肢 B の「イベントソースマッピング」は Kinesis Data Streams と混同させる罠。Data Firehose と Data Streams は別サービスで、ESM に対応するのは Data Streams のほう
  • 選択肢 A の「Lambda をターゲット(宛先)として設定」は一見自然だが、Firehose の宛先一覧に Lambda は無い。宛先は S3 / Redshift / OpenSearch / HTTP エンドポイント等
  • 「同時実行数を無制限にしてスループット最大化」は常にアンチパターン。アカウント全体のクォータを食い潰し、下流をスロットリングさせる
  • 変換失敗レコードの受け皿を自前の SQS DLQ だと思い込まない。Firehose は失敗レコードを S3 の processing-failed プレフィックスへ自動退避する
出題バリエーション 同じ知識が本番では条件を変えて出題されます。
問題文がこう変わったら 正解はこう変わる
「取り込んだデータを複数のコンシューマーが個別に読み直したい/保持期間内で再処理したい」 Amazon Kinesis Data Streams が正解軸に(このときは Lambda のイベントソースマッピングが成立する)。
「S3 に置いたで、大量データをまとめて ETL 変換したい」 AWS Glue(または S3 イベント通知+Lambda)が正解軸に。
「JSON を Parquet / ORC に変換して S3 に置き、Athena で分析したい」 Firehose のレコード形式変換(Lambda 不要)を有効化するのが正解。
「フィードバックの感情分析やキーフレーズ抽出を自前実装せずに行いたい」 変換 Lambda から Amazon Comprehend を呼ぶ構成が正解軸に。
関連サービスの解説 Amazon Simple Storage Service (Amazon S3)
AWS Lambda
Amazon Data Firehose
+ 質問 / コメント
解答・解説に疑問がある場合や、よりよい解説がある場合など、お気軽にコメントください。ただし、短文コメントは表示されません。また、中傷などコメントの内容によっては、会員機能を停止させて頂きます。教え学び合える場になれば嬉しいです。(コメント投稿にはログインが必要です)
正答率 55%
No.7 解説
あなたは、顧客からのフィードバックを即座に評価し、サービス改善に活かす機械学習ソリューションの設計を担当しています。このソリューションでは、ウェブサイトから投稿されるフィードバックデータをAmazon Data Firehoseで取り込み、Amazon S3に保存するアーキテクチャを採用しています。Amazon S3への保存前に、特定のキーワード抽出と要約処理をAWS Lambdaでリアルタイムに行う必要があります。Amazon Data Firehoseから取り込んだデータを、Amazon S3への保存前にLambdaで効率的に処理するための最も適切かつ効率的な設定はどれですか?
  • Lambda関数をFirehoseのターゲットとして直接設定し、Lambdaの同時実行数を無制限に設定することで、スループットを最大化する。
  • Lambda関数のイベントソースマッピングをAmazon Data Firehoseに対して設定し、失敗したレコードのためにAmazon SQSキューをDLQとして指定する。
  • Amazon Data Firehoseの配信ストリーム設定において、データ変換機能としてLambda関数を指定し、変換前のオリジナルデータのバックアップをS3に設定する。
  • Amazon EventBridge (または Amazon CloudWatch Events) を使用してスケジュールを設定し、定期的にLambda関数を起動してAmazon Data Firehoseからデータをバッチで取得し処理する。

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