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

ソリューションアーキテクト-プロフェッショナル

正解 C問題
要復習(もう一度解きたい問題) 1 2 3 4
合格に向けて、もっと深く学習する
豊富な問題と詳細なAWSサービス解説を、24時間無料でお試しいただけます
プレミアム会員機能を無料で試す ❯
問題文と選択肢
あなたの会社は大量の航空写真データを Amazon S3 にアップロードしました。以前は、オンプレミス環境で専用のサーバーグループを使用してこのデータを処理し、RabbitMQ(オープンソースのメッセージングシステム)を使用してサーバーにジョブ情報を配信していました。処理が完了すると、データはテープに記録され、長期保管のためにオフサイトに出荷されていました。あなたのマネージャーは、現在のアーキテクチャパターン(キューからジョブを取得して処理し、完了後は長期保管する)を維持しつつ、AWS のアーカイブストレージとマネージドメッセージングサービスを活用してコストを最小限に抑えるように指示しました。この要件を満たすソリューションはどれですか。
  • Amazon SQS を使用してジョブメッセージを配信し、Amazon CloudWatch アラームを使用してアイドル状態になった Amazon EC2 ワーカーインスタンスを終了します。データ処理後、S3 オブジェクトのストレージクラスを S3 Standard-IA に移行します。
  • スポットインスタンスを使用し、Amazon SQS でメッセージを処理する Auto Scaling グループをキューの深さに基づいてスケールするように設定します。データ処理後、S3 オブジェクトのストレージクラスを S3 Standard-IA に移行します。
  • スポットインスタンスを使用し、Amazon SQS でメッセージを処理する Auto Scaling グループをキューの深さに基づいてスケールするように設定します。データ処理後、S3 オブジェクトのストレージクラスを S3 Glacier に移行します。
  • Amazon SNS を使用してジョブメッセージを配信し、Amazon CloudWatch アラームを使用してアイドル状態になったスポットインスタンスを終了します。データ処理後、S3 オブジェクトのストレージクラスを S3 Glacier に移行します。
解説 頻出度★★★★
この問題は、「RabbitMQ のプル型ワーカー構成の維持 × テープ相当の長期アーカイブ × コスト最小化」の要件で、Amazon SQS + キュー深度によるスポットインスタンスの Auto Scaling + S3 Glacier の組み合わせを選べるかがポイント

A. Amazon SQS を使用してジョブメッセージを配信し、Amazon CloudWatch アラームを使用してアイドル状態になった Amazon EC2 ワーカーインスタンスを終了します。データ処理後、S3 オブジェクトのストレージクラスを S3 Standard-IA に移行します。

Amazon SQS でジョブを配信する点は正しいが、2 つの弱点がある。まず処理後の保存先が S3 Standard-IA で、これは「たまにアクセスする低頻度アクセスデータ」向けのクラス。テープでのオフサイト長期保管の代替としてはコストが高すぎる(アーカイブ要件に対して最適ではない)。
さらに、CloudWatch アラームでアイドルインスタンスを終了する方式は、キュー深度に応じた自動スケールアウトが無く、オンデマンド EC2 のままなのでコスト最小化の要件も満たさない。

B. スポットインスタンスを使用し、Amazon SQS でメッセージを処理する Auto Scaling グループをキューの深さに基づいてスケールするように設定します。データ処理後、S3 オブジェクトのストレージクラスを S3 Standard-IA に移行します。

スポットインスタンス+キュー深度ベースの Auto Scaling というコンピューティング側の設計は正解 C と同じで妥当。しかしアーカイブ先が S3 Standard-IA である点が要件に反する。
問題文は「テープに記録してオフサイト保管していた」=めったに取り出さない長期保管であり、かつ「AWS のアーカイブストレージを活用してコストを最小化」と明示している。ここで選ぶべきは Standard-IA ではなく S3 Glacier。C との違いはこの 1 点だけで、まさに読み飛ばしを狙った選択肢。

正解

C. スポットインスタンスを使用し、Amazon SQS でメッセージを処理する Auto Scaling グループをキューの深さに基づいてスケールするように設定します。データ処理後、S3 オブジェクトのストレージクラスを S3 Glacier に移行します。

3 つの要件すべてを満たす唯一の選択肢。
Amazon SQS は「ワーカーがキューからジョブをプルして処理する」という RabbitMQ と同じアーキテクチャパターンをマネージドサービスで再現でき、既存パターンの維持という指示に合致する。
キューの深さ(ApproximateNumberOfMessagesVisible)に基づく Auto Scaling により、未処理ジョブが多いときだけワーカーを増やし、空になれば縮退できる。ワーカーをスポットインスタンスにすれば、中断耐性のあるバッチ処理としてコンピューティングコストを大幅に削減できる(SQS の可視性タイムアウトにより、中断されたジョブはメッセージがキューへ戻り再処理される)。
処理後のデータは S3 Glacier へ移行することで、テープのオフサイト保管に相当する低コストな長期アーカイブを実現できる。

D. Amazon SNS を使用してジョブメッセージを配信し、Amazon CloudWatch アラームを使用してアイドル状態になったスポットインスタンスを終了します。データ処理後、S3 オブジェクトのストレージクラスを S3 Glacier に移行します。

Amazon SNS はプッシュ型の Pub/Sub 通知サービスであり、メッセージを保持してワーカーが取りに来るのを待つキューではない。ワーカーがダウンしていればジョブは失われ、RabbitMQ で実現していた「キューからプルして処理する」パターンを再現できない。
また、CloudWatch アラームでアイドル状態のインスタンスを終了するだけでは負荷に応じてスケールアウトする仕組みが無い。S3 Glacier への移行だけは正しいが、メッセージングの選定を誤っているため不適。

これだけ覚える(記憶フック)
RabbitMQ → Amazon SQS、テープ → S3 Glacier、コスト最小 → スポット+キュー深度スケール。3 点セットで覚える。
正解への思考ルート 問題文から要件を抽出し、選択肢の適否を判断するのがポイントです。
要件 判断ポイント
RabbitMQ でジョブ情報をサーバーに配信していた(既存パターンの維持) ワーカーがキューからプルする方式。マネージドの等価物は Amazon SQS。SNS はプッシュ型で代替にならない
→選択肢(D)を消す
処理完了後、テープでオフサイト長期保管していた 取り出し頻度が極めて低い長期保管=S3 Glacier。S3 Standard-IA は「低頻度アクセス」であってアーカイブ用ではない
→選択肢(A・B)を消す
コストを最小限に抑える 中断耐性のあるバッチ処理はスポットインスタンスで大幅に安くなる。CloudWatch アラームでの手動的な終了管理では不十分
→選択肢(C)が正解
大量データを処理する(負荷が変動する) キューの深さに基づく Auto Scaling なら、未処理ジョブ数に比例してワーカーを増減でき、無駄な稼働が出ない
→選択肢(C)が正解
ひっかけポイント
  • B と C の違いは末尾の「S3 Standard-IA」か「S3 Glacier」か だけ。前半のスポット+キュー深度スケールが正しいので、そこで安心して B を選ばせる作り
  • S3 Standard-IA は「アーカイブ」ではない。ミリ秒で取り出せる代わりに保管単価が高い。「テープの代替」と書かれたら Glacier 系を選ぶ
  • 選択肢 A・D の「CloudWatch アラームでアイドルインスタンスを終了」は一見コスト削減に見えるが、スケールアウト側の仕組みが無い。Auto Scaling による増減とは別物
  • SQS と SNS の取り違えは頻出。「ワーカーがジョブを取得して処理する」=プル型=SQS、「複数の宛先に一斉通知」=プッシュ型=SNS
出題バリエーション 同じ知識が本番では条件を変えて出題されます。
問題文がこう変わったら 正解はこう変わる
「アーカイブしたデータを数分〜数時間以内に取り出す必要がある S3 Glacier Flexible Retrieval(迅速/標準取り出し)が妥当。数ミリ秒が必要なら S3 Glacier Instant Retrieval に。
「10 年以上保管し、取り出しは 12 時間かかってもよい・とにかく最安で S3 Glacier Deep Archive が正解軸に。
「アクセスパターンが読めない/変動するデータを自動で最適なクラスに置きたい」 S3 Intelligent-Tiering が正解に(手動のライフサイクル移行より有利)。
RabbitMQ / AMQP のプロトコルをそのまま使い続けたい(アプリを書き換えたくない)」 Amazon MQ が正解軸に。SQS はプロトコル互換ではない点に注意。
「ジョブは厳密な順序どおり・重複なしで処理する必要がある」 SQS FIFO キューが正解に(スループット上限とのトレードオフ)。
関連サービスの解説 Amazon CloudWatch
Amazon EC2
Amazon EC2 Auto Scaling
Amazon S3 Glacier
Amazon Simple Notification Service (Amazon SNS)
Amazon Simple Queue Service (Amazon SQS)
Amazon Simple Storage Service (Amazon S3)
+ 質問 / コメント
解答・解説に疑問がある場合や、よりよい解説がある場合など、お気軽にコメントください。ただし、短文コメントは表示されません。また、中傷などコメントの内容によっては、会員機能を停止させて頂きます。教え学び合える場になれば嬉しいです。(コメント投稿にはログインが必要です)
正答率 74%
No.14 解説
あなたの会社は大量の航空写真データを Amazon S3 にアップロードしました。以前は、オンプレミス環境で専用のサーバーグループを使用してこのデータを処理し、RabbitMQ(オープンソースのメッセージングシステム)を使用してサーバーにジョブ情報を配信していました。処理が完了すると、データはテープに記録され、長期保管のためにオフサイトに出荷されていました。あなたのマネージャーは、現在のアーキテクチャパターン(キューからジョブを取得して処理し、完了後は長期保管する)を維持しつつ、AWS のアーカイブストレージとマネージドメッセージングサービスを活用してコストを最小限に抑えるように指示しました。この要件を満たすソリューションはどれですか。
  • Amazon SQS を使用してジョブメッセージを配信し、Amazon CloudWatch アラームを使用してアイドル状態になった Amazon EC2 ワーカーインスタンスを終了します。データ処理後、S3 オブジェクトのストレージクラスを S3 Standard-IA に移行します。
  • スポットインスタンスを使用し、Amazon SQS でメッセージを処理する Auto Scaling グループをキューの深さに基づいてスケールするように設定します。データ処理後、S3 オブジェクトのストレージクラスを S3 Standard-IA に移行します。
  • スポットインスタンスを使用し、Amazon SQS でメッセージを処理する Auto Scaling グループをキューの深さに基づいてスケールするように設定します。データ処理後、S3 オブジェクトのストレージクラスを S3 Glacier に移行します。
  • Amazon SNS を使用してジョブメッセージを配信し、Amazon CloudWatch アラームを使用してアイドル状態になったスポットインスタンスを終了します。データ処理後、S3 オブジェクトのストレージクラスを S3 Glacier に移行します。

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