DEA-#16

DEA#15 – DEA#16 – DEA#17
R – F

お疲れ様でした!DEA#16のクイズ終了しました。

解答スコアは %%SCORE%% / %%TOTAL%% 問正解です。

%%RATING%%

   →→学習履歴へ戻る←←   

あなたの選択した答えは強調表示されています。
問題1
ある企業は、お客様の住所を含むお客様データテーブルを AWS Lake Formation データレイクに保存しています。新しい規制に準拠するため、同社は、カナダにいるお客様のデータにユーザーがアクセスできないようにする必要があります。

同社は、カナダにいるお客様の行にユーザーがアクセスできないようにするソリューションが必要です。

この要件を、運用上の労力を最小限に抑えて満たすソリューションを選択してください。
A
行レベルのフィルターを設定して、国がカナダの行へのユーザーアクセスを防止します。
B
国名がカナダである住所へのユーザーアクセスを制限する IAM ロールを作成します。
C
列レベルのフィルターを設定して、国がカナダである行へのユーザアクセスを禁止します。
D
国がカナダであるすべての行にタグを適用します。タグが「カナダ」に等しいユーザーアクセスを防止します。
問題 1 の説明および補足 
Lake Formation の行レベルセキュリティ
正解A行レベルのフィルターを設定して、国がカナダの行へのユーザーアクセスを防止します。
💡解説のポイント
AWS Lake Formation の行レベルセキュリティ機能は、データの中身に基づいて 特定の行へのアクセスをフィルタリングできる ため正解です。
AWS Lake Formation は、データレイク内のデータに対するきめ細かなアクセスコントロール機能を提供します。その中の一つである 行レベルセキュリティ (行レベルフィルター) を使用すると、ユーザーやロールごとに、クエリ結果に含める行を動的にフィルタリングできます。この問題では、「国がカナダのお客様」という特定の条件に合致する行へのアクセスを制限する必要があります。行レベルフィルターを使えば、country = 'Canada' のような条件式を設定し、この条件に一致する行をクエリ結果から除外する、といった制御が可能です。これにより、基盤となるデータを変更することなく、セキュリティ要件を満たすことができ、 運用上の労力を最小限に抑える という要件にも合致します。
Question DEA16-1
AWS 公式ドキュメント要約
※Lake Formation での行レベルのセキュリティ - AWS Lake Formation 行レベルのセキュリティを使用すると、データカタログ内のテーブルの特定の行へのきめ細かなアクセスをユーザーに付与できます。行フィルタリングを使用すると、ユーザーは特定のデータ (国や部門など) のみを表示できます。行レベルのセキュリティは、データフィルターを使用して実装されます。データフィルターを使用すると、テーブルデータへの読み取りアクセスを許可する述語式を指定できます。
以下は間違いです
不正解B国名がカナダである住所へのユーザーアクセスを制限する IAM ロールを作成します。
→「IAM ロール」は、データの中身 (特定の行) に基づいたアクセス制御は直接行えないため間違いです。
IAM は、AWS のサービスやリソースへのアクセス権限を管理しますが、S3 などに保存されているデータファイルの 中身を解析して行レベルでアクセスを制御する機能はありません 。IAM ポリシーで制御できるのは、S3 バケットやオブジェクトレベルでのアクセス (例 : s3:GetObject ) までです。データの中身に応じた制御は、Lake Formation のような上位のサービスが担う役割です。
IAM は AWS の基本となる重要なサービスですが、その権限管理のスコープを正しく理解することが重要です。IAM は「リソースレベル」の制御、Lake Formation は「データ (テーブル、列、行) レベル」の制御、と役割を区別して覚えましょう。
不正解C列レベルのフィルターを設定して、国がカナダである行へのユーザアクセスを禁止します。
→「列レベルのフィルター」は、特定の列 (例 : 住所列) へのアクセスを制御する機能であり、行を制御するものではないため間違いです。
AWS Lake Formation には列レベルのセキュリティ (列レベルフィルター) 機能も存在しますが、これは「住所」や「電話番号」といった 特定の列全体へのアクセスを制限 するためのものです。今回の要件は「カナダのお客様」という 特定の行 へのアクセス制限であり、目的が異なります。行の制御には行レベルフィルター、列の制御には列レベルフィルターと、適切な機能を使い分ける必要があります。
「行レベル」と「列レベル」は、Lake Formation の権限管理における基本的な概念です。問題文の「行にユーザーがアクセスできないようにする」という記述から、列レベルの選択肢は明確に誤りだと判断できるようにしましょう。
不正解D国がカナダであるすべての行にタグを適用します。タグが「カナダ」に等しいユーザーアクセスを防止します。
→「Lake Formation のタグベースアクセスコントロール (LF-TBAC)」は、テーブルや列などのリソースにタグ付けするものであり、データの中身である行にタグを適用する機能ではないため間違いです。
AWS Lake Formation のタグベースアクセスコントロール (LF-TBAC) は、Data Catalog リソース (データベース、テーブル、列) に LF-Tag を付与し、そのタグに基づいて大規模な権限管理を簡素化する強力な機能です。しかし、この機能は データの中身である個々の行にタグを付けて制御するものではありません 。行レベルの動的なフィルタリングには、行レベルセキュリティ機能を使用するのが正しい方法です。
Lake Formation には「行レベルセキュリティ」「列レベルセキュリティ」「タグベースアクセスコントロール」という 3 つの主要なアクセスコントロール手法があります。それぞれの機能が「何を」「どのように」制御するのかを正確に区別することが、この分野の問題を攻略する鍵となります。
🎯この問題の本質
この問題の本質は、AWS Lake Formation が提供するきめ細かなアクセスコントロール機能のうち、「行レベルセキュリティ」と「列レベルセキュリティ」、「タグベースアクセスコントロール」の役割と適用範囲を正しく理解しているかにあります。
Manga Main
0:00 / 0:00
速度:
ılılı 音声連動
Click to Swap
⇄ 入替
問題2
ある企業が複数のデータソースからデータを取り込み、Amazon S3 バケットにデータを保存します。AWS Glue の ETL (抽出、変換、ロード) ジョブが、データを変換し、変換されたデータを Amazon S3 ベースのデータレイクに書き込みます。同社は、Amazon Athena を使用して、データレイク内のデータをクエリします。

