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 は データフィルター (Data Filters) により、特定の行 (行レベル) をクエリ結果から動的に除外できる ため正解です。
AWS Lake Formation は、データレイク内のデータに対してテーブル / 列 / 行レベルのきめ細かなアクセスコントロールを提供します。要件は「国がカナダのお客様」に該当する 特定の行 をユーザーに見せないことです。Lake Formation の 行レベルセキュリティ (行レベルフィルター) は、データフィルターとして「行フィルター述語 (Row filter expression)」を定義し、ユーザーやロール (プリンシパル) ごとにクエリ結果へ反映させます。

たとえば country = 'Canada' の行を除外したい場合、country <>'Canada' のような述語をデータフィルターに設定することで、基盤となる S3 上のデータ自体を変更せずに、参照結果から該当行だけを確実に取り除けます。これにより、データの複製や別テーブル運用などを追加せずに実現でき、 運用上の労力を最小限に抑える という要件にも合致します。
Question DEA16-1
00:00
AWS 公式ドキュメント要約
※Lake Formation での行レベルのセキュリティ - AWS Lake Formation 行レベルのセキュリティを使用すると、データカタログ内のテーブルの特定の行へのきめ細かなアクセスをユーザーに付与できます。行フィルタリングを使用すると、ユーザーは特定のデータ (国や部門など) のみを表示できます。行レベルのセキュリティは、データフィルターを使用して実装されます。データフィルターを使用すると、テーブルデータへの読み取りアクセスを許可する述語式を指定できます。
以下は間違いです
不正解B国名がカナダである住所へのユーザーアクセスを制限する IAM ロールを作成します。
→「IAM ロール」は、データの中身 (特定の行) に基づいたアクセス制御を直接行えないため間違いです。
IAM は AWS のサービスやリソースへのアクセス権限 (例 : API オペレーション、S3 バケット / オブジェクトへのアクセス) を管理しますが、S3 上のデータファイルを読み取って 内容に基づき「特定の行だけを見せない」制御を行う仕組みはありません 。IAM ポリシーで制御できるのは、あくまで「どのリソースに対してどの操作を許可するか」であり、テーブル内の行条件 (country='Canada' など) を評価してフィルタリングするのは Lake Formation のデータフィルターの役割です。
IAM は「リソース /API レベル」の制御、Lake Formation は「データ (テーブル / 列 / 行) レベル」の制御と、担当範囲が異なります。要件がデータ内容に基づく制御である場合は、Lake Formation 許可制御機能を選ぶのが基本です。
不正解C列レベルのフィルターを設定して、国がカナダである行へのユーザアクセスを禁止します。
→「列レベルのフィルター」は、特定の列へのアクセスを制御する機能であり、行を条件で除外するものではないため間違いです。
AWS Lake Formation には列レベルのセキュリティ (列のマスキング / 列の選択) もありますが、これは「住所」「電話番号」など 列そのものを見せない / 見せる ための制御です。

今回の要件は「country が Canada に該当する を見せない」ことであり、行条件に基づくフィルタリングが必要です。列を隠しても、カナダの行が結果に混ざること自体は防げないため、要件を満たしません。
問題文に「行にユーザーがアクセスできないようにする」とある場合は、列ではなく行のフィルタリング (行レベルセキュリティ / データフィルターの行述語) を選ぶ、と判断できるようにしておきましょう。
不正解D国がカナダであるすべての行にタグを適用します。タグが「カナダ」に等しいユーザーアクセスを防止します。
→「Lake Formation のタグベースアクセスコントロール (LF-TBAC)」は、テーブルや列などの Data Catalog リソースにタグ付けする仕組みであり、個々の行にタグを付与して制御する機能ではないため間違いです。
AWS Lake Formation のタグベースアクセスコントロール (LF-TBAC) は、Data Catalog のリソース (データベース、テーブル、列) に LF-Tag を付与し、タグ条件で権限付与を簡素化するための機能です。しかし、これは データ内容である各行にタグを付けてアクセス可否を制御する仕組みではありません 。仮に「行ごとにタグ付け」を前提にすると、タグ付与 / 更新の運用が極めて煩雑になり、要件の「運用上の労力を最小限」にも反します。行条件での動的な除外は、データフィルター (行レベルセキュリティ) を用いるのが適切です。
Lake Formation の代表的な制御は「行レベル / 列レベルのデータフィルター」と「LF-TBAC (リソースに対するタグ付け)」です。データ内容に対する制御か、カタログリソースに対する権限制御かを区別して選択しましょう。
🎯この問題の本質
この問題の本質は、AWS Lake Formation のアクセスコントロール手段のうち、「行レベルセキュリティ (データフィルターの行述語)」がデータ内容に基づく行の除外を実現できること、そして IAM や LF-TBAC が行単位のデータフィルタリング用途ではないことを正しく見極められるかにあります。
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 Glue FindMatches ML 変換をトレーニングして使用します。
問題 2 の説明および補足 
AWS Glue の機械学習変換によるレコードマッチング
正解DETL ジョブで AWS Glue FindMatches ML 変換をトレーニングして使用します。
💡解説のポイント
AWS Glue の ML 変換機能である FindMatches は、 機械学習により共通の一意な識別子がないレコード同士を「同一エンティティ」としてマッチング (名寄せ) させる ために提供されているため正解です。
AWS Glue には、データクレンジングや統合を支援する機械学習 (ML) 変換が用意されており、その代表が FindMatches 変換 です。問題文の要件「 共通の一意の識別子を持っていない場合でも、一致するレコードを識別する 」は、氏名・住所・メールアドレスなどが「完全一致しない」複数データソース間で同一人物 (同一実体) を特定する、いわゆる「名寄せ (Entity Resolution / Record Linkage)」に該当します。

FindMatches は、この名寄せを行うために、まず人間が「同じ」「違う」を判断したサンプル (ラベリングデータ) を使用してモデルをトレーニングします。学習済みモデルを ETL ジョブ内で適用すると、データセット内の重複レコードや、異なるデータセット間で同じエンティティを指すレコードを自動的にスコアリング・グルーピングし、マッチしたレコードに同一グループ (マッチ ID) として印を付けられます。これにより、後続処理で「同一人物ごとの集約」「重複排除」「統合されたマスタデータの作成」などを効率よく実装できます。
Question DEA16-2
00:00
AWS 公式ドキュメント要約
※FindMatches ML 変換を使用して ID を照合する FindMatches 変換は、データセット内の完全に一致しないレコードを識別する場合に使用します。FindMatches は、データセット内の重複レコードや、異なるデータセットで同じエンティティを参照するレコードを検索する場合に役立ちます。例えば、次のようなお客様レコードのわずかに異なるバージョンを照合できます。
以下は間違いです
不正解AETL ジョブの一部として Amazon Macie のパターンマッチングを使用します。
→「Amazon Macie」はデータセキュリティとプライバシーのためのサービスであり、レコードのマッチング処理には使用しないため間違いです。
Amazon Macie は、機械学習やマネージドデータ識別子 (パターン) を用いて、S3 などに保存された機密データ (個人情報、財務情報など) を検出・分類・保護するためのサービスです。ここでのパターンマッチングは「機密データを見つける (例 : クレジットカード番号らしき文字列を検出する)」ためのものであり、 複数レコードの属性を総合的に比較して、同一実体かどうかを推定し、重複や同一人物をグルーピングする ETL の名寄せ機能ではありません 。用途が異なります。
Macie は「データ保護 (セキュリティ)」、Glue は「データ統合・ETL」という役割分担を明確に区別しましょう。問題文は「一致するレコードを識別する (名寄せ)」が目的のため、機密データ検出サービスである Macie は適しません。
不正解BETL ジョブで AWS Glue PySpark Filter クラスをトレーニングして使用します。
→「AWS Glue PySpark の Filter クラス」は、単純な条件に基づいて行を除外する機能であり、機械学習によるレコードマッチングは行えないため間違いです。
AWS Glue の ETL スクリプト (PySpark) で使用される `Filter` は、SQL の `WHERE` 句のように、条件式に一致するレコードを残す / 除外するための基本変換です。例えば「年齢が 30 以上」など、判定条件が明確に定義できる場合に有効です。

しかし本問は「共通 ID がない」ため、氏名表記ゆれ・住所の揺れ・欠損などを踏まえて同一実体かどうかを推定する必要があり、 `Filter` のような決定的条件だけで名寄せを実現することはできません。また `Filter` 自体に「トレーニング」という概念はなく、機械学習モデルをトレーニングして適用する仕組みではありません
Glue の基本変換 (Filter/Join/DropDuplicates など) で解ける問題か、ML 変換 (FindMatches など) が必要な問題かを切り分けることが重要です。「共通 ID がない」「完全一致しないレコードを照合したい」といった表現が出たら、単純なフィルタリングでは不足だと判断します。
不正解Cテーブルをパーティショニングし、ETL ジョブで一意の識別子でデータをパーティショニングします。
→「パーティショニング」はクエリのパフォーマンスを最適化する手法であり、レコードの一致を識別する機能ではないため間違いです。
パーティショニング は、Amazon S3 上のデータを特定のキー (例えば、日付、地域など) に基づいてフォルダ分けして保存する設計です。これにより、Amazon Athena などでクエリを実行する際にスキャン対象を絞り込み、 パフォーマンス向上とコスト削減 を実現できます。

しかし、これは「検索範囲を絞るための格納最適化」であり、 データの内容 (複数列の属性) を比較して同一実体を推定し、重複や一致レコードを識別する名寄せ機能ではありません 。さらに問題文は「共通の一意の識別子を持っていない」としているため、前提として「一意の識別子でパーティショニングする」こと自体が成立しにくい点でも不適切です。
パーティショニングは「クエリ最適化」の定番キーワードですが、目的はスキャン量削減です。名寄せ・レコードマッチングの要件がある場合は、FindMatches のようなレコード照合機能 (ML/ 照合) が論点になります。
🎯この問題の本質
この問題の本質は、共通 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 Data Firehose にイベントを書き込むように Lambda 関数をプログラムします。ログ S3 バケットにイベントを書き込むように Amazon 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 のオブジェクトレベル API オペレーションを記録できる機能 であり、最小限の運用労力で要件を満たせるため正解です。
AWS CloudTrail は、AWS アカウント内での API コールを記録し、監査やコンプライアンス対応に利用されるサービスです。CloudTrail には主に「管理イベント」と「データイベント」の 2 種類のイベントがあります。

・管理イベント:
リソースの設定変更など、コントロールプレーンオペレーションを記録します (例 : S3 バケットの作成・削除、バケットポリシー変更) 。

・データイベント:
リソース内でのデータ操作 (データプレーンオペレーション) を記録します (例 : S3 オブジェクトの取得・アップロード・削除) 。

問題の要件である「S3 バケット内のオブジェクト操作 (PUT, POST, DELETE など)」は、まさに データイベント の対象です。CloudTrail の証跡 (Trail) を作成し、データイベントを有効にして対象の S3 バケットを指定するだけで、 自動的に API コールが記録され、指定した別の S3 バケットにログファイルが保存 されます。コード開発や他サービス連携を前提にせず、設定だけで要件を満たせるため、 最も運用労力が少なく 、要件に完全に合致しています。

なお、データイベントはログ量が増えやすくコストにも影響するため、実運用では対象バケットやプレフィックス、読み込み / 書き込みの種別を要件に合わせて適切に選択することが重要です。
Question DEA16-3
00:00
AWS 公式ドキュメント要約
※CloudTrail を使用した Amazon S3 API コールのログ記録 - Amazon Simple Storage ServiceCloudTrail は、Amazon S3 のデータイベントをキャプチャできます。データイベントは、リソース上またはリソース内で実行されるリソースオペレーションです。Amazon S3 では、これらのイベントはオブジェクトレベルの API オペレーションです。例えば、GetObject、DeleteObject、および PutObject API オペレーションは、データイベントの例です。デフォルトでは、証跡はデータイベントをログに記録しませんが、データイベントを記録するように証跡を設定できます。
以下は間違いです
不正解Aトランザクション S3 バケット上のすべてのアクティビティに対して、AWS Lambda 関数を呼び出す S3 イベント通知ルールを設定します。Amazon Data Firehose にイベントを書き込むように Lambda 関数をプログラムします。ログ S3 バケットにイベントを書き込むように Amazon Data Firehose を設定します。
→「AWS Lambda や Amazon Data Firehose の構築・管理が必要」であり、最小限の運用労力という要件を満たさないため間違いです。
この構成は技術的には実現可能ですが、S3 イベント通知の設定、Lambda 関数の開発・デプロイ・運用、そして Amazon Data Firehose の設定・運用と、 複数のサービスを連携させる必要 があります。さらに、S3 イベント通知は「通知イベント」としての仕組みであり、監査ログ用途の標準機能ではないため、失敗時の再処理設計や重複イベント対応なども考慮が必要になります。CloudTrail のデータイベントを有効化してログ出力先を S3 に指定する方法と比べて、明らかに 構築と運用の手間が大きい ため、「最小限の運用労力」という要件に反します。
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 のデータイベント機能を使えば、証跡 (Trail) とデータイベント、出力先 S3 バケットを設定するだけで、コーディングなしに同等の目的を達成できます。したがって、この方法は 運用労力が大きい ため、「最小限の運用労力」という要件に反します。
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 の判定ロジックや難読化処理を自前で実装・保守する必要がなくなり、要件である「 最も少ない運用工数 」を満たします。さらに、AWS Step Functions は、Glue ジョブの実行順序制御、リトライ、エラー分岐などをマネージドに実装できるため、データパイプラインを堅牢にオーケストレーションできます。
Question DEA16-4
00:00
AWS 公式ドキュメント要約
※個人を特定できる情報 (PII) の検出 AWS Glue は、データ内の個人を特定できる情報 (PII) を検出し、さまざまなアクションを実行して PII を削除または編集できる DetectPii 変換を提供します。この変換を使用して、名前、住所、E メールアドレスなどのエンティティを検出し、PII を含む列を削除したり、PII をハッシュ化したりできます。
以下は間違いです
不正解AAmazon Data Firehose 配信ストリームを使用してデータセットを処理します。AWS Lambda 変換関数を作成して、PII を識別します。AWS SDK を使用して PII を難読化します。S3 データレイクを配信ストリームのターゲットとして設定します。
→「AWS Lambda」では PII を識別・難読化するロジックを 自前で開発する必要があり 実装・保守の運用工数が高くなる ため間違いです。
Amazon Data Firehose と AWS Lambda の組み合わせはストリーミング変換には有効ですが、この選択肢では PII の「識別」から「難読化」までのロジックを Lambda 内で独自実装する必要があります。PII のパターン追加・変更への追従、誤検知 / 検知漏れ対策、テスト、監査対応など、継続的なメンテナンス負荷が発生します。マネージドな組み込み機能で設定できる AWS Glue の Detect PII と比べて、要件である「 最も少ない運用工数 」を満たせません。
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 チェック、値域チェック、形式チェック、ユニーク性など) を行う機能です。PII をマスキング / ハッシュ化 / 編集するといった「 難読化 」処理は Data Quality の役割ではありません。PII の難読化は Detect PII 変換のアクション指定 (または Glue ジョブ内の別変換) で実施するのが正しい構成です。
AWS のサービスは名前が似ていても役割が全く異なることがよくあります。「Data Quality」はデータを「検証」する機能であり、内容を「変換」して置き換える機能ではない、と切り分けて判断できるようにしましょう。
不正解Dデータセットを Amazon DynamoDB に取り込みます。AWS Lambda 関数を作成して、DynamoDB テーブル内の PII を識別して難読化し、データを変換します。同じ Lambda 関数を使用して、データを S3 データレイクに取り込みます。
→最終的な保存先が S3 であるにもかかわらず、一度 DynamoDB に取り込む というステップが 冗長で非効率 であり、さらに Lambda での 自前実装 も必要になるため間違いです。
この構成は、S3 データレイクへの取り込みが目的にもかかわらず、途中で Amazon DynamoDB を経由させるため、処理ステップ・コスト・運用ポイントが増えます。加えて、PII の検出と難読化を Lambda で 自前実装する必要がある ため、実装・保守負荷が高くなります。要件は「データセットをプロファイルし、PII を難読化して S3 に取り込む」ことであり、Glue の組み込み変換で完結できる構成に比べて非合理です。
問題の要件 (ゴール) に対して、最もシンプルで直接的なアーキテクチャを選択することが重要です。この選択肢のように、不要なサービスを経由する構成は、コスト、複雑性、運用負荷の観点から不正解となる典型例です。
🎯この問題の本質
この問題の本質は、ETL 処理における PII(個人を特定できる情報) の検出・難読化に対して、Lambda などでの自社実装ではなく、AWS が提供するマネージドな専用機能 (AWS Glue Studio の 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 を使う ETL/ ストリーミング処理と、軽量な「Python シェルジョブ」などのジョブタイプを提供しています。問題の要件では、処理対象のファイルサイズが 100MB 未満 と、単一の実行環境で十分に処理できる小規模なデータです。このような場合、大規模なデータセットを並列処理するために設計された Apache Spark 環境は 過剰なスペック となります。

AWS Glue Python シェルジョブ は、Apache Spark 環境を起動せず、シンプルな Python ランタイム環境でスクリプトを実行します。これにより、Spark ジョブに比べて以下のメリットがあります。

  • コスト効率 : Spark ジョブはワーカーを用いた分散実行が前提となり、最小構成でも複数 DPU 相当 (例 : 1 DPU 相当のワーカーを複数台) で実行されます。一方で Python シェルジョブは 0.0625 DPU または 1 DPU を割り当て可能で、最小 0.0625 DPU(デフォルト) という、より小さなリソースで実行できます。これにより、 小規模データの処理コストを大幅に削減 できます。
  • 起動時間 : 分散実行基盤 (ワーカー群) の初期化が不要なため、 ジョブの立ち上がりが軽く短時間バッチに向く という利点があります。

Pandas は Python でデータ分析や操作を行うための強力なライブラリであり、100MB 程度の CSV ファイルの変換 (列の整形、欠損補完、フィルタ、型変換、集計など) には最適です。したがって、「最もコスト効率よく」という要件を満たすには、この選択肢が最も適切なソリューションとなります。
Question DEA16-5
00:00
AWS 公式ドキュメント要約
※AWS Glue でのジョブのオーサリング Python シェルジョブは、Python 3.6 または 3.9 と互換性のあるスクリプトを実行します。Python シェルジョブを使用して、Apache Spark 環境を必要としないジョブを実行できます。例えば、インフラストラクチャのプロビジョニング、他のデプロイの調整、小規模なデータ変換など、ETL (抽出、変換、ロード) 以外のタスクを実行するジョブを作成できます。Python シェルジョブは、独自の Python ライブラリをインストールして使用できます。
以下は間違いです
不正解Aカスタム Python アプリケーションを作成します。Amazon Elastic Kubernetes Service (Amazon EKS) クラスターでアプリケーションをホストします。
→「Amazon EKS」は、毎日のバッチ処理のためにクラスター運用 (基盤の維持・監視・更新) を伴い、 コスト効率が悪い ため間違いです。
Amazon EKS はコンテナ化されたアプリケーションをデプロイ、管理、スケールするためのマネージド Kubernetes サービスです。ETL ジョブを実行することも可能ですが、そのためにはクラスターの設計・運用、ワーカーノードとなる EC2 インスタンスや Fargate の準備、ジョブ実行基盤 (CronJob/Job、ログ、失敗時のリトライ、依存ライブラリ配布など) の整備が必要になります。毎日の短時間なバッチ処理のために Kubernetes 基盤を維持するのは、サーバーレスの AWS Glue に比べて運用負荷と固定費 (クラスター関連コストや周辺運用) が増えやすく なります。「最もコスト効率よく」という要件に反します。
EKS は、マイクロサービスアーキテクチャのような常時稼働するアプリケーションや、Kubernetes のエコシステムを活かしたい場合に適しています。ETL のような定期バッチの小規模処理では、ジョブ単位で課金され運用が軽い AWS Glue の方が第一候補になります。
不正解BPySpark の ETL スクリプトを作成します。Amazon EMR クラスターでスクリプトをホストします。
→「Amazon EMR」は大規模データ処理向けのサービスであり、100MB 未満のデータには オーバースペックでコストが高い ため間違いです。
Amazon EMR は、Apache Spark や Hadoop などのビッグデータフレームワークを実行するためのクラスターを簡単にプロビジョニングできるサービスです。大規模処理には強力ですが、100MB 未満のファイル を日次で処理する要件では、 クラスターの準備・起動・設定・監視といった運用作業が増えやすく、必要リソースも相対的に大きくなりがち です。サーバーレスで最小リソースから実行できる AWS Glue Python シェルジョブに比べて、コスト効率の面で不利になります。
EMR は柔軟なカスタマイズ性がある一方、クラスターという実行基盤を前提に設計されます。データ量が少なく「最小コスト」を狙う場合は、まずサーバーレスの 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 ジョブのブックマークと job.commit ()
正解DAWS Glue ジョブに必須の commit ステートメントがありません。
💡解説のポイント
AWS Glue ジョブのブックマークは、 ユーザースクリプトの末尾で job.commit () を呼び出して状態を確定させないと、処理済み状態 (ブックマーク状態要素) が保存されない ため正解です。
AWS Glue ジョブのブックマーク機能 は、ETL ジョブがどの入力 (S3 オブジェクトなど) を処理したかの状態を保持し、次回以降の実行で同じ入力を重複処理しないための仕組みです。ブックマークはジョブ単位で管理され、スクリプトが job.init () で最新の状態を取得し、各ソース / 変換 / シンクは transformation_ctx によって状態要素として紐づけられます。

重要なのは、 これらの状態要素はジョブの処理が終わっただけでは保存されず、スクリプトの末尾で job.commit () が呼び出された時点でアトミックに保存される という点です。したがって、Amazon Redshift への書き込み自体が成功していても、job.commit () がないと AWS Glue は「今回どの S3 ファイルを処理済みとして確定したか」を記録できず、 ブックマークが更新されないため次回実行時に同じ S3 ファイルを再び処理対象として扱ってしまいます
Question DEA16-6
00:00
AWS 公式ドキュメント要約
※ジョブのブックマークを使用した処理済みデータの追跡 - AWS Glue ジョブのブックマークの状態要素は、ユーザースクリプトで job.commit () が呼び出されたときに保存されます。job.commit () がない場合、ジョブは出力を作成していてもブックマークの状態が更新されず、次回の実行で既に処理した入力が再処理されることがあります。
例えば、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")

job.commit () 
以下は間違いです
不正解AAWS Glue ジョブに、ブックマークが正しく機能するために必要な s3:GetObjectAcl 権限がありません。
→「`s3:GetObjectAcl` 権限」はオブジェクトの ACL を取得するための API アクションであり、S3 を入力ソースとしてブックマークが処理済み判定を行うための必須権限ではないため間違いです。
AWS Glue が S3 入力ソースを処理する際、少なくとも `s3:ListBucket`(オブジェクト列挙) および `s3:GetObject`(オブジェクト取得) といった読み取り系権限が必要です。一方で、ジョブのブックマークは ACL 情報を前提に動作するものではなく、入力オブジェクトの更新状況 (例 : 最終更新日時) やジョブ内の状態要素を用いて処理済みを判断します。問題文では「正常に Amazon Redshift に出力を書き込んでいます」とあるため、少なくとも S3 からの読み取りと Redshift への書き込みは成立しており、 ACL 取得権限の欠如が原因でブックマークだけが再処理になる、という因果は成立しにくい です。
IAM 権限に関する選択肢は一見もっともらしく見えますが、実行が成功している前提 (読み込み / 書き込みができている) と整合するかを確認することが重要です。この問題では「処理自体はできているが、処理済みとして確定 (状態保存) できていない」点がポイントであり、権限不足よりもジョブのブックマーク確定手順 (job.commit () ) の欠落を疑うべきです。
不正解BAWS Glue ジョブの最大同時実行数が 1 に設定されています。
→「最大同時実行数」は、同じジョブが同時に複数実行されるのを防ぐための設定であり、ブックマークが更新されない直接的な原因ではないため間違いです。
ジョブの最大同時実行数 (Maximum concurrency) を `1` に設定するのは、ジョブのブックマークが同時実行によって競合するのを避けるための基本的な対策です。実際に、同時に複数の実行が走るとブックマークの更新が競合して問題になり得ますが、問題文では最大同時実行数はすでに `1` であり、 「ブックマークが更新されず再処理になる」原因を説明できません 。ブックマークが更新されない場合は、スクリプト側で状態確定 (job.commit () ) が実行されていないなど、別の要因を疑うべきです。
AWS Glue の各設定項目がどのような目的を持つかを正確に理解しておきましょう。「最大同時実行数」は並列実行の制御であり、ブックマークの状態保存はスクリプトの job.commit () によって確定します。それぞれの役割を区別することが大切です。
不正解Cデータエンジニアが、Glue ジョブに古いバージョンの AWS Glue を誤って指定しました。
→「AWS Glue のバージョン」が原因でブックマーク機能の基本動作 (状態確定に job.commit () が必要) が変わることは考えにくく、ブックマーク確定手順の欠落という根本原因の方が適切なため間違いです。
ジョブのブックマークは AWS Glue の基本機能であり、バージョン指定の違いが直接「同じ S3 ファイルを毎回再処理する」という症状を生むケースは一般的ではありません。仮にバージョン差がある場合でも、ジョブのブックマークは「スクリプト内で状態を確定する」前提 (job.commit () ) で動作します。問題文にバージョン固有の不具合や非対応形式などの記述がない以上、 バージョンよりもジョブスクリプトの必須手順 (job.commit () ) の欠落という基本的な原因 を優先して判断すべきです。
「バージョンが古い」という選択肢は、問題文にバージョン差による挙動差が明示されている場合に有力になります。AWS 認定試験では、多くの場合、設定やコード上の必須要件 (初期化・コンテキスト・コミットなど) の欠落を問う形で出題されます。
🎯この問題の本質
この問題の本質は、AWS Glue のジョブのブックマーク機能が、処理済み状態を保存するためにユーザースクリプトの末尾で job.commit () を必要とすることを理解しているかどうかにあります。
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 秒の範囲) で指定でき、バッファ間隔を 0 秒に近づけるほど数秒以内の配信を狙えます。

ただし、これらは「バッファリングのヒント」であり、Firehose は内部最適化や送信先の状況に応じて、指定値どおりに厳密には動作しない (前倒し / 遅延 / 分割などが起こり得る) 点に注意が必要です。それでも、要件が「最小レイテンシー」である限り、バッファ間隔を短くすることが最短化の最重要ポイントになります。

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

なお、Amazon Managed Service for Apache Flink は、ストリームデータの分析や変換 (集計・ウィンドウ処理など) を行うためのフルマネージドサービスです。必須要件が「低レイテンシー配信のみ」の場合は Firehose 単体でも成立しますが、選択肢 D のように Flink を組み合わせれば、S3 に保存する前にストリーム処理を挟む余地も残しつつ、配信自体は Firehose の低レイテンシー設定で最短化できます。
Question DEA16-7
00:00
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 分間データがバッファリングされる可能性があることを意味します。今回のように 10 秒ごとに 100 KB 程度のデータが到着するケースでは、短時間で 5 MB に到達しにくく、 バッファ間隔が配信遅延の支配要因になりやすい ため、「最も少ないレイテンシー」という要件に反します。

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: