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

データエンジニア-アソシエイト

正解 B,D問題
分野3:データ運用とサポート タスクステートメント3.1:AWS サービスを使用したデータ処理の自動化
合格に向けて、もっと深く学習する
豊富な問題と詳細なAWSサービス解説を、24時間無料でお試しいただけます
プレミアム会員機能を無料で試す ❯
問題文と選択肢
ある気象データ解析会社は、衛星画像の解析に Amazon EMR クラスターを利用しています。データエンジニアリングチームは、新しいクラスターを起動するたびにマスターノードへログインし、地理空間処理に必要なサードパーティ製ライブラリ (GDAL など) を手作業でインストールしています。チームはこの手作業をなくし、クラスター起動時に自動的にライブラリが利用可能になる仕組みを構築したいと考えています。

この要件を満たす方法として適切なものはどれですか。(2つ選択してください)
  • 必要なライブラリをインストール済みの Amazon EC2 インスタンスを、そのまま EMR クラスターの起動に使用する
  • インストールスクリプトを Amazon S3 に配置し、EMR クラスターのカスタムブートストラップアクションとして実行する
  • 必要なライブラリを AWS Systems Manager のドキュメントとして登録し、クラスター起動後に Run Command を手動実行してマスターノードにインストールする
  • Amazon Linux ベースの Amazon EC2 インスタンス上で必要なライブラリをインストールし、そのインスタンスから作成した AMI を使って EMR クラスターを起動する
  • インストールスクリプトを Amazon DynamoDB に保存し、EMR クラスターの起動時に自動的に読み込ませて実行する
解説 頻出度★★★★★
この問題は、「クラスター起動のたびの手作業を無くす」という要件で、Amazon EMR の事前セットアップ手段であるブートストラップアクションカスタム AMI の 2 つを選べるかがポイントです。

A. 必要なライブラリをインストール済みの Amazon EC2 インスタンスを、そのまま EMR クラスターの起動に使用する

Amazon EMR のノードは、クラスター作成時に EMR 自身がプロビジョニングするインスタンスで構成されます。すでに稼働している任意の EC2 インスタンスを、そのままクラスターのノードとして組み込む仕組みはありません。
ライブラリを導入済みのインスタンスを活用したいのであれば、そこから AMI を作成して EMR の起動時に指定する(選択肢 D)必要があります。
「作った EC2 をそのまま使える」と誤認させる誤答です。

正解

B. インストールスクリプトを Amazon S3 に配置し、EMR クラスターのカスタムブートストラップアクションとして実行する

ブートストラップアクションは、Amazon S3 に置いたスクリプトをクラスターの各ノードの起動時(Hadoop などのアプリケーション起動前)に自動実行する EMR の標準機能です。
クラスター定義(コンソール・CLI・API・テンプレート)に含められるため、新しいクラスターを起動するたびに GDAL などのライブラリが全ノードへ自動的に導入され、手作業が完全になくなります。
「起動のたびに同じセットアップを流したい」という本問の要件に対する第一候補です。

C. 必要なライブラリを AWS Systems Manager のドキュメントとして登録し、クラスター起動後に Run Command を手動実行してマスターノードにインストールする

AWS Systems Manager の Run Command でインストール自体は可能ですが、クラスター起動後に手動実行する時点で「手作業をなくす」という要件を満たしていません。
さらにマスターノードだけに導入しても、実際の分散処理を担うコアノード/タスクノードでライブラリが不足し、ジョブが失敗します。
自動化の体裁を装いつつ、実態は現状の手順とほぼ変わらない誤答です。

正解

D. Amazon Linux ベースの Amazon EC2 インスタンス上で必要なライブラリをインストールし、そのインスタンスから作成した AMI を使って EMR クラスターを起動する

Amazon EMR は、Amazon Linux ベースの独自 AMI(カスタム AMI)を指定してクラスターを起動できます。あらかじめ GDAL などを焼き込んだ AMI を用意しておけば、起動直後からライブラリが利用可能です。
ブートストラップアクションと違い起動のたびにインストール処理が走らないため、依存関係が多い場合はクラスターの起動時間短縮にもつながります。
OS レベルの設定やライセンス済みソフトウェアを含めたい場合にも有効な、正解のもう一方です。

E. インストールスクリプトを Amazon DynamoDB に保存し、EMR クラスターの起動時に自動的に読み込ませて実行する

Amazon DynamoDB に置いたスクリプトを EMR が起動時に自動で読み込んで実行する、という機能は存在しません
ブートストラップアクションのスクリプト配置先として EMR がサポートするのは Amazon S3 です。
「S3 を DynamoDB に置き換えただけ」の、サービスの役割を取り違えさせる誤答です。

これだけ覚える(記憶フック)
EMR の事前セットアップはブートストラップアクションかカスタム AMI。起動後の手作業は答えにならない。
正解への思考ルート 問題文から要件を抽出し、選択肢の適否を判断するのがポイントです。
要件 判断ポイント
クラスター起動のたびの手作業をなくしたい クラスターの起動プロセスに組み込める仕組みだけが答えになる。起動後の手動操作は要件を満たさない
→選択肢(C)を消す
S3 に置いたスクリプトをノード起動時に自動実行したい ブートストラップアクションが該当。全ノードに対しアプリケーション起動前に実行される
→選択肢(B)が正解
ライブラリを事前に環境へ焼き込んでおきたい Amazon Linux ベースのカスタム AMI を EMR クラスター起動時に指定できる
→選択肢(D)が正解
EMR のノードは誰が用意するか/スクリプトはどこに置くか ノードは EMR がプロビジョニングし、既存 EC2 の転用は不可。スクリプト配置先は S3 で、DynamoDB から自動実行する機能はない
→選択肢(A・E)を消す
ひっかけポイント
  • 「マスターノードにだけ入れる」発想(選択肢 C)に注意。分散処理ではコアノード/タスクノード側にもライブラリが必要
  • Run Command は自動化の道具だが、選択肢 C は「手動実行」と明記されている。手段の名前ではなく実行方法を読む
  • ブートストラップアクションはアプリケーション起動前に走る。クラスター起動後に処理を流したい場合はステップ (Step) を使う、という使い分けが問われる
  • カスタム AMI はAmazon Linux ベースであることが前提。任意の OS イメージを持ち込める話ではない
出題バリエーション 同じ知識が本番では条件を変えて出題されます。
問題文がこう変わったら 正解はこう変わる
「クラスターの起動時間そのものを短縮したい(依存ライブラリが大量)」 毎回インストールが走るブートストラップよりカスタム AMI が優位、という比較が論点に。
「クラスター起動に ETL 処理を順番に実行したい」 EMR ステップ (Step) や Step Functions によるオーケストレーションが正解軸に。
「ジョブごとに異なる Python ライブラリを持ち込みたい」 EMR Serverless の仮想環境パッケージングや EMR on EKS のカスタムイメージが正解軸に。
「同じ構成のクラスターをいつでも再現したい」 AWS CloudFormation / EMR のクローン機能によるクラスター定義のコード化が論点に。
Apache Spark 用の追加 JAR をジョブ実行時にだけ読み込ませたい」 spark-submit の --jars / --packages 指定や設定分類 (configuration classification) が正解軸に。
関連サービスの解説 Amazon EC2
Amazon EMR
Amazon Simple Storage Service (Amazon S3)
+ 質問 / コメント
解答・解説に疑問がある場合や、よりよい解説がある場合など、お気軽にコメントください。ただし、短文コメントは表示されません。また、中傷などコメントの内容によっては、会員機能を停止させて頂きます。教え学び合える場になれば嬉しいです。(コメント投稿にはログインが必要です)
正答率 0%
No.7 解説
ある気象データ解析会社は、衛星画像の解析に Amazon EMR クラスターを利用しています。データエンジニアリングチームは、新しいクラスターを起動するたびにマスターノードへログインし、地理空間処理に必要なサードパーティ製ライブラリ (GDAL など) を手作業でインストールしています。チームはこの手作業をなくし、クラスター起動時に自動的にライブラリが利用可能になる仕組みを構築したいと考えています。

この要件を満たす方法として適切なものはどれですか。(2つ選択してください)
  • 必要なライブラリをインストール済みの Amazon EC2 インスタンスを、そのまま EMR クラスターの起動に使用する
  • インストールスクリプトを Amazon S3 に配置し、EMR クラスターのカスタムブートストラップアクションとして実行する
  • 必要なライブラリを AWS Systems Manager のドキュメントとして登録し、クラスター起動後に Run Command を手動実行してマスターノードにインストールする
  • Amazon Linux ベースの Amazon EC2 インスタンス上で必要なライブラリをインストールし、そのインスタンスから作成した AMI を使って EMR クラスターを起動する
  • インストールスクリプトを Amazon DynamoDB に保存し、EMR クラスターの起動時に自動的に読み込ませて実行する

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