同社は、レコードが共通の一意の識別子を持っていない場合でも、一致するレコードを識別する必要があります。

この要件を満たすソリューションを選択してください。
A
ETL ジョブの一部として Amazon Macie のパターンマッチングを使用します。
B
ETL ジョブで AWS Glue PySpark Filter クラスをトレーニングして使用します。
C
テーブルをパーティショニングし、ETL ジョブで一意の識別子でデータをパーティショニングします。
D
ETL ジョブで AWS Lake Formation FindMatches 変換をトレーニングして使用します。
問題 2 の説明および補足 
AWS Glue の機械学習変換によるレコードマッチング
正解DETL ジョブで AWS Lake Formation FindMatches 変換をトレーニングして使用します。
💡解説のポイント
AWS Glue の ML 変換機能である FindMatches は、 機械学習を利用して共通の一意な識別子がないレコード同士をマッチングさせる ために設計されているため正解です。
AWS Glue には、ETL プロセスを強化するための機械学習 (ML) 変換機能が組み込まれています。その中の一つである FindMatches 変換 は、問題文の要件である「 共通の一意の識別子を持っていない場合でも、一致するレコードを識別する 」という、いわゆる「名寄せ」や「レコードリンケージ」のタスクを解決するために特化した機能です。
この変換は、まず人間が手動で一部のレコードをマッチングさせたサンプルデータ (ラベリングデータ) を基にモデルをトレーニングします。トレーニングが完了すると、そのモデルを使用してデータセット全体から重複しているレコードや、異なるデータソース間で同じ実体を指すレコードを自動的に識別・グルーピングできます。これにより、手作業では困難な大規模データセットのクレンジングと統合を効率的に行うことが可能です。
Question DEA16-2
AWS 公式ドキュメント要約
※FindMatches ML 変換を使用して ID を照合する FindMatches 変換は、データセット内の完全に一致しないレコードを識別する場合に使用します。FindMatches は、データセット内の重複レコードや、異なるデータセットで同じエンティティを参照するレコードを検索する場合に役立ちます。例えば、次のようなお客様レコードのわずかに異なるバージョンを照合できます。
以下は間違いです
不正解AETL ジョブの一部として Amazon Macie のパターンマッチングを使用します。
→「Amazon Macie」はデータセキュリティとプライバシーのためのサービスであり、レコードのマッチング処理には使用しないため間違いです。
Amazon Macie は、機械学習を利用して S3 バケット内の機密データ (個人情報、財務情報など) を自動的に検出、分類、保護するためのサービスです。パターンマッチング機能も備えていますが、これは機密データを識別するためのものであり、 レコード間の類似性を判断して一致を見つける ETL 処理の機能ではありません 。目的が全く異なります。
Macie は「セキュリティ」、Glue は「データ統合・ETL」というサービスの役割を明確に区別しましょう。問題文が ETL ジョブに関するものであることから、セキュリティサービスである Macie が解答になる可能性は低いと判断できます。
不正解BETL ジョブで AWS Glue PySpark Filter クラスをトレーニングして使用します。
→「AWS Glue PySpark の Filter クラス」は、単純な条件に基づいて行を除外する機能であり、機械学習によるレコードマッチングは行えないため間違いです。
AWS Glue の ETL スクリプト (PySpark) で使用される `Filter` クラスは、SQL の `WHERE` 句のように、指定された条件に合致するレコードを抽出したり、除外したりするための基本的な変換です。例えば、「年齢が 30 歳以上のレコードのみを抽出する」といった処理に使います。 共通 ID がないレコード同士の類似性を評価し、それらが同じものであるかを判断するような高度なロジックは持っていません
Glue の基本的な変換機能と、ML 変換 (FindMatches など) の違いを理解することが重要です。問題文が「共通 ID がない」という曖昧な条件でのマッチングを求めている時点で、単純なフィルタリングでは解決できないと判断する必要があります。
不正解Cテーブルをパーティショニングし、ETL ジョブで一意の識別子でデータをパーティショニングします。
→「パーティショニング」はクエリのパフォーマンスを最適化する手法であり、レコードの一致を識別する機能ではないため間違いです。
パーティショニングは、Amazon S3 上のデータを特定のキー (例えば、日付、地域など) に基づいてフォルダ分けして保存する技術です。これにより、Amazon Athena などでクエリを実行する際にスキャンするデータ量を減らし、 パフォーマンス向上とコスト削減 を実現します。しかし、これはデータの格納方法を工夫するものであり、 データの内容を解析して一致するレコードを見つける機能ではありません 。また、問題文では「共通の一意の識別子を持っていない」とされているため、そもそも一意の識別子でパーティショニングすることが困難です。
パーティショニングは、データレイクや DWH 関連の問題で頻出する重要なキーワードですが、その目的は「クエリ最適化」です。データクレンジングやレコードマッチングとは目的が異なることをしっかり覚えておきましょう。
🎯この問題の本質
この問題の本質は、共通 ID を持たない不完全なデータセットから、機械学習を用いて一致するレコードを特定する (名寄せする) ための AWS Glue の専用機能「FindMatches」を知っているかどうかにあります。
Manga Main
0:00 / 0:00
速度:
ılılı 音声連動
Click to Swap
⇄ 入替
問題3
企業は、トランザクションに関する詳細を Amazon S3 バケットに保存しています。同社は、S3 バケット内のオブジェクト操作 (例 : PUT, POST, DELETE などの書き込み操作) を、同じ AWS リージョンにある別の S3 バケットに記録したいと考えています。

最小限の運用労力でこの要件を満たすソリューションを選択してください。
A
トランザクション S3 バケット上のすべてのアクティビティに対して、AWS Lambda 関数を呼び出す S3 イベント通知ルールを設定します。Amazon Kinesis Data Firehose にイベントを書き込むように Lambda 関数をプログラムします。ログ S3 バケットにイベントを書き込むように Kinesis Data Firehose を設定します。
B
AWS CloudTrail で管理イベントの証跡を作成します。トランザクション S3 バケットからデータを受信するように証跡を設定します。空のプレフィックスと書き込み専用イベントを指定します。宛先バケットとして ログ S3 バケットを指定します。
C
トランザクション S3 バケット上のすべてのアクティビティに対して、AWS Lambda 関数を呼び出す S3 イベント通知ルールを設定します。イベントをログ S3 バケットに書き込むように Lambda 関数をプログラムします。
D
AWS CloudTrail でデータイベントの証跡を作成します。トランザクション S3 バケットからデータを受信するように証跡を設定します。空のプレフィックスと書き込み専用イベントを指定します。宛先バケットとして ログ S3 バケットを指定します。
問題 3 の説明および補足 
CloudTrail のデータイベントによる S3 オブジェクトレベルの API 操作記録
正解DAWS CloudTrail でデータイベントの証跡を作成します。トランザクション S3 バケットからデータを受信するように証跡を設定します。空のプレフィックスと書き込み専用イベントを指定します。宛先バケットとして ログ S3 バケットを指定します。
💡解説のポイント
AWS CloudTrail の データイベントが S3 オブジェクトレベルの操作を記録する専用機能 であり、最小限の運用労力で要件を満たせるため正解です。
AWS CloudTrail は、AWS アカウント内での API 呼び出しを記録し、監査やコンプライアンス対応に利用されるサービスです。CloudTrail には主に「管理イベント」と「データイベント」の 2 種類のイベントがあります。

管理イベント: リソースの設定変更など、コントロールプレーンオペレーションを記録します (例 : S3 バケットの作成・削除) 。
データイベント: リソース内でのデータ操作 (データプレーンオペレーション) を記録します (例 : S3 オブジェクトの取得・アップロード・削除) 。

問題の要件である「S3 バケット内のオブジェクト操作 (PUT, POST, DELETE など)」は、まさに データイベント の対象です。CloudTrail の証跡 (Trail) を作成し、データイベントを有効にして対象の S3 バケットを指定するだけで、 自動的に API 呼び出しが記録され、指定した別の S3 バケットにログファイルが保存 されます。この方法は、カスタムコードの開発や他のサービスとの複雑な連携が不要なため、 最も運用労力が少なく 、要件に完全に合致しています。
Question DEA16-3
AWS 公式ドキュメント要約
※CloudTrail を使用した Amazon S3 API コールのログ記録 - Amazon Simple Storage ServiceCloudTrail は、Amazon S3 のデータイベントをキャプチャできます。データイベントは、リソース上またはリソース内で実行されるリソースオペレーションです。Amazon S3 では、これらのイベントはオブジェクトレベルの API オペレーションです。例えば、GetObject、DeleteObject、および PutObject API オペレーションは、データイベントの例です。デフォルトでは、証跡はデータイベントをログに記録しませんが、データイベントを記録するように証跡を設定できます。
以下は間違いです
不正解Aトランザクション S3 バケット上のすべてのアクティビティに対して、AWS Lambda 関数を呼び出す S3 イベント通知ルールを設定します。Amazon Kinesis Data Firehose にイベントを書き込むように Lambda 関数をプログラムします。ログ S3 バケットにイベントを書き込むように Kinesis Data Firehose を設定します。
→「AWS Lambda や Amazon Kinesis Data Firehose の構築・管理が必要」であり、最小限の運用労力という要件を満たさないため間違いです。
この構成は技術的には実現可能ですが、S3 イベント通知の設定、Lambda 関数の開発・デプロイ・管理、そして Kinesis Data Firehose の設定・管理と、 複数のサービスを連携させる必要 があります。これは、CloudTrail のデータイベントを有効化するだけの方法と比較して、明らかに 構築と運用の手間が大きい です。問題で求められている「最小限の運用労力」という要件に反するため、不適切です。
S3 イベント通知と Lambda を組み合わせる方法は非常に強力で柔軟性がありますが、監査ログの収集のような標準的なユースケースには、専用のマネージドサービス (この場合は CloudTrail) を利用する方がシンプルで推奨されます。多機能な構成が常に最適解とは限らないことを覚えておきましょう。
不正解BAWS CloudTrail で管理イベントの証跡を作成します。トランザクション S3 バケットからデータを受信するように証跡を設定します。空のプレフィックスと書き込み専用イベントを指定します。宛先バケットとして ログ S3 バケットを指定します。
→「CloudTrail の管理イベント」はバケットレベルの操作 (バケット作成など) を記録するものであり、オブジェクトレベルの操作 (PUT, POST, DELETE) は記録できないため間違いです。
この選択肢の致命的な誤りは、 管理イベント を選択している点です。CloudTrail の管理イベントは、リソース自体の作成、削除、設定変更 (例 : `CreateBucket`, `DeleteBucketPolicy`) といったコントロールプレーンオペレーションを記録します。問題で求められているのは、バケット内のオブジェクトに対する操作 (`PutObject`, `DeleteObject` など) であり、これらは データイベントでしか記録できません 。したがって、この設定では要件を満たすことができません。
この問題の最大のポイントは、「管理イベント」と「データイベント」の違いを正確に理解しているかです。S3 の「バケット」に対する操作なのか、「オブジェクト」に対する操作なのかを問題文から読み取り、適切なイベントタイプを選択する能力が問われています。
不正解Cトランザクション S3 バケット上のすべてのアクティビティに対して、AWS Lambda 関数を呼び出す S3 イベント通知ルールを設定します。イベントをログ S3 バケットに書き込むように Lambda 関数をプログラムします。
→「AWS Lambda 関数の開発と管理が必要」であり、最小限の運用労力という要件を満たさないため間違いです。
この構成も技術的には可能ですが、選択肢 A と同様に、イベントを処理するための Lambda 関数のコードを自ら開発し、管理する必要 があります。CloudTrail のデータイベント機能を使えば、コーディングなしで、AWS マネジメントコンソールの設定のみで同じ目的を達成できます。したがって、この方法は 運用労力が大きい ため、「最小限の運用労力」という要件に反します。
Lambda は「イベント駆動型アーキテクチャ」の要であり、様々な場面で活躍しますが、AWS が提供する特定の目的に特化したマネージドサービスで要件を満たせる場合は、そちらを優先するのがベストプラクティスです。これにより、コードの保守運用コストを削減できます。
🎯この問題の本質
この問題の本質は、S3 のオブジェクトレベルの API 操作を監査する際の標準的な方法として、CloudTrail の「管理イベント」と「データイベント」の役割を正確に理解し、「最小限の運用労力」という要件に基づいて最適なサービスを選択できるかにあります。
Manga Main
0:00 / 0:00
速度:
ılılı 音声連動
Click to Swap
⇄ 入替
問題4
データエンジニアは、AWS のサービスを使用してデータセットを Amazon S3 データレイクに取り込む必要があります。データエンジニアはデータセットをプロファイルし、データセットに個人を特定できる情報 (PII) が含まれていることを発見します。データエンジニアは、データセットをプロファイルし、PII を難読化するソリューションを実装する必要があります。

この要件を最も少ない運用工数で満たすソリューションを選択してください。
A
Amazon Kinesis Data Firehose 配信ストリームを使用してデータセットを処理します。AWS Lambda 変換関数を作成して、PII を識別します。AWS SDK を使用して PII を難読化します。S3 データレイクを配信ストリームのターゲットとして設定します。
B
AWS Glue Studio の Detect PII 変換を使用して PII を識別します。PII を難読化します。AWS Step Functions ステートマシンを使用して、データパイプラインを調整し、データを S3 データレイクに取り込みます。
C
AWS Glue Studio の Detect PII 変換を使用して PII を識別します。AWS Glue Data Quality でルールを作成して、PII を難読化します。AWS Step Functions ステートマシンを使用して、データパイプラインを調整し、データを S3 データレイクに取り込みます。
D
データセットを Amazon DynamoDB に取り込みます。AWS Lambda 関数を作成して、DynamoDB テーブル内の PII を識別して難読化し、データを変換します。同じ Lambda 関数を使用して、データを S3 データレイクに取り込みます。
問題 4 の説明および補足 
AWS Glue の組み込み変換機能による PII の自動検出と難読化
正解BAWS Glue Studio の Detect PII 変換を使用して PII を識別します。PII を難読化します。AWS Step Functions ステートマシンを使用して、データパイプラインを調整し、データを S3 データレイクに取り込みます。
💡解説のポイント
AWS Glue Studio が提供する Detect PII という組み込みの変換機能 を利用することで、PII の検出と難読化をコーディングなしで実現でき、最も運用工数が少なくなるため正解です。
AWS Glue Studio は、ETL(抽出、変換、ロード) ジョブを視覚的に構築できるサービスです。その中に、Detect PII という強力な組み込み変換機能があります。この機能は、名前、住所、クレジットカード番号といった一般的な個人を特定できる情報 (PII) のパターンを 自動で識別 し、マスキングや置換といった難読化処理を行うことができます。
これにより、開発者は PII を検出・処理するための複雑なロジックを自前でコーディングする必要がなくなり、問題の要件である「 最も少ない運用工数 」を達成できます。作成した ETL ジョブを AWS Step Functions でオーケストレーションするのは、データパイプラインを管理する上で一般的かつ堅牢な構成です。
Question DEA16-4
AWS 公式ドキュメント要約
※個人を特定できる情報 (PII) の検出 AWS Glue は、データ内の個人を特定できる情報 (PII) を検出し、さまざまなアクションを実行して PII を削除または編集できる DetectPii 変換を提供します。この変換を使用して、名前、住所、E メールアドレスなどのエンティティを検出し、PII を含む列を削除したり、PII をハッシュ化したりできます。
以下は間違いです
不正解AAmazon Kinesis Data Firehose 配信ストリームを使用してデータセットを処理します。AWS Lambda 変換関数を作成して、PII を識別します。AWS SDK を使用して PII を難読化します。S3 データレイクを配信ストリームのターゲットとして設定します。
→「AWS Lambda」では PII を識別・難読化するロジックを 自前で開発する必要があり 運用工数が高くなる ため間違いです。
Amazon Kinesis Data FirehoseAWS Lambda の組み合わせはストリーミングデータの処理に有効ですが、この選択肢では PII の「識別」ロジックを Lambda 関数内でゼロから実装する必要があります。これは大きな開発コストと、将来的なパターンの変更に対応するための継続的なメンテナンスを必要とします。したがって、問題の要件である「 最も少ない運用工数 」を満たすことができません。
Lambda は非常に柔軟で強力なサービスですが、「マネージドな専用機能があるか」をまず検討するのが AWS 設計の定石です。PII 処理のような定型的なタスクには、AWS Glue の組み込み機能のような特化されたサービスを利用する方が、工数とコストを削減できます。
不正解CAWS Glue Studio の Detect PII 変換を使用して PII を識別します。AWS Glue Data Quality でルールを作成して、PII を難読化します。AWS Step Functions ステートマシンを使用して、データパイプラインを調整し、データを S3 データレイクに取り込みます。
→「AWS Glue Data Quality」はデータの品質を 検証するための機能 であり、PII を 難読化する機能ではない ため間違いです。
この選択肢は、AWS Glue Data Quality の役割を誤解しています。AWS Glue Data Quality は、データが定義されたルール (例 : 列が NULL でない、特定の値の範囲内にあるなど) に準拠しているかをチェックし、データの品質を評価するための機能です。データのマスキングや置換といった「 難読化 」処理は、このサービスの目的外です。Detect PII 変換自体に難読化のアクションを指定するか、別の変換ステップを追加するのが正しい方法です。
AWS のサービスは名前が似ていても役割が全く異なることがよくあります。「Data Quality」という名前から、これはデータの「品質」をチェック (検証) する機能であり、内容を「変換」するものではない、と判断できるようにしましょう。
不正解Dデータセットを Amazon DynamoDB に取り込みます。AWS Lambda 関数を作成して、DynamoDB テーブル内の PII を識別して難読化し、データを変換します。同じ Lambda 関数を使用して、データを S3 データレイクに取り込みます。
→最終的な保存先が S3 であるにもかかわらず、一度 DynamoDB に取り込む というステップが 非効率 であり、さらに Lambda での 自前実装 も必要になるため間違いです。
この構成は、アーキテクチャとして冗長かつ非効率です。S3 データレイクへの取り込みが最終目的なのに、一度 Amazon DynamoDB を経由させる合理的な理由がありません。これにより、コストと処理の複雑性が増加します。また、選択肢 A と同様に、Lambda 関数で PII 識別ロジックを 自前で実装する必要がある ため、「最も少ない運用工数」という要件に反します。
問題の要件 (ゴール) に対して、最もシンプルで直接的なアーキテクチャを選択することが重要です。この選択肢のように、不要なサービスを経由する構成は、コスト、パフォーマンス、複雑性の観点から不正解となる典型的なパターンです。
🎯この問題の本質
この問題の本質は、ETL 処理における PII(個人を特定できる情報) の検出・難読化タスクに対して、自社開発 (Lambda など) ではなく、AWS が提供するマネージドな専用機能 (AWS Glue の Detect PII 変換) を活用することが、運用工数の削減に最も効果的である点を理解しているかにあります。
Manga Main
0:00 / 0:00
速度:
ılılı 音声連動
Click to Swap
⇄ 入替
問題5
データエンジニアは、ETL (抽出、変換、ロード) ジョブを構築する必要があります。ETL ジョブは、ユーザーが Amazon S3 バケットにアップロードする毎日の受信 .csv ファイルを処理します。各 S3 オブジェクトのサイズは 100 MB 未満です。

これらの要件を最もコスト効率よく満たすソリューションを選択してください。
A
カスタム Python アプリケーションを作成します。Amazon Elastic Kubernetes Service (Amazon EKS) クラスターでアプリケーションをホストします。
B
PySpark の ETL スクリプトを作成します。Amazon EMR クラスターでスクリプトをホストします。
C
AWS Glue PySpark ジョブを作成します。Apache Spark を使用してデータを変換します。
D
AWS Glue Python シェルジョブを作成します。Pandas を使用してデータを変換します。
問題 5 の説明および補足 
小規模データ ETL における AWS Glue ジョブタイプの選択
正解DAWS Glue Python シェルジョブを作成します。Pandas を使用してデータを変換します。
💡解説のポイント
データサイズが 100MB 未満と小規模であるため、 分散処理が不要な Python シェルジョブが最もコスト効率に優れる ため正解です。
AWS Glue は、サーバーレスで ETL 処理を実行できるサービスであり、主に「Apache Spark ジョブ」と「Python シェルジョブ」の 2 種類のジョブタイプを提供しています。問題の要件では、処理対象のファイルサイズが 100MB 未満 と、単一のマシンで十分に処理できる小規模なデータです。このような場合、大規模なデータセットを並列処理するために設計された Apache Spark 環境は 過剰なスペック となります。

AWS Glue Python シェルジョブ は、Spark 環境を起動せず、シンプルな Python 環境でスクリプトを実行します。これにより、Spark ジョブに比べて以下のメリットがあります。
  • コスト効率 : Spark ジョブは最低でも 2DPU(Data Processing Unit) から起動しますが、Python シェルジョブは最小 0.0625 DPU という、より小さなリソースで実行できます。これにより、 処理コストを大幅に削減 できます。
  • 起動時間 : Spark クラスターの初期化が不要なため、 ジョブの起動が高速 です。

Pandas は Python でデータ分析や操作を行うための強力なライブラリであり、100MB 程度の CSV ファイルの変換処理には最適です。したがって、「最もコスト効率よく」という要件を満たすには、この選択肢が最も適切なソリューションとなります。
Question DEA16-5
AWS 公式ドキュメント要約
※AWS Glue でのジョブのオーサリング Python シェルジョブは、Python バージョン 2 または 3 と互換性のあるスクリプトを実行します。Python シェルジョブを使用して、Apache Spark 環境を必要としないジョブを実行できます。例えば、インフラストラクチャのプロビジョニング、他のデプロイの調整、小規模なデータ変換など、ETL (抽出、変換、ロード) 以外のタスクを実行するジョブを作成できます。Python シェルジョブは、独自の Python ライブラリをインストールして使用できます。
以下は間違いです
不正解Aカスタム Python アプリケーションを作成します。Amazon Elastic Kubernetes Service (Amazon EKS) クラスターでアプリケーションをホストします。
→「Amazon EKS」は、毎日のバッチ処理のために常時クラスターを維持する必要があり、 コスト効率が悪い ため間違いです。
Amazon EKS はコンテナ化されたアプリケーションをデプロイ、管理、スケールするためのマネージド Kubernetes サービスです。ETL ジョブを実行することも可能ですが、そのためにはワーカーノードとなる EC2 インスタンスや Fargate をプロビジョ - ニングし、クラスターを維持する必要があります。毎日の短時間なバッチ処理のために クラスターを常時稼働させるのは、サーバーレスの AWS Glue に比べて大幅にコストが高く なります。「最もコスト効率よく」という要件に反します。
EKS は、マイクロサービスアーキテクチャのような常時稼働するアプリケーションに適しています。ETL のようなイベント駆動型のバッチ処理には、AWS Glue や AWS Lambda といったサーバーレスサービスが第一候補となります。
不正解BPySpark の ETL スクリプトを作成します。Amazon EMR クラスターでスクリプトをホストします。
→「Amazon EMR」は大規模データ処理向けのサービスであり、100MB 未満のデータには オーバースペックでコストが高い ため間違いです。
Amazon EMR は、Apache Spark や Hadoop などのビッグデータフレームワークを実行するためのクラスターを簡単にプロビジョニングできるサービスです。ペタバイト級のデータを扱うような大規模処理には強力ですが、100MB 未満のファイル を処理するには明らかに過剰なソリューションです。 クラスターの起動・管理にコストと手間がかかり 、サーバーレスで利用できる AWS Glue に比べてコスト効率が著しく劣ります。
EMR と Glue はどちらも Spark を実行できますが、EMR はより柔軟なカスタマイズが可能な一方、クラスター管理が必要です。Glue はフルマネージドで手軽に利用できます。データ量が少ない場合は、まず Glue を検討するのがセオリーです。
不正解CAWS Glue PySpark ジョブを作成します。Apache Spark を使用してデータを変換します。
→「AWS Glue PySpark ジョブ」は分散処理を前提としており、小規模データには 過剰でコスト効率が悪い ため間違いです。
この選択肢は正解の D と非常に似ていますが、ジョブタイプが異なります。AWS Glue PySpark ジョブ は、Apache Spark の分散処理エンジン上で実行されます。これは、単一ノードでは処理しきれない大規模なデータセット (数 GB~TB 以上) を扱う場合に効果を発揮します。しかし、100MB 未満のデータ に対して Spark 環境を起動すると、 分散処理のオーバーヘッドにより起動が遅くなり、最低課金リソースも大きくなる ため、Python シェルジョブよりもコストが高くなります。「最もコスト効率よく」という要件を満たせません。
この問題の最大のポイントは、同じ AWS Glue サービス内でのジョブタイプの使い分けです。「ETL だから Spark」と安易に判断せず、必ずデータ量を確認してください。データ量が少ない場合は、Python シェルジョブがコストとパフォーマンスの両面で最適な選択肢となります。
🎯この問題の本質
この問題の本質は、ETL 処理の要件、特にデータ量に応じて、AWS Glue の Spark ジョブと Python シェルジョブをコスト効率の観点から適切に使い分ける能力を評価する点にあります。
Manga Main
0:00 / 0:00
速度:
ılılı 音声連動
Click to Swap
⇄ 入替
問題6
データエンジニアは、Amazon S3 から読み込んで Amazon Redshift に書き込む AWS Glue ジョブをデバッグする必要があります。データエンジニアは、AWS Glue ジョブのブックマーク機能を有効にしました。データエンジニアは、AWS Glue ジョブの最大同時実行数を 1 に設定しました。

AWS Glue ジョブは、正常に Amazon Redshift に出力を書き込んでいます。しかし、AWS Glue ジョブの以前の実行時にロードされた Amazon S3 ファイルが、その後の実行で再処理されています。

AWS Glue ジョブがファイルを再処理している理由を選択してください。
A
AWS Glue ジョブに、ブックマークが正しく機能するために必要な s3:GetObjectAcl 権限がありません。
B
AWS Glue ジョブの最大同時実行数が 1 に設定されています。
C
データエンジニアが、Glue ジョブに古いバージョンの AWS Glue を誤って指定しました。
D
AWS Glue ジョブに必須の commit ステートメントがありません。
問題 6 の説明および補足 
AWS Glue ジョブのブックマークとトランザクションのコミット
正解DAWS Glue ジョブに必須の commit ステートメントがありません。
💡解説のポイント
AWS Glue ジョブが JDBC 接続でデータベースに書き込む際、 トランザクションを明示的にコミットしないとジョブのブックマークの状態が更新されない ため正解です。
AWS Glue ジョブのブックマーク機能 は、ETL ジョブがどのファイルを処理したかを追跡し、次回の実行時に同じファイルを再処理しないようにするための仕組みです。しかし、Amazon Redshift のような JDBC 接続先データベースにデータを書き込む場合、AWS Glue はトランザクションの完了をもって「処理が成功した」と判断し、ブックマークを更新します。

スクリプト内でデータを書き込んだだけではトランザクションは完了せず、最後に 明示的に commit ステートメント (例 : connection.commit () ) を呼び出す 必要があります。この commit がないと、データが書き込まれたように見えてもトランザクションが完了していないため、AWS Glue はジョブが正常に完了したと見なせず、 ブックマークの状態を更新しません 。その結果、次回のジョブ実行時に、前回と同じ S3 ファイルが再び処理対象となってしまいます。
Question DEA16-6
AWS 公式ドキュメント要約
※ジョブのブックマークを使用した処理済みデータの追跡 - AWS Glue JDBC シンクに書き込むときは、データが書き込まれた後、スクリプトで接続をコミットする必要があります。接続をコミットしないと、データは書き込まれず、ブックマークの状態は更新されません。
例えば、Python で次のように接続をコミットできます。
glueContext.write_dynamic_frame.from_jdbc_conf(
  frame, 
  catalog_connection=connection_name, 
  connection_options=connection_options,
  redshift_tmp_dir=redshift_tmp_dir, 
  transformation_ctx="datasink")
  
connection.commit () 
以下は間違いです
不正解AAWS Glue ジョブに、ブックマークが正しく機能するために必要な s3:GetObjectAcl 権限がありません。
→「`s3:GetObjectAcl` 権限」はオブジェクトのアクセスコントロールリスト (ACL) を取得するためのものであり、ブックマーク機能の動作や S3 オブジェクトの読み取り自体には必須ではないため間違いです。
AWS Glue ジョブが S3 からデータを読み込むために最低限必要な権限は `s3:GetObject` です。問題文では「正常に Amazon Redshift に出力を書き込んでいます」とあることから、S3 からのデータ読み込みは成功していると判断できます。ジョブのブックマークは、オブジェクトのメタデータ (最終更新日時など) を利用して処理済みかどうかを判断しますが、ACL 情報を読み取る権限は不要 です。
IAM 権限に関する選択肢は一見もっともらしく見えますが、問題の本質がどこにあるかを見極めることが重要です。この問題では「データ処理はできているが、状態の追跡ができていない」点がポイントであり、権限不足よりもプログラムロジックの欠陥を疑うべきです。
不正解BAWS Glue ジョブの最大同時実行数が 1 に設定されています。
→「最大同時実行数」は、同じジョブが同時に複数実行されるのを防ぐための設定であり、ブックマークが更新されない直接的な原因ではないため間違いです。
ジョブの最大同時実行数 (Maximum concurrency) を `1` に設定するのは、データの二重処理や競合を防ぐための一般的なベストプラクティスです。これは問題を防ぐための「対策」であり、 ブックマークが更新されないという問題の「原因」ではありません 。この設定がブックマーク機能の内部ロジックに影響を与えることはありません。
AWS Glue の各設定項目がどのような目的を持つかを正確に理解しておきましょう。「最大同時実行数」は並列実行の制御、「DPU」は処理能力の割り当て、「タイムアウト」は実行時間の上限設定など、それぞれの役割を区別することが大切です。
不正解Cデータエンジニアが、Glue ジョブに古いバージョンの AWS Glue を誤って指定しました。
→「AWS Glue のバージョン」が原因でブックマーク機能の基本的な動作が変わることは考えにくく、JDBC 書き込みにおけるトランザクションのコミットはバージョンによらず必要な作法であるため間違いです。
ジョブのブックマークは AWS Glue の基本的な機能であり、初期バージョンから提供されています。特定のバージョンでのみ発生するバグである可能性はゼロではありませんが、JDBC のトランザクション管理という プログラミングの基本的な原則 が原因である可能性の方がはるかに高いです。問題文に特定のバージョンに関する記述がない限り、より根本的な原因を示す選択肢を優先して検討すべきです。
「バージョンが古い」という選択肢は、他に明確な原因が見当たらない場合の最終手段として考えましょう。AWS 認定試験では、多くの場合、アーキテクチャやコードの論理的な欠陥を問う問題が出題されます。
🎯この問題の本質
この問題の本質は、AWS Glue のジョブのブックマーク機能が、特に JDBC シンクへの書き込みにおいて、トランザクションの明示的なコミットをもって初めて状態を更新する仕組みであることを理解しているかどうかにあります。
Manga Main
0:00 / 0:00
速度:
ılılı 音声連動
Click to Swap
⇄ 入替
問題7
ある研究室では、プロジェクトのために IoT センサーを使用して湿度、温度、圧力を監視しています。センサーは 10 秒ごとに 100 KB のデータを送信します。下流のプロセスは、30 秒ごとに Amazon S3 バケットからデータを読み取ります。

最も少ないレイテンシーで S3 バケットにデータを配信するソリューションを選択してください。
A
Amazon Kinesis Data Streams と Amazon Data Firehose を使用して、データを S3 バケットに配信します。Amazon Data Firehose のデフォルトのバッファ間隔を使用します。
B
Amazon Kinesis Data Streams を使用して、S3 バケットにデータを配信します。プロビジョニングされた 5 つのシャードを使用するようにストリームを設定します。
C
Amazon Kinesis Data Streams を使用して、Kinesis Client Library を呼び出し、データを S3 バケットに配信します。アプリケーションから 5 秒のバッファ間隔を使用します。
D
Amazon Managed Service for Apache Flink と Amazon Data Firehose を使用して、データを S3 バケットに配信します。Amazon Data Firehose に 5 秒のバッファ間隔を使用します。
問題 7 の説明および補足 
Amazon Data Firehose のバッファリング設定によるレイテンシー最適化
正解DAmazon Managed Service for Apache Flink と Amazon Data Firehose を使用して、データを S3 バケットに配信します。Amazon Data Firehose に 5 秒のバッファ間隔を使用します。
💡解説のポイント
Amazon Data Firehose は、 バッファ間隔を短く(必要に応じて 0 秒まで)設定することで S3 へのデータ配信レイテンシーを最小化できる ため正解です。
Amazon Data Firehose は、ストリーミングデータを Amazon S3 などの送信先に、ほぼリアルタイムで簡単に配信できるフルマネージドサービスです。このサービスには、データをまとめてから送信先に書き込むためのバッファリング機能があります。バッファリングは「バッファサイズ」と「 バッファ間隔 」の 2 つの条件で制御され、どちらかの条件が先に満たされた時点でデータが配信されます。

問題の要件は「 最も少ないレイテンシー 」でのデータ配信です。これを実現するには、バッファ間隔を可能な限り短く設定するのが基本方針になります。Amazon Data Firehose は S3 宛てでもバッファ間隔を短い秒単位(0〜900 秒の範囲)で指定でき、追加の処理がない構成では数秒程度で配信されるケースもあります。

この選択肢では、バッファ間隔を 5 秒 に設定しており、S3 に到達するまでの遅延を最小化できます。さらに、S3 への書き込み、スケーリング、失敗時の再試行、スループット変動への追従などをマネージドで吸収できるため、同程度の秒単位レイテンシーを狙う場合でも、カスタム実装に比べて安定して低遅延を維持しやすい構成です。

なお、Amazon Managed Service for Apache Flink は、ストリームデータの高度な分析や変換(集計・ウィンドウ処理など)を行うためのフルマネージドサービスです。必須要件が「低レイテンシー配信のみ」の場合は Firehose 単体でも成立しますが、選択肢 D のように Flink を組み合わせれば、S3 に保存する前にストリーム処理を挟む余地も残しつつ、配信自体は Firehose の低レイテンシー設定で最短化できます。
Question DEA16-7
AWS 公式ドキュメント要約
※Amazon Data Firehose とは ? Amazon Data Firehose は、リアルタイムのストリーミングデータを Amazon Simple Storage Service (Amazon S3)、Amazon Redshift、Amazon OpenSearch Service、汎用 HTTP エンドポイント、およびサードパーティーのサービスプロバイダー (Datadog、New Relic、MongoDB、Splunk など) といった送信先に配信できる、完全マネージド型のサービスです。Amazon Data Firehose は、データプロデューサーが Amazon Data Firehose にデータを送信するために使用する、使いやすい API を備えた、完全マネージド型のサービスです。データを送信先に配信する前に、バッチ処理、圧縮、変換、暗号化を行うように設定することもできます。
以下は間違いです
不正解AAmazon Kinesis Data Streams と Amazon Data Firehose を使用して、データを S3 バケットに配信します。Amazon Data Firehose のデフォルトのバッファ間隔を使用します。
→「Amazon Data Firehose のデフォルトのバッファ間隔」は 300 秒 (5 分) と長いため間違いです。
Amazon Data Firehose デフォルトのバッファ間隔は 300 秒 に設定されています。これは、最大 5 分間データがバッファリングされる可能性があることを意味します。問題では「最も少ないレイテンシー」が求められており、この デフォルト設定では遅延が大きすぎ ます。

Amazon Data Firehose はバッファ間隔を 0 秒〜の短い値に下げることもできるため、低レイテンシー要件では「デフォルト値のまま使う」こと自体が不適切です。低遅延を実現するためには、バッファ間隔(必要に応じてバッファサイズも)を明示的に短く設定する必要があります。
試験では、主要サービスの「デフォルト設定値」が問われることがよくあります。Amazon Data Firehose のバッファ間隔 (300 秒) やバッファサイズ (5MB) といったデフォルト値は覚えておくと、このような問題で迅速に正誤を判断できます。
不正解BAmazon Kinesis Data Streams を使用して、S3 バケットにデータを配信します。プロビジョニングされた 5 つのシャードを使用するようにストリームを設定します。
→「Amazon Kinesis Data Streams」は、データを S3 に直接配信する機能を持たないため間違いです。
Amazon Kinesis Data Streams は、ストリーミングデータを一時的に保持し、複数のコンシューマーアプリケーションがデータを処理できるようにするためのサービスです。しかし、S3 などの永続的なストレージにデータを直接書き込む機能はありません 。データを S3 に配信するには、Amazon Data Firehose、AWS Lambda、または Kinesis Client Library (KCL) を使用したカスタムアプリケーションなどのコンシューマーを別途用意する必要があります。シャード数はスループット (データ処理能力) を決定する要素であり、S3 への配信機能とは無関係です。
Kinesis ファミリーの各サービスの役割分担を正確に理解することが重要です。Kinesis Data Streams は「データの通り道 (パイプ)」、Amazon Data Firehose は「データを目的地 (S3 など) へ届ける配送サービス」とイメージすると区別しやすくなります。
不正解CAmazon Kinesis Data Streams を使用して、Kinesis Client Library を呼び出し、データを S3 バケットに配信します。アプリケーションから 5 秒のバッファ間隔を使用します。
→「Kinesis Client Library (KCL) を使用したカスタムアプリケーション」は、マネージドサービスである Amazon Data Firehose に比べて運用負荷が高くなり、低レイテンシーを安定して維持しにくいため間違いです。
この方法でも技術的には秒単位の配信を行うアプリケーションを構築することは可能です。しかし、KCL を使う場合、シャードの割り当て(リース管理)やチェックポイント、ワーカーのスケール、失敗時の再処理、重複排除、スロットリング/バックプレッシャー対応などを踏まえて、S3 への書き込み・バッファリング・エラーハンドリングまで 自前で実装・運用する必要 があります。

一方、Amazon Data Firehose は、S3 への書き込み、再試行、スケーリング、低レイテンシー向けのバッファ設定(0 秒〜の指定も含む)をフルマネージドで提供します。要件が「最も少ないレイテンシーで S3 に配信」であり、かつ追加要件(独自形式の複雑な書き込み制御など)がない限り、 目的専用のマネージド配信サービスを自作アプリで置き換えるのは運用面のデメリットが大きい ため不適切です。
「要件を満たせるか」だけでなく、「低遅延を継続して維持できるか(運用・障害対応・スケール)」も重要です。AWS 認定試験では、特別な事情がない限り、マネージドサービスを活用して運用負荷と不確実性を減らす選択が優先されます。
🎯この問題の本質
この問題の本質は、Amazon Data Firehose のバッファリング設定(バッファ間隔/バッファサイズ)が S3 への配信レイテンシーに直結することを理解し、要件に応じて秒単位(必要に応じて 0 秒)まで設定できる点を踏まえて、最短の遅延で配信できる構成を選べるかにあります。
Manga Main
0:00 / 0:00
速度:
ılılı 音声連動
Click to Swap
⇄ 入替
学習を記録
問題は全部で 7 問。全て答えられるように頑張りましょう!
リスト
戻る
網掛け部分は完了した項目です。
12345
67ゴール
戻る
error: