AWS SOA 無料サンプル

AWS SOA·SOA-C02AWS公式ドキュメントの出典リンク付き・AI作成の問題演習

登録なしで解ける良問。「正解・解説を見る」で解説とひっかけが開きます。

※ サンプルは実際の例題です。各問の「正解・解説を見る」を開くと、正解・詳細解説・ひっかけが表示されます。 全 30 問のうち 30 問を無料公開しています。
Q1CloudWatchメトリクス(基本監視と詳細監視)難易度 標準無料

運用チームが、あるEC2インスタンス群の CPUUtilization について、障害検知までのラグを短縮するため1分間隔でメトリクスを収集したいと考えている。現在は追加設定なしのデフォルト状態で、5分間隔でしかメトリクスが記録されていない。追加のエージェント導入やアプリケーション改修を行わずにこれを実現する方法として最も適切なものを選べ。(単一選択)

  1. A対象インスタンスで詳細モニタリング(detailed monitoring)を有効化する。ハイパーバイザーレベルの標準メトリクスが5分間隔から1分間隔で収集されるようになる
  2. B全インスタンスにCloudWatch Agentをインストールし、設定ファイルで収集間隔を1分に設定する
  3. Cアプリケーションコード内でSDKの PutMetricData を呼び出し、1分ごとにCPU使用率を自前で計測・送信するよう改修する
  4. DCloudWatchダッシュボードのウィジェット側で表示間隔(period)を1分に変更する。データ収集自体は自動的に1分単位へ切り替わる
正解・解説・誤答理由・ひっかけを見る▼ open
✓ 正解:AAI作成・独立検証済

解説

EC2インスタンスのCloudWatchメトリクス(CPUUtilizationNetworkIn/OutDiskReadOps 等のハイパーバイザーレベルの指標)は、 デフォルトでは基本監視(basic monitoring)=5分間隔で収集され、追加料金は発生しない。

  • これを1分間隔の詳細監視(detailed monitoring)に切り替えるには、インスタンス起動時またはインスタンス設定変更で 「CloudWatch詳細モニタリングを有効化」するだけでよく、エージェント導入もアプリケーション改修も不要である。
  • 詳細監視は基本監視より追加費用がかかる(インスタンスごとの課金)が、実装コストは最小で障害検知のラグを大きく短縮できる。
  • 一方、メモリ使用率やディスク使用率のようなOS内部の指標は、詳細監視を有効にしても収集されない(別途CloudWatch Agentが必要)点は区別すること。
各誤答が違う理由
  • BCPUUtilization等の標準メトリクスはEC2側(ハイパーバイザー)が収集しており、Agentを追加導入しなくても詳細監視の有効化だけで1分間隔にできる。Agentが必要なのはメモリ/ディスク使用率など別種の指標。
  • C要件は「アプリケーション改修を行わない」であり、また標準メトリクスの収集間隔を変えるだけならカスタムメトリクスの自前計測は過剰な実装コストになる。
  • Dダッシュボード側のperiod設定は表示上の集計間隔にすぎず、実際にCloudWatchへ何分間隔でデータポイントが記録されるか(収集側の粒度)を変えるものではない。
ひっかけ: 「CloudWatch Agentを入れないと収集間隔は変えられない(B)」という誤解に注意。ハイパーバイザーレベルの標準メトリクス(CPU/ネットワーク/ディスクI/O等)は 詳細監視の有効化だけで1分間隔にできる。CloudWatch Agentが必要になるのはメモリ・ディスク使用率などOS内部の指標を取りたい場合である(後続の設問で扱う)。
AIが作成し、独立した検証を経た解説です(有資格者による監修は経ていません)
Q2CloudWatchカスタムメトリクス(PutMetricData・ディメンション)難易度 標準無料

運用チームが、自社のバッチ処理アプリケーションから「キュー内の未処理ジョブ件数」というアプリケーション固有の指標をCloudWatchへ送信し、環境(Environment=prod/stg)とキュー名(QueueName=orders/invoices)の両方で絞り込んで閲覧・アラーム設定できるようにしたい。この要件を満たす実装として最も適切なものを選べ。(単一選択)

  1. Aアプリケーションから PutMetricData を呼び出し、1つのメトリクスデータポイントに EnvironmentQueueName の2つのディメンションを付与して送信する
  2. B環境とキュー名の組み合わせごとに、QueueDepth-prod-orders のようにメトリクス名自体を分けて送信する
  3. CCloudWatch Logsへログとして未処理ジョブ件数を出力するだけにし、メトリクスとしては扱わない。アラームはLogs Insightsのクエリ結果を都度手動確認して判断する
  4. DAWS管理の標準メトリクス(AWS/SQS名前空間の ApproximateNumberOfMessagesVisible)をそのまま流用し、アプリケーション側からの送信は行わない
正解・解説・誤答理由・ひっかけを見る▼ open
✓ 正解:AAI作成・独立検証済

解説

AWSの標準サービスが提供しない独自の指標は、CloudWatchカスタムメトリクスとしてアプリケーション側から PutMetricData APIで送信する。

  • 1回の PutMetricData 呼び出しには、名前空間(Namespace)・メトリクス名(MetricName)・値(Value)に加えて、 ディメンション(Dimensions)をキー・バリューのペアとして複数付与できる(1メトリクスあたり最大30ディメンション)。
  • 本問のように環境とキュー名の両方で絞り込みたい場合は、EnvironmentQueueName という 2つのディメンションを同じメトリクスデータポイントに付与すればよい。CloudWatchコンソールでは、 ディメンションの組み合わせごとに個別の時系列として自動的に集計・表示され、アラームも特定のディメンションの組み合わせに対して設定できる。
  • デフォルトの解像度(標準解像度)は60秒単位で、より高頻度(1秒単位)が必要な場合は StorageResolution: 1 を指定した高解像度カスタムメトリクスにできる。
各誤答が違う理由
  • B組み合わせが増えるたびにメトリクス数が増殖しコスト・管理性が悪化する。ディメンションを使えば1つのメトリクス名のまま複数軸で絞り込める。
  • C手動確認では自動アラームによる即時検知ができず運用性が低い。数値指標として継続監視・アラーム設定したい要件にはメトリクスとして送信する方が適切。
  • D設問は自社アプリケーション独自のキュー実装を前提としており、SQSを使っているとは限らない。AWS標準メトリクスが存在しない独自指標にはカスタムメトリクスの送信が必要。
ひっかけ: 「メトリクス名を QueueDepth-prod-ordersのように連結して1つのメトリクスにする(B)」は一見動きそうだが、 組み合わせが増えるたびにメトリクス数が線形に増加しコスト・管理性が悪化し、CloudWatch側の柔軟な絞り込み(ディメンションでのフィルタ)が使えなくなる。 複数軸で絞り込みたい場合はディメンションを使うのが定石である。
AIが作成し、独立した検証を経た解説です(有資格者による監修は経ていません)
Q3CloudWatch名前空間(マルチアプリケーション設計)難易度 標準無料

同一AWSアカウント内で、社内向けに独立した3つのアプリケーション(注文管理・在庫管理・請求)がそれぞれ独自のカスタムメトリクスをCloudWatchへ送信している。運用チームは、CloudWatchコンソールでメトリクスを一覧表示する際にアプリケーションごとに明確に分離して見たい。最も適切な設計を選べ。(単一選択)

  1. A3つのアプリケーションそれぞれに専用の名前空間(例:MyCompany/OrderServiceMyCompany/InventoryServiceMyCompany/BillingService)を割り当てて送信する
  2. B3つのアプリケーション共通の単一の名前空間 MyCompany/AllApps を使い、Application ディメンションで区別する
  3. CAWSの標準名前空間 AWS/CloudWatch の配下にカスタムメトリクスとして送信し、AWSの標準メトリクスと統合して管理する
  4. D名前空間の代わりにCloudWatchダッシュボードを3つ作成し、ダッシュボードの分離だけでメトリクスの分離を代替する
正解・解説・誤答理由・ひっかけを見る▼ open
✓ 正解:AAI作成・独立検証済

解説

CloudWatchの名前空間(Namespace)は、メトリクスを分離するための最上位のコンテナである。 AWSの各サービスは AWS/EC2AWS/RDS のように固有の名前空間を使っており、 カスタムメトリクスでは AWS/ で始まらない任意の名前空間を自分で定義できる (例:MyCompany/OrderServiceMyCompany/InventoryService)。

  • 名前空間をアプリケーション単位で分けることで、CloudWatchコンソールのメトリクス一覧・ダッシュボード・アラームの検索性が大きく向上し、 誤って他アプリのメトリクスと混同するリスクも避けられる。
  • ディメンションはあくまで同一名前空間内でのメトリクスの絞り込み軸であり、名前空間そのものの代替にはならない。 アプリケーションという大きな括りの分離には名前空間、環境やインスタンスIDのような細かい絞り込みにはディメンション、という役割分担が基本設計になる。
各誤答が違う理由
  • B動作はするが、アプリケーション間でメトリクス名が偶然重複した際に混線するリスクがあり、コンソールでの一覧性・分離もアプリケーション単位の名前空間より劣る。
  • CAWS/で始まる名前空間はAWSサービスが予約しており、カスタムメトリクスに使うべきではない(規約上非推奨であり運用の混乱も招く)。
  • Dダッシュボードは可視化の器にすぎずメトリクスの実体を分離しない。名前空間が同一のままではコンソールのメトリクス一覧・検索・アラーム設定時の分離ができていない。
ひっかけ: 「1つの名前空間にまとめてディメンションで Application=order/inventory/billing と区別すれば十分(B)」という発想も動作はするが、 アプリケーション間でメトリクス名が偶然重複した場合に混線するリスクがあり、コンソールの一覧性も悪化する。 独立性の高いアプリケーション単位の分離には名前空間を分けるのがベストプラクティスである。
公式ドキュメント・関連Amazon CloudWatch User Guide ― Namespaces
AIが作成し、独立した検証を経た解説です(有資格者による監修は経ていません)
Q4CloudWatchカスタムメトリクス(ディメンション設計のベストプラクティス)難易度 標準無料

あるチームが、Webアプリのレスポンスタイムをカスタムメトリクスとして送信する際、リクエストごとに一意なリクエストIDをディメンションとして付与する設計を検討している。この設計の問題点として正しいものを2つ選べ

  1. Aユニークなメトリクス(名前空間+メトリクス名+ディメンション組み合わせ)の数が際限なく増え、カスタムメトリクスの課金コストが想定外に膨らむ
  2. BCloudWatchはディメンション値の一意性を検証し、リクエストIDのような一意値をディメンションに指定すると PutMetricData がAPIエラーで拒否される
  3. C1つ1つのリクエストIDが個別の時系列になってしまい、エンドポイント単位・環境単位のような意味のある集約でレスポンスタイムの傾向を見られなくなる
  4. Dディメンション名に RequestId という単語を使うこと自体がAWSの予約語と衝突し、メトリクスが正しく記録されない
正解・解説・誤答理由・ひっかけを見る▼ open
✓ 正解:AAI作成・独立検証済

解説

CloudWatchのディメンションは値の組み合わせごとに個別の時系列(メトリクスストリーム)を作る。 一意性の高い値(リクエストID、セッションIDなど)をディメンションに使うと、組み合わせ数(カーディナリティ)が実質無限に近い形で増殖する。

  • コスト:カスタムメトリクスは一意なメトリクス(名前空間+メトリクス名+ディメンションの組み合わせ)の数に応じて課金される。 高カーディナリティなディメンションはこのユニークメトリクス数を爆発的に増やし、想定外の高額請求につながる。
  • 集計・可視化の劣化:本来見たいのは「エンドポイントごと」「環境ごと」など意味のある集約軸での傾向であり、 リクエストIDのような一意値でディメンションを切ると、1つ1つが個別の系列になってしまい、ダッシュボードやアラームで有用な集計(平均・パーセンタイル等)ができなくなる。
  • 推奨される設計は、エンドポイント名・HTTPメソッド・環境名のような低〜中カーディナリティで意味のある軸をディメンションに選び、 リクエストID等の一意な識別子はCloudWatch Logsの構造化ログ側に残す、という役割分担である。
各誤答が違う理由
  • BCloudWatch側は値の一意性を理由にAPI呼び出し自体を拒否しない(技術的には送信できてしまう)。問題はコストと可視化面での実害であり、API拒否のようなハードエラーではない。
  • DRequestId は予約語ではなく、ディメンション名として自由に使える。問題はディメンション名の文字列自体ではなく、その値のカーディナリティの高さである。
ひっかけ: 「ディメンションは多いほど詳細に分析できる(誤り)」という直感に注意。ディメンションのカーディナリティ設計はコストと可視化の質に直結する。 一意な識別子はログに残し、メトリクスのディメンションには集約に意味のある軸だけを選ぶのが鉄則。
AIが作成し、独立した検証を経た解説です(有資格者による監修は経ていません)
Q5CloudWatch Agent(メモリ・ディスク使用率の取得)難易度 標準無料

運用チームが、EC2インスタンス(Linux)のメモリ使用率(%)ルートボリュームのディスク使用率(%)についてCloudWatchアラームを設定しようとしたが、CloudWatchコンソールのメトリクス一覧にはCPU使用率やネットワークのメトリクスしか表示されず、メモリ・ディスク使用率のメトリクスが見つからない。この状況の原因と対処として最も適切なものを選べ。(単一選択)

  1. Aメモリ使用率・ディスク使用率はゲストOS内部の指標でありハイパーバイザーからは収集できないため標準メトリクスには存在しない。CloudWatch Agentをインストールし、設定ファイルで mem_used_percentdisk_used_percent を収集対象に指定する
  2. B対象インスタンスの詳細監視(detailed monitoring)を有効化すれば、収集される指標の種類が増えメモリ・ディスク使用率も自動的に取得されるようになる
  3. CAWS Systems Manager Inventoryを有効化すれば、インスタンスのメモリ・ディスク使用率がCloudWatchメトリクスとして自動送信されるようになる
  4. DIAMロールに CloudWatchFullAccess をアタッチするだけで、追加のエージェント導入なしにメモリ・ディスクメトリクスが収集されるようになる
正解・解説・誤答理由・ひっかけを見る▼ open
✓ 正解:AAI作成・独立検証済

解説

EC2の標準メトリクス(基本監視・詳細監視いずれも)はハイパーバイザーが観測できる範囲(CPU使用率、ネットワークI/O、EBSディスクI/Oなど)に限られる。 メモリ使用率やOSファイルシステム単位のディスク使用率は、ゲストOS内部の状態であり、ハイパーバイザーからは見えないため 標準では収集されない

  • これらの指標を取得するには、インスタンス内にCloudWatch Agent(統合エージェント)をインストールし、 設定ファイルで mem_used_percentdisk_used_percent 等のメトリクスを収集対象として指定する必要がある。
  • CloudWatch Agentが収集したメトリクスは、デフォルトでは CWAgent(設定変更可)という名前空間にカスタムメトリクスとして送信され、 通常のカスタムメトリクスと同様にアラーム・ダッシュボードで利用できる。
  • エージェントの実行にはインスタンスにIAMロール(CloudWatchAgentServerPolicy 等)をアタッチする必要がある(別設問で扱う)。
各誤答が違う理由
  • B詳細監視は標準メトリクスの収集間隔を5分→1分にする機能であり、収集できる指標の種類(メモリ・ディスク等)は増えない。
  • CSystems Manager InventoryはOSやアプリケーションの構成情報(インストール済みソフトウェア等)を収集する機能であり、メモリ・ディスク使用率のようなパフォーマンスメトリクスをCloudWatchへ送信する機能ではない。
  • DIAMロールは権限の付与にすぎず、メトリクスを収集して送信するエージェント(プロセス)自体が動いていなければメモリ・ディスクの値はそもそも生成されない。
ひっかけ: 「詳細監視を有効にすればメモリ・ディスクも取れる(B)」という混同が頻出。詳細監視は収集“間隔”を1分に短縮する機能であり、 収集できる“指標の種類”を増やすものではない。ゲストOS内部の指標にはCloudWatch Agentが必須である。
AIが作成し、独立した検証を経た解説です(有資格者による監修は経ていません)
Q6CloudWatch Agent(IAMロール要件)難易度 標準無料

EC2インスタンスにCloudWatch Agentをインストールしたが、エージェントのログに AccessDenied エラーが出力され、メトリクスがCloudWatchに送信されない。このインスタンスにはIAMロールがアタッチされていなかった。この問題を解消するために必要な対応として最も適切なものを選べ。(単一選択)

  1. ACloudWatchAgentServerPolicy をアタッチしたIAMロールを作成し、対象EC2インスタンスにインスタンスプロファイルとして割り当てる
  2. BIAMユーザーを新規作成してアクセスキーIDとシークレットアクセスキーを発行し、CloudWatch Agentの設定ファイルに直接埋め込む
  3. Cエージェントが使うポート(デフォルトのStatsDポート等)をセキュリティグループのインバウンドルールで開放する
  4. DインスタンスをリブートしてCloudWatch Agentのプロセスを再起動する
正解・解説・誤答理由・ひっかけを見る▼ open
✓ 正解:AAI作成・独立検証済

解説

CloudWatch Agentは、収集したメトリクス・ログをCloudWatchへ送信する際、あるいは設定をSSM Parameter Storeから取得する際に、 インスタンスにアタッチされたIAMロールの認証情報を使ってAWS APIを呼び出す。IAMロールが無ければ、 cloudwatch:PutMetricDatalogs:PutLogEvents 等の呼び出しがすべてAccessDeniedになる。

  • 最小限の対応は、AWS管理ポリシー CloudWatchAgentServerPolicy(メトリクス・ログの送信や、SSMパラメータ・EC2タグの読み取りを許可) をアタッチしたIAMロールを作成し、対象インスタンスに割り当てることである。
  • 加えて、エージェント設定をSSM Parameter Store経由で一元管理・配布したい場合は CloudWatchAgentAdminPolicy(設定の書き込み権限を含む)を 設定側の管理者に付与する(エージェントを実行するだけのインスタンス側には不要)。
  • IAMユーザーのアクセスキーをインスタンス内に埋め込む方式は、長期認証情報の漏えいリスクがあるためベストプラクティスに反する。
各誤答が違う理由
  • B長期のアクセスキーをインスタンス内に保存することになり漏えいリスクが高い。EC2にはIAMロール(インスタンスプロファイル)を使うのがベストプラクティス。
  • Cエラーの原因はAWS APIへの認証・認可(IAM)の欠如であり、ネットワークのポート開放とは無関係。CloudWatchへの送信はHTTPSアウトバウンドで行われる。
  • DIAMロールが無い状態のままリブートしても、権限不足自体は解消されずAccessDeniedが再発する。
ひっかけ: 「IAMユーザーを作成してアクセスキーをエージェントの設定ファイルに直接記載する」という発想はEC2運用における典型的なアンチパターン。 EC2にはIAMロール(インスタンスプロファイル)を使うのが定石であり、長期キーの埋め込みは避ける。
AIが作成し、独立した検証を経た解説です(有資格者による監修は経ていません)
Q7CloudWatch Agent(設定のSSM Parameter Store配布)難易度 標準無料

Auto Scalingグループで管理される数十台規模のEC2インスタンス(同一のCloudWatch Agent設定を使う)に対し、エージェント設定ファイルを一元管理し、新規起動インスタンスにも自動的に同じ設定を適用したい。個々のインスタンスに設定ファイルを手動コピーする運用は避けたい。最も適切な設計を選べ。(単一選択)

  1. ACloudWatch Agentの設定JSONをSystems Manager Parameter Storeへ保存し、起動時のユーザーデータで amazon-cloudwatch-agent-ctl -a fetch-config -c ssm:<parameter-name> のように参照させる
  2. B設定ファイルをあらかじめ書き込んだ状態でAMIを作成し、Auto Scalingグループの起動テンプレートで常にそのAMIを参照する
  3. C各インスタンスにSSHで個別ログインし、設定ファイルを手動でコピー・配置してエージェントを再起動する
  4. DCloudFormationのスタック更新のたびにUserDataスクリプト内へ設定JSONの全文をハードコーディングし、スタック更新で反映する
正解・解説・誤答理由・ひっかけを見る▼ open
✓ 正解:AAI作成・独立検証済

解説

CloudWatch Agentは、設定ウィザード(amazon-cloudwatch-agent-config-wizard)で生成したJSON設定を、 Systems Manager Parameter Storeにパラメータとして保存し、各インスタンスは起動時に amazon-cloudwatch-agent-ctl-c ssm:<parameter-name> オプションでその設定を取得・適用する運用に対応している。

  • この方式であれば、設定を1箇所(Parameter Store)で更新するだけで、以後起動するインスタンス(Auto Scaling起動時など)は 起動スクリプト(ユーザーデータ)経由でSSMパラメータを参照し常に最新の設定を取得できる。
  • 設定変更時も、Parameter Store側を更新して既存インスタンス群にエージェント再起動(設定の再取得)をSSM Run Command等で一括実行すれば足り、 個々のインスタンスへ手動でファイルをコピーする必要がない。
  • 設定をParameter Storeへ書き込む側(管理者・CI/CDパイプライン)には CloudWatchAgentAdminPolicy が必要(前問の CloudWatchAgentServerPolicy は実行側インスタンスに付与するロール)。
各誤答が違う理由
  • B動作はするが、設定変更のたびにAMI再作成・起動テンプレート更新が必要になり、一元管理・即時反映という要件に対しては運用コストが高い。
  • C要件で明示的に避けたいとされている「手動コピー」の運用そのもの。数十台規模・新規起動インスタンスへの自動適用には向かない。
  • D設定変更のたびにスタック更新(インスタンスの置き換え等)を伴う重い手順になり、Parameter Store経由の軽量な一元管理に比べ運用性が劣る。
ひっかけ: 「AMIに設定ファイルを焼き込む(B)」でも動きはするが、設定変更のたびにAMIを作り直してAuto Scalingの起動テンプレートを更新する運用になり、 設定の一元管理・即時反映という点でSSM Parameter Store方式より運用コストが高い。
AIが作成し、独立した検証を経た解説です(有資格者による監修は経ていません)
Q8CloudWatch Agent(追加取得できるメトリクスの区別)難易度 標準無料

次のメトリクスのうち、CloudWatch Agentを導入して初めて取得可能になるもの(追加の設定なしにEC2標準メトリクスとしては取得できないもの)を2つ選べ

  1. Aメモリ使用率(mem_used_percent
  2. BCPU使用率(CPUUtilization
  3. Cルートボリュームのファイルシステム使用率(disk_used_percent
  4. Dネットワーク受信バイト数(NetworkIn
正解・解説・誤答理由・ひっかけを見る▼ open
✓ 正解:AAI作成・独立検証済

解説

EC2標準メトリクス(AWS/EC2名前空間)はハイパーバイザーが観測できる範囲に限られ、CPUUtilizationNetworkIn/NetworkOut、EBSの DiskReadOps/DiskWriteOps はこれだけで取得できる。

  • メモリ使用率(mem_used_percentファイルシステム単位のディスク使用率(disk_used_percentは、 ゲストOS内部でしか把握できない指標であり、CloudWatch Agentの導入が必須である。
  • CPU使用率・ネットワークI/Oは標準メトリクスに含まれ、Agent導入は不要(基本/詳細監視の範囲)。
各誤答が違う理由
  • Bハイパーバイザーが計測できる標準メトリクスであり、基本監視・詳細監視のいずれでもCloudWatch Agentなしに取得できる。
  • Dハイパーバイザー側で観測できる標準メトリクスであり、CloudWatch Agentを追加導入しなくても取得できる。
ひっかけ: 「ネットワーク使用率もOS内部の値だからAgentが要る」と誤解しがちだが、ネットワークI/Oはハイパーバイザー側で計測可能であり標準メトリクスに含まれる。 「OSプロセス/ファイルシステムの内部状態か、ハイパーバイザーから見える外形的な指標か」が判断基準になる。
AIが作成し、独立した検証を経た解説です(有資格者による監修は経ていません)
Q9CloudWatch Agent(procstatプラグインによるプロセス監視)難易度 標準無料

本番のLinuxサーバーで稼働する特定のJavaアプリケーションプロセス(myapp.jar)について、そのプロセス固有のCPU使用率・メモリ常駐サイズ・実行中スレッド数をCloudWatchメトリクスとして監視し、プロセスが異常終了した場合にはアラームで検知したい。この要件を満たすCloudWatch Agentの設定として最も適切なものを選べ。(単一選択)

  1. ACloudWatch Agentの設定ファイルで procstatプラグインを有効化し、プロセスパターンとして myapp.jar を指定してCPU使用率・メモリ・スレッド数を収集項目に含める
  2. BEC2標準メトリクスの CPUUtilization を監視すれば、インスタンス上の任意のプロセス単位のCPU使用率も自動的に内訳表示される
  3. CAWS X-Rayを有効化し、分散トレーシングのセグメントデータからプロセスのCPU・メモリ使用量を取得する
  4. DAWS ConfigでLinuxプロセスの起動・終了イベントを記録し、そのイベントからCPU・メモリの推移を推定する
正解・解説・誤答理由・ひっかけを見る▼ open
✓ 正解:AAI作成・独立検証済

解説

CloudWatch Agentには、procstatプラグインがあり、プロセス名(pattern)・PIDファイル・ systemdユニット名などを指定して、特定のプロセスに限定したCPU使用率・メモリ使用量・スレッド数・ファイルディスクリプタ数 などをメトリクスとして収集できる。

  • 設定ファイルの metrics.metrics_collected.procstat セクションに対象プロセスの識別方法とメトリクス項目を指定する。
  • プロセスが停止・クラッシュした場合、procstatのメトリクス自体が送信されなくなる(データ欠落)ため、 アラームの欠落データの扱い(treatMissingData)を breaching に設定しておけば、 プロセス停止=メトリクス途絶をアラームの発報条件として扱える(別設問で詳述)。
  • これに対しEC2標準メトリクスは、インスタンス全体のCPU・ネットワーク等は分かってもプロセス単位の内訳は分からない。
各誤答が違う理由
  • BCPUUtilizationはインスタンス全体の値であり、プロセスごとの内訳を提供しない。プロセス単位の指標にはprocstatプラグインが必要。
  • CX-Rayはリクエスト単位の分散トレーシング(レイテンシ・呼び出し関係の可視化)が主目的であり、OSプロセスのCPU/メモリのようなシステムメトリクスの収集機能ではない。
  • DAWS ConfigはAWSリソースの構成変更履歴を記録するサービスであり、OS内のプロセスのリソース使用量メトリクスは扱わない。
ひっかけ: 「EC2標準メトリクスのCPU使用率で代用できる(B)」は誤り。標準メトリクスはインスタンス全体の値であり、 特定プロセスだけのCPU/メモリ/スレッド数を切り出すことはできない。プロセス単位の内訳が要件ならCloudWatch Agentのprocstatが必要。
AIが作成し、独立した検証を経た解説です(有資格者による監修は経ていません)
Q10CloudWatch Agent(StatsD/collectdによるアプリケーションメトリクス収集)難易度 標準無料

開発チームのアプリケーションは既にStatsDプロトコルでメトリクスを出力するようライブラリが組み込まれている。追加のAPI呼び出しコードを書かずに、この既存の実装のままアプリケーション固有のカスタムメトリクス(例:APIエンドポイントごとの処理時間)をCloudWatchへ集約したい。最も適切な方法を選べ。(単一選択)

  1. ACloudWatch Agentの設定でStatsDリスナー(デフォルトUDP 8125)を有効化し、既存アプリケーションがそのポートへ送信するStatsDメトリクスをCloudWatchカスタムメトリクスへ変換・転送させる
  2. Bアプリケーションコードを改修し、AWS SDKの PutMetricData を直接呼び出す実装に書き換える
  3. CAmazon Kinesis Data Streamsを間に挟み、StatsDのUDPパケットをストリームへ転送してからLambdaでCloudWatchへ変換する
  4. DStatsDはCloudWatchと互換性がないため、アプリケーションのメトリクス出力ライブラリ自体をAmazon CloudWatch専用SDKへ全面的に置き換える必要がある
正解・解説・誤答理由・ひっかけを見る▼ open
✓ 正解:AAI作成・独立検証済

解説

CloudWatch Agentは、StatsDプロトコル(デフォルトUDPポート8125)collectdを使ったメトリクス受信に対応しており、 アプリケーション側の実装をPutMetricData の直接呼び出しに書き換えなくても、 既存のStatsDクライアントからの送信をCloudWatch Agentが受け取り、CloudWatchカスタムメトリクスへ変換して転送できる。

  • CloudWatch Agentの設定ファイルの metrics.metrics_collected.statsd セクションで、待受ポートや集計間隔(metrics_collection_interval)を指定するだけでよい。
  • アプリケーションは引き続きローカルのStatsDエンドポイントへメトリクスを送るだけで済み、AWS SDKやAPI呼び出しコードの追加実装が不要になる。
  • これにより、オンプレミス時代からある監視スタック(Graphite/StatsD等)の資産を活かしつつ、宛先をCloudWatchへ集約する移行がしやすくなる。
各誤答が違う理由
  • B要件は「追加のAPI呼び出しコードを書かない」ことであり、この方法は既存実装の書き換えを伴うため要件に反する。
  • C実現不可能ではないが、CloudWatch AgentのStatsD受信機能がまさにこの用途向けに標準提供されており、Kinesis+Lambdaを自前で組むのは過剰な実装コストになる。
  • D事実に反する。CloudWatch AgentはStatsDプロトコルをネイティブにサポートしており、アプリケーション側の置き換えは不要。
ひっかけ: 「アプリケーションコードを PutMetricData 呼び出しに書き換える(B)」も技術的には可能だが、要件は「追加のAPI呼び出しコードを書かない」CloudWatch AgentのStatsD受信機能を使えば既存実装のまま集約できる点が本問の要点。
AIが作成し、独立した検証を経た解説です(有資格者による監修は経ていません)
Q11アラーム(複合アラーム・AlarmRule構文)難易度 高無料

運用チームは、次の2つの子アラームが両方ともALARM状態になった場合にのみ通知を送りたい(どちらか一方だけがALARM状態でも通知しない)。

  • HighCPUAlarm:CPU使用率が閾値を超えている
  • HighLatencyAlarm:アプリケーションのレイテンシが閾値を超えている

この要件を満たす複合アラーム(Composite Alarm)のAlarmRuleとして最も適切なものを選べ。(単一選択)

  1. AALARM(HighCPUAlarm) AND ALARM(HighLatencyAlarm)
  2. BALARM(HighCPUAlarm) OR ALARM(HighLatencyAlarm)
  3. CHighCPUAlarm AND HighLatencyAlarm
  4. DNOT ALARM(HighCPUAlarm) AND NOT ALARM(HighLatencyAlarm)
正解・解説・誤答理由・ひっかけを見る▼ open
✓ 正解:AAI作成・独立検証済

解説

複合アラームは、複数の子アラーム(メトリクスアラーム、または他の複合アラーム)の状態を ALARM()OK()INSUFFICIENT_DATA() 関数と論理演算子(ANDORNOT)で 組み合わせたAlarmRuleという式で評価する。

  • 「両方ともALARM状態のときだけ発報」はAND条件で表現する: ALARM(HighCPUAlarm) AND ALARM(HighLatencyAlarm)
  • 複合アラームを使う目的は、相関する複数の子アラームをまとめて評価し、単独の一時的なスパイクだけでは発報させない(アラート疲れの軽減)こと。 本問のように「CPUだけ高い」「レイテンシだけ高い」は個別の一過性ノイズの可能性があるが、両方同時に閾値超過している場合は本当に深刻な障害である可能性が高い、という運用判断を式に落とし込める。
  • 逆に「どちらか一方でも」という要件であれば OR を使う。
各誤答が違う理由
  • BORは「どちらか一方でもALARM状態なら発報」という条件になり、「両方ともALARM状態のときだけ」という要件より広い範囲で発報してしまう。
  • CAlarmRuleではアラーム名を直接記述せず、ALARM()/OK()/INSUFFICIENT_DATA()のような状態関数でラップする必要がある。この構文は無効。
  • Dこの式は「両方ともALARM状態でない」場合に真になる複合アラームであり、要件(両方ともALARM状態の時に発報)とは逆の条件になっている。
ひっかけ: ORANDの取り違えが最頻出のひっかけ。「両方とも」=AND、「どちらか」=ORという 日本語表現と論理演算子の対応を機械的に読み違えないこと。また関数名は ALARM() であり、アラーム名を直接ブール値のように書く記法(C)は正しい構文ではない。 一方、D(NOT ALARM(...) AND NOT ALARM(...))はALARM()関数を正しくラップした構文としては有効な式であり、 問題があるのはあくまで意味論(要件と逆の条件になっている)である点をCと混同しないこと。
AIが作成し、独立した検証を経た解説です(有資格者による監修は経ていません)
Q12アラーム(複合アラームのメリット)難易度 標準無料

マイクロサービス環境で個々のメトリクスアラームを大量に設定した結果、深夜に単発の一時的スパイクだけで頻繁に通知が飛び、オンコール担当者の「アラート疲れ」が問題になっている。複合アラーム(Composite Alarm)を導入することで得られる正しいメリットを2つ選べ

  1. A複数の子アラームをAND等で束ねることで、単独の一時的なスパイクだけでは発報せず、複数の兆候が重なった深刻な状況に絞って通知でき、アラート疲れを軽減できる
  2. B複合アラームを設定するだけで、子となる個々のメトリクスアラームのメトリクス収集頻度(period)が自動的に間引かれ、CloudWatchの利用コストが下がる
  3. C「メンテナンス中フラグのアラームがOKの間だけ個々のアラーム通知を有効にする」といった、アラーム同士の依存関係・条件付き抑制を式としてモデル化できる
  4. D複合アラームを使うと、子アラームで発生したメトリクスの異常値そのものが自動的に補正・平滑化され、より正確な数値としてダッシュボードに表示される
正解・解説・誤答理由・ひっかけを見る▼ open
✓ 正解:AAI作成・独立検証済

解説

複合アラームは複数の子アラームの状態を論理式で束ねて、より意味のある単位で通知を発生させる仕組みである。

  • アラート疲れの軽減:単独では一時的なノイズになりがちな複数の子アラームをANDで束ねることで、 「複数の兆候が同時に発生した本当に深刻な状況」の時だけ通知するよう絞り込め、通知の総量を減らせる。
  • アラームの依存関係・階層のモデリング:例えば「あるサービスがメンテナンス中を示すアラームがOKの間だけ、 個々のメトリクスアラームの通知を有効にする」といった親子関係・条件付き抑制を式として表現できる。

一方、複合アラーム自体が個々のメトリクスの評価間隔(period)を変えたり、メトリクス収集コストを直接削減したりするものではない点は区別すること。

各誤答が違う理由
  • B複合アラームは子アラームの評価結果を論理式で束ねるだけで、各子アラームのメトリクス収集自体(頻度・コスト)には影響しない。
  • D複合アラームはアラーム状態(ALARM/OK/INSUFFICIENT_DATA)の論理演算であり、メトリクスの数値そのものを補正・平滑化する機能ではない。
ひっかけ: 「複合アラームを使うと子アラームのメトリクス収集コストや評価頻度が下がる(誤答)」という誤解に注意。 複合アラームが解決するのは「通知の粒度・タイミング」であり、子アラームそれぞれのメトリクス評価自体は従来どおり行われる
AIが作成し、独立した検証を経た解説です(有資格者による監修は経ていません)
Q13アラーム(異常検知:CloudWatch Anomaly Detection)難易度 高無料

あるWebサービスのリクエスト数は、平日昼間は高く深夜・週末は低いという明確な季節性(曜日・時間帯による周期パターン)を持つ。運用チームは、この周期パターンを踏まえたうえで「通常のパターンから統計的に逸脱した」場合にだけアラームを発報したい。固定のしきい値を曜日・時間帯ごとに手動でいくつも設定する運用は避けたい。最も適切な設計を選べ。(単一選択)

  1. A対象メトリクスに対してCloudWatch異常検知(Anomaly Detection)を有効化し、機械学習モデルが履歴データの周期パターンから算出した正常範囲(バンド)を、実測値が指定した標準偏差の幅を超えて外れた場合にアラームさせる
  2. Bメトリクス数式(Metric Math)で直近1時間のリクエスト数の90パーセンタイルを計算し、その値を固定しきい値として単純なメトリクスアラームを作成する
  3. C曜日・時間帯の組み合わせごとに個別のメトリクスアラームを手動で多数作成し、それぞれに適切な固定しきい値を設定する
  4. DAmazon Lookout for Metricsを使わず、CloudWatch Logs Insightsのクエリ結果を毎日目視で確認して異常を判断する
正解・解説・誤答理由・ひっかけを見る▼ open
✓ 正解:AAI作成・独立検証済

解説

CloudWatchの異常検知(Anomaly Detection)は、対象メトリクスの過去の履歴データに機械学習モデルを適用し、 曜日・時間帯による周期性を織り込んだ「予測される正常範囲(バンド)」を自動的に算出する機能である。

  • 異常検知を有効にすると、CloudWatchは対象メトリクスに対して上限・下限の帯(バンド)を表す特殊なメトリクス (ANOMALY_DETECTION_BAND関数の結果)を生成する。
  • 異常検知アラームは、実測値がこのバンドから指定した標準偏差の係数(例:2)を超えて外れた場合にALARM状態になる。 固定の単一しきい値では「平日昼は正常でも深夜なら異常」といった時間帯依存の判定ができないが、異常検知はこれを自動的に扱える。
  • これにより、曜日・時間帯ごとに手動でしきい値を作り込む運用を避けつつ、季節性のあるメトリクスに対して精度の高い異常検知ができる。
各誤答が違う理由
  • Bパーセンタイル計算はある時点でのばらつきの指標にすぎず、曜日・時間帯による周期パターンをモデル化する機能ではない。固定しきい値である点も変わらず要件を満たさない。
  • C要件で明示的に避けたいとされている「曜日・時間帯ごとに手動でしきい値を設定する」運用そのもの。管理コストが高く陳腐化もしやすい。
  • D目視確認では自動アラームによる即時検知ができず、24時間体制の運用監視としては非効率かつ属人的である。
ひっかけ: 「メトリクス数式(Metric Math)でパーセンタイルを計算すればよい(B)」という発想は、周期性そのものをモデル化する機能ではなく、 単一時点のばらつきを見る計算にすぎない。周期パターンを踏まえた「動的なしきい値」が必要な場面ではAnomaly Detectionが正解という判断軸を押さえる。
AIが作成し、独立した検証を経た解説です(有資格者による監修は経ていません)
Q14アラーム(異常検知の特徴・静的しきい値との違い)難易度 標準無料

CloudWatchの異常検知アラーム(Anomaly Detection Alarm)に関する正しい記述を2つ選べ

  1. A異常検知モデルは履歴データから継続的に学習を更新するため、メトリクスの緩やかなトレンド変化があれば正常範囲(バンド)も時間とともに追従して変化する
  2. B異常検知アラームを一度設定すれば、以後は静的しきい値アラームを一切使う必要がなくなり、あらゆる監視ユースケースで異常検知に置き換えるべきである
  3. C異常検知アラームは、実測値が予測されたバンドから指定した標準偏差の幅を超えて逸脱した場合にALARM状態になる
  4. D異常検知はメトリクスが作成された直後から、履歴データの蓄積を待たずに最初から高い精度でバンドを算出できる
正解・解説・誤答理由・ひっかけを見る▼ open
✓ 正解:AAI作成・独立検証済

解説

異常検知アラームは静的しきい値アラームと同じメトリクスアラームの一種だが、しきい値の決め方が根本的に異なる。

  • 異常検知モデルは継続的に学習を更新する。メトリクスの傾向(トラフィックの緩やかな増加トレンド等)が変化すれば、 時間とともに正常範囲(バンド)も追従して変化していく。
  • アラームの発報条件は「予測バンドから指定した標準偏差の幅を超えて逸脱したか」で判定され、 固定の絶対値しきい値を運用者があらかじめ決め打ちする必要がない。
  • 一方、異常検知は十分な履歴データ(一般的に数日〜2週間程度の学習期間)が無いと精度が安定しないため、 新規に作られたばかりのメトリクスにいきなり適用しても最初は誤判定が出やすい。また、静的しきい値アラームを完全に置き換える万能の仕組みでもなく、 明確な絶対的な安全限界(例:ディスク使用率100%目前)を守りたい場面では静的しきい値の方が適する場合もある。
各誤答が違う理由
  • B極端な理解。履歴データが少ない新規メトリクスでは精度が安定せず、絶対的な安全限界(ディスク枯渇直前など)の監視には静的しきい値の方が適する場面もある。
  • D事実に反する。異常検知モデルは一定期間の履歴データを学習に使う必要があり、作成直後は精度が不安定になりやすい。
ひっかけ: 「異常検知アラームを使えば静的しきい値アラームは一切不要になる(誤答)」という極端な理解に注意。 用途によって使い分けるべきであり、履歴データが少ない新規メトリクスや絶対的な安全限界の監視には静的しきい値も依然有効
AIが作成し、独立した検証を経た解説です(有資格者による監修は経ていません)
Q15アラーム(欠落データの扱い:treatMissingData)難易度 高無料

セキュリティ監視の一環として、あるエージェントプロセスが5分ごとにハートビートとしてカスタムメトリクス AgentHeartbeat(値は常に1)を送信している。運用チームは「このメトリクスのデータポイントが一定時間途絶えた=エージェントが停止または改ざんされた可能性がある」とみなし、データが欠落した場合には必ずアラーム状態にしたい。この要件を満たすアラーム設定として最も適切なものを選べ。(単一選択)

  1. Aアラームの treatMissingDatanotBreaching に設定する
  2. Bアラームの treatMissingData をデフォルトの missing のままにしておく
  3. Cアラームの treatMissingDatabreaching に設定し、欠落したデータポイントをしきい値超過(異常)として扱う
  4. Dアラームの treatMissingDataignore に設定し、データが欠落した評価期間については現在のアラーム状態を維持させる
正解・解説・誤答理由・ひっかけを見る▼ open
✓ 正解:CAI作成・独立検証済

解説

CloudWatchアラームには、評価期間内にデータポイントが届かなかった場合の扱いを制御する treatMissingData パラメータがあり、次の4種類から選べる。

  • missing(デフォルト):欠落したデータポイントは評価に含めず、アラームの状態遷移の判断材料にしない。
  • notBreaching:欠落したデータポイントを「しきい値を超えていない(正常)」とみなす。
  • breaching:欠落したデータポイントを「しきい値を超えている(異常)」とみなす。
  • ignore:欠落があった評価期間については現在のアラーム状態を維持し、状態を変化させない。

本問のような「メトリクスが送られてくること自体が正常性の証(ハートビート)」というユースケースでは、 データの欠落こそが最も検知したい異常であるため、treatMissingDatabreaching に設定する。 これにより、ハートビートが止まった瞬間に(欠落したデータポイントがしきい値超過とみなされ)アラームがALARM状態に遷移する。

各誤答が違う理由
  • A欠落データを「正常」とみなす設定であり、エージェント停止時にもアラームがALARM状態にならない。本問の要件(欠落=異常として検知)と正反対の挙動になる。
  • Bデフォルトでは欠落データポイントは評価対象から除外されるだけで、アラーム状態の遷移トリガーにはならない。ハートビート途絶を検知できず要件を満たさない。
  • D直前がOK状態のままエージェントが停止した場合、ignoreではOK状態が維持され続けてしまい、停止をALARMとして検知できない。
ひっかけ: デフォルトの missing のまま放置すると、エージェントが完全に停止してメトリクスが届かなくなっても アラームはALARM状態に遷移せず「検知漏れ」になるのが本問最大の罠。セキュリティ監視・死活監視のような 「データが来ないこと自体が異常」なユースケースでは breaching を選ぶ判断が問われる。
AIが作成し、独立した検証を経た解説です(有資格者による監修は経ていません)
Q16アラーム(データポイント数「M out of N」によるノイズ抑制)難易度 高無料

あるアラームは「1分間隔で評価し、直近1回のデータポイントがしきい値を超えたら即ALARM」という設定になっているが、ネットワークの瞬間的な揺らぎで単発スパイクが発生するたびに誤発報(false positive)が多発している。実際に障害として扱いたいのは「継続的にしきい値を超え続けている状態」のみである。オンコール対応の負荷を減らすための最も適切な変更を選べ。(単一選択)

  1. Aアラームのしきい値を現在より大幅に高い値へ引き上げ、多少のスパイクでは超えないようにする
  2. B評価期間(Evaluation Periods)を5、データポイント数(Datapoints to Alarm)を3に設定し、「直近5回の評価のうち3回以上しきい値を超えた場合」にALARMへ遷移するよう変更する
  3. Cアラームのアクション設定でSNS通知先を減らし、通知を受け取るオンコール担当者の人数を減らして負荷を分散させる
  4. Dアラームの比較演算子を GreaterThanThreshold から GreaterThanOrEqualToThreshold に変更する
正解・解説・誤答理由・ひっかけを見る▼ open
✓ 正解:BAI作成・独立検証済

解説

CloudWatchアラームには、「直近何回中、何回しきい値を超えたらALARMにするか」を指定する 「データポイント数(Datapoints to Alarm)=M out of N」という設定がある。

  • 例えば「評価期間(Evaluation Periods)5回のうち3回」(3 out of 5)と設定すると、 直近5つのデータポイントのうち3つ以上がしきい値を超えて初めてALARMになり、単発の1回だけのスパイクでは発報しなくなる。
  • これは、しきい値そのものを変えずに「継続性・頻度」でノイズを抑制する手法であり、 本問のように「一時的な揺らぎは無視し、持続的な異常だけを検知したい」という要件に直接対応する。
  • これに対し、しきい値自体を緩める対応は、本来検知したい持続的な異常の検知感度まで一律に下げてしまう副作用があり、根本対応として適切でない。
各誤答が違う理由
  • Aしきい値を緩めると、本来検知したい持続的な高負荷そのものの検知感度まで下がってしまう。単発ノイズの抑制と持続的異常の検知は別軸で解決すべき。
  • C誤発報の根本原因(単発スパイクへの過敏な反応)を解消しておらず、単に通知を受け取る人を減らすだけでは同じ回数だけ誤発報が発生し続ける。
  • D比較演算子の変更は「しきい値と等しい場合も含めるか」を左右するだけで、単発スパイクによる誤発報を抑制する仕組みではない。
ひっかけ: 「しきい値の数値を上げる(誤答)」でも一時的にノイズは減るが、本当に深刻な持続的高負荷の検知感度まで一緒に下げてしまうという副作用がある。 「単発のノイズを無視し、継続性のあるものだけ拾いたい」という要件はDatapoints to Alarm(M out of N)で解決するのが定石。
AIが作成し、独立した検証を経た解説です(有資格者による監修は経ていません)
Q17アラーム(EC2アラームアクション:自動復旧)難易度 標準無料

あるEC2インスタンス(EBSバックド、単一インスタンスで稼働する重要なアプリケーション)で、稀にAWS側の物理ハードウェア障害に起因するシステムステータスチェック(StatusCheckFailed_System)の失敗が発生する。運用チームは、この種の障害が起きた際にインスタンスID・プライベートIP・EBSアタッチメント・Elastic IPなどの構成を維持したまま、正常な別の物理ホストへ自動的に移行・復旧させたい。最も適切なアラームアクションを選べ。(単一選択)

  1. AStatusCheckFailed_System をトリガーにするCloudWatchアラームを作成し、アラームアクションとして「インスタンスの復旧(Recover this instance)」を設定する
  2. BStatusCheckFailed_System をトリガーにするCloudWatchアラームを作成し、アラームアクションとして「インスタンスの再起動(Reboot this instance)」を設定する
  3. CCloudWatchアラームのアクションとして「インスタンスの終了(Terminate this instance)」を設定し、障害発生時に自動終了させ、Auto Scalingで新規インスタンスに置き換える
  4. DCloudWatchアラームのアクションとして「インスタンスの停止(Stop this instance)」を設定し、手動で開始し直すまで停止状態を維持する
正解・解説・誤答理由・ひっかけを見る▼ open
✓ 正解:AAI作成・独立検証済

解説

CloudWatchアラームのEC2向けアクションには再起動(Reboot)・復旧(Recover)・停止(Stop)・終了(Terminate)があるが、 それぞれ用途が異なる。

  • 復旧(Recover)アクションは、StatusCheckFailed_System(AWS側の物理ハードウェア・ネットワーク・電源等の基盤障害)を契機に設定するのに適しており、 同じインスタンスID・プライベートIPアドレス・Elastic IP・EBSボリュームのアタッチ状態などのメタデータを保持したまま、 正常な新しい物理ハードウェアへ自動的に移行させる。
  • これに対しStatusCheckFailed_Instance(ゲストOS内部の問題:カーネルパニック、ネットワーク設定誤りなど)は 物理ホストの問題ではないため、Recoverでは解決せずRebootアクションで対応するのが一般的である。
  • Recoverが使えるのは一部のインスタンスタイプ・EBSバックドインスタンスに限られる制約がある点も実務上押さえておく。
各誤答が違う理由
  • Bシステムステータスチェックの失敗はAWS側の物理ハードウェア基盤の問題であることが多く、同じ壊れたホスト上での再起動では解決しない場合がある。物理ホストごと切り替えるRecoverが適する。
  • C単一インスタンス構成でAuto Scaling配下にない前提であり、終了してしまうとインスタンスID・プライベートIP・Elastic IP等の構成情報が失われ、要件(構成を維持したまま復旧)を満たさない。
  • D停止すると手動再起動が必要になり自動復旧にならない。また稼働中の重要アプリケーションを止めてしまう点でも要件(自動的に復旧)に合わない。
ひっかけ: 「ステータスチェック失敗は全部Rebootで直る」という混同に注意。System側の失敗(物理ハードウェア基盤の問題)はRebootでは解決しない (同じ壊れたホストで再起動するだけになりかねない)。Recoverは物理ホスト自体を切り替える点がRebootとの決定的な違い。
AIが作成し、独立した検証を経た解説です(有資格者による監修は経ていません)
Q18アラーム(EC2アラームアクションの使い分け)難易度 標準無料

次のCloudWatchアラームアクションの説明のうち、正しいものを2つ選べ

  1. AStopアクションは、開発環境で夜間などアイドル状態が続くEBSバックドインスタンスを自動的に停止し、コストを削減する用途に使える
  2. BRecoverアクションは、EBSバックドインスタンスに限らずインスタンスストアバックドインスタンスでも利用でき、いずれの場合もローカルディスクの内容を保持したまま復旧する
  3. CRecoverアクションは、システムステータスチェック失敗(物理ハードウェア基盤側の障害)を契機に、インスタンスID・プライベートIP等の構成を保持したまま正常な物理ホストへ自動的に移行させる
  4. DRebootアクションは、システムステータスチェック失敗(StatusCheckFailed_System)に対しても、インスタンスステータスチェック失敗(StatusCheckFailed_Instance)に対しても、同程度の効果で障害を解消できる
正解・解説・誤答理由・ひっかけを見る▼ open
✓ 正解:AAI作成・独立検証済

解説

EC2向けのCloudWatchアラームアクション(Reboot / Recover / Stop / Terminate)は、それぞれ想定するトラブルシューティングの状況が異なる。

  • Stopアクションは、コスト最適化目的(例:開発環境で日中のみ稼働させ夜間はアイドル状態のインスタンスを自動停止する)や、 インスタンスストア以外(EBSルート)の障害時に一時停止して調査する目的で使われる。EBSバックドインスタンスにのみ利用できる。
  • Recoverアクションは、システムステータスチェック失敗(物理ハードウェア基盤側の問題)を契機に、 構成(インスタンスID・プライベートIP等)を維持したまま正常な物理ホストへ自動的に切り替える。
  • これに対しTerminateは不可逆な操作でインスタンス自体を削除するため、Auto Scaling配下で新しいインスタンスに置き換わる前提の設計でなければ、 構成の喪失というリスクを伴う。
各誤答が違う理由
  • Bインスタンスストアの内容はインスタンスの物理ホスト固有であり、Recoverによる物理ホスト切り替え時にインスタンスストアの中身は保持されない点も含め、注意が必要な制約がある。
  • Dシステムステータスチェック失敗は物理ハードウェア基盤側の問題であることが多く、同じ壊れたホスト上でのRebootでは解決しないことがある。物理ホストの切り替えにはRecoverが適する。
ひっかけ: 「Rebootはあらゆるステータスチェック失敗に有効(誤答)」という一般化に注意。System側の障害にはRecoverが適することを混同しないこと。 またStopアクションが使えるのはEBSバックドインスタンスだけ(A)という点も注意で、インスタンスストアバックドはStop不可(Stopするとデータが消えるため終了しかできない)
AIが作成し、独立した検証を経た解説です(有資格者による監修は経ていません)
Q19ダッシュボード(クロスアカウント/クロスリージョン監視)難易度 高無料

ある企業は、複数のAWSアカウント(各事業部が個別アカウントを保有)・複数リージョンにまたがってワークロードを運用している。運用チームは、これら全アカウント・全リージョンのCloudWatchメトリクスを1つのCloudWatchダッシュボードにまとめ、単一のペインで横断的に監視したい。各アカウントに個別にログインしてダッシュボードを見比べる運用は避けたい。最も適切な設計を選べ。(単一選択)

  1. A各事業部アカウントをソースアカウントとしてOam Linkを作成し、集約先アカウントをモニタリングアカウントに設定する。モニタリングアカウントのCloudWatchコンソールから、リンクされた全アカウント・複数リージョンのメトリクスを1つのダッシュボードにまとめて表示する
  2. B各アカウントのIAMユーザーに AdministratorAccess を付与した共有ログイン情報を作成し、1台のブラウザで複数タブを開いて各アカウントのダッシュボードを並べて見る
  3. C各アカウントのCloudWatchメトリクスをAmazon S3へ定期的にエクスポートし、モニタリング用アカウントでS3上のファイルを人手で集計してExcelでグラフ化する
  4. D各アカウントで同一のカスタムメトリクス名前空間を使うように統一し、それだけで自動的に他アカウントのメトリクスが1つのアカウントのダッシュボードに集約表示されるようにする
正解・解説・誤答理由・ひっかけを見る▼ open
✓ 正解:AAI作成・独立検証済

解説

複数アカウント・複数リージョンにまたがるメトリクスを1つのダッシュボードへ集約するには、 CloudWatchのクロスアカウント・クロスリージョン監視機能(Observability Access Manager/Oam)を使う。

  • 各事業部のアカウントを「ソースアカウント(monitoring source account)」として、 メトリクス・ログ・トレースの共有を許可するリンク(Oam Link)を作成する。
  • 集約先のアカウントを「モニタリングアカウント(monitoring account)」として設定し、 そのアカウントのCloudWatchコンソールから、リンクされた全ソースアカウントのメトリクスをまたいでダッシュボード・アラームを作成できる。
  • この仕組みにより、各アカウントへ個別にスイッチロールしてログインし直す必要なく、単一のモニタリングアカウントの単一ダッシュボードで 全社横断の監視が可能になる。リージョンについても、ダッシュボードのウィジェットごとにリージョンを指定できるため、複数リージョンのメトリクスを1画面に混在させられる。
各誤答が違う理由
  • B共有の管理者権限ログイン情報は最小権限・監査性の観点で不適切。また「1つのダッシュボード」という要件も満たさず、複数タブの手運用に留まる。
  • Cリアルタイム性を欠き、手作業の集計・可視化コストが高い。CloudWatchのクロスアカウント監視機能を使えばリアルタイムに統合ダッシュボードが得られる。
  • D名前空間を揃えるだけではアカウント境界を越えたデータ共有にはならない。クロスアカウントでメトリクスを共有するには明示的なOamのリンク設定が必要。
ひっかけ: 「各アカウントのCloudWatchダッシュボードをスクリーンショットして1つのWikiページに貼り付ける」ような手運用(誤答)は リアルタイム性が無く自動化もされていない。クロスアカウント監視はOam(旧CloudWatch cross-account observability)による正式な集約機能を使うのが定石。
AIが作成し、独立した検証を経た解説です(有資格者による監修は経ていません)
Q20ダッシュボード(メトリクス数式ウィジェットとテキストウィジェット)難易度 標準無料

運用チームは、CloudWatchダッシュボードに次の2つを表示したい。

  • ALB(Application Load Balancer)の HTTPCode_Target_5XX_Count(ターゲット側が返した5xx数)をリクエスト総数 RequestCount で割った「5xxエラー率(%)」を、追加のLambdaやカスタムメトリクス送信を実装せずグラフ化する
  • そのグラフの上に「このダッシュボードはSREチームが所有。しきい値超過時の一次対応手順はRunbook Xを参照」という説明書きを表示する

この2つを実現するダッシュボードの構成として最も適切なものを選べ。(単一選択)

  1. Aダッシュボードにメトリクス数式ウィジェットを追加し、HTTPCode_Target_5XX_CountRequestCount を参照する式 (m1/m2)*100 でエラー率をグラフ化する。加えてテキストウィジェットをダッシュボードに追加し、Markdownでオーナーチームと参照Runbookへのリンクを記載する
  2. BLambda関数を定期実行し、5xxエラー率を計算した結果をカスタムメトリクスとしてPutMetricDataで送信し、それをダッシュボードのグラフに表示する。説明書きはグラフのタイトル欄に長文で埋め込む
  3. CCloudWatch Logs Insightsのクエリウィジェットで HTTPCode_Target_5XX_CountRequestCount の値をログから正規表現で抽出し、割り算した結果を表示する
  4. Dダッシュボードの説明書きは、CloudWatchダッシュボードの機能では表示できないため、別途Wikiページを作成しダッシュボードのブックマークバーにリンクを追加する
正解・解説・誤答理由・ひっかけを見る▼ open
✓ 正解:AAI作成・独立検証済

解説

CloudWatchダッシュボードはJSON形式の「ダッシュボードボディ(dashboard body)」に複数のウィジェットを定義して構成する。 本問の2つの要件は、いずれも追加の実装(Lambda・カスタムメトリクス送信)なしに標準ウィジェットだけで実現できる

  • メトリクス数式(Metric Math)を使ったウィジェットでは、既存の HTTPCode_Target_5XX_CountRequestCount のメトリクスを m1m2 のような変数として参照し、(m1 / m2) * 100 のような式を定義してグラフの1系列として表示できる。 これは表示上の計算であり、新たなカスタムメトリクスをCloudWatchへ書き込むわけではない。 なおAWS/ApplicationELB名前空間の5xx系メトリクスには、ロードバランサー自身が生成したエラーを表すHTTPCode_ELB_5XX_Countと、 ターゲット(バックエンド)が返したエラーを表すHTTPCode_Target_5XX_Countの2種類があり、単純な「5XXCount」という名前のメトリクスは存在しない点に注意。
  • テキストウィジェットは、Markdown形式で任意の説明文・リンクをダッシュボード上に表示できるウィジェットであり、 グラフとは独立して「オーナーチーム」「Runbookへのリンク」のような運用メモを埋め込むのに使う。
各誤答が違う理由
  • B要件は「追加のLambdaやカスタムメトリクス送信を実装しない」ことであり、この方法は明確に要件に反する。メトリクス数式ウィジェットで代替できる計算をわざわざバックエンド実装する必要はない。
  • Cこれらは既にメトリクスとして存在する数値であり、わざわざログを正規表現でパースし直す必要はない。メトリクス数式ウィジェットの方が直接的かつ堅牢。
  • D事実に反する。CloudWatchダッシュボードにはMarkdown形式のテキストウィジェットが標準で用意されており、ダッシュボード内に直接説明文やリンクを埋め込める。
ひっかけ: 「エラー率を計算するには専用のLambda関数でカスタムメトリクスとして事前計算しておく必要がある(誤答)」という思い込みに注意。 ダッシュボード側のメトリクス数式ウィジェットで既存メトリクスから直接計算式を組めるため、追加のバックエンド実装は不要な場合が多い。
AIが作成し、独立した検証を経た解説です(有資格者による監修は経ていません)
Q21CloudWatch Logsサブスクリプションフィルタ難易度 標準無料

セキュリティチームから、複数のEC2アプリケーションが出力するCloudWatch Logsのロググループについて、特定のエラーパターンを含むログイベントをほぼリアルタイムでAmazon OpenSearch Serviceに転送し、ダッシュボードで可視化したいという要望があった。追加のポーリングや定期バッチを組まずにこれを実現する設計として最も適切なものを選べ。(単一選択)

  1. A対象ロググループにサブスクリプションフィルタを作成し、エラーパターンに一致するログイベントの配信先としてKinesis Data Firehoseを指定する。Firehose側でAmazon OpenSearch Serviceへの配信を構成する
  2. B1時間ごとに CreateExportTask を実行してロググループの内容をS3へエクスポートし、そのオブジェクトをトリガーにLambdaでOpenSearch Serviceへ取り込む
  3. CEC2上でcronジョブを組み、5分ごとにCloudWatch LogsのFilterLogEvents APIをポーリングしてエラーパターンを抽出し、OpenSearch Serviceへ手動で送信する
  4. DCloudTrailで同じロググループの変更イベントを記録し、その証跡からエラーパターンを抽出してOpenSearch Serviceへ転送する
正解・解説・誤答理由・ひっかけを見る▼ open
✓ 正解:AAI作成・独立検証済

解説

CloudWatch Logsのサブスクリプションフィルタ(subscription filter)は、ロググループに新しいログイベントが到着するたびに、 指定パターンに一致するイベントをほぼリアルタイムでストリーミング配信する機能である。

  • 配信先には Lambda・Kinesis Data Streams・Kinesis Data Firehose を指定できる。
  • Amazon OpenSearch Serviceへ継続的に流し込みたい場合は、サブスクリプションフィルタの配信先をKinesis Data Firehoseに設定し、 Firehose側でOpenSearch Serviceへの配信先を構成するのが標準パターン(Firehoseがバッファリング・リトライ・変換を担う)。
  • これに対しCreateExportTaskによるS3エクスポートはポイントインタイムのバッチ処理であり、リアルタイム性が無い。

このため「エラーパターンをリアルタイムで下流サービスへ転送」という要件には、エクスポートタスクではなくサブスクリプションフィルタ+Firehoseの組み合わせが最適となる。

各誤答が違う理由
  • Bエクスポートタスクはポイントインタイムのバッチ処理であり、最短でも数分〜のラグが生じる。「ほぼリアルタイム」という要件には合わない。
  • Cポーリング方式は追加の運用実装・スケーリング負荷が発生し、リアルタイム性もサブスクリプションフィルタに劣る。今回避けたいとされる「追加のポーリング」そのもの。
  • DCloudTrailはAWS APIの呼び出し履歴を記録するサービスであり、アプリケーションのログ内容(エラーメッセージ等)は記録しない。今回の要件とは無関係。
ひっかけ: 「CloudWatch LogsエクスポートタスクでS3へ出力し、そこからLambdaで随時取り込む(B)」は一見動きそうだが、 エクスポートタスクはバッチ処理でありリアルタイム性が無いため要件を満たさない。継続的なストリーミング=サブスクリプションフィルタという対応を覚える。
AIが作成し、独立した検証を経た解説です(有資格者による監修は経ていません)
Q22CloudWatch Logs Insights難易度 標準無料

本番障害の一次対応中、SysOps管理者は直近24時間分のアプリケーションログ(複数のロググループにまたがる)から、特定のリクエストIDを含むログ行を横断的に検索し、レイテンシの分布を素早く集計したい。事前にS3へのエクスポートやAthenaテーブルの構築を行う時間は無い。最も適切な方法を選べ。(単一選択)

  1. A対象の複数ロググループを指定してCloudWatch Logs Insightsクエリを実行し、filterでリクエストIDを絞り込み、statsでレイテンシの分布を集計する
  2. BまずCreateExportTaskで対象ロググループをS3へエクスポートし、Athenaでテーブルとパーティションを新規作成してからクエリする
  3. C各ロググループを個別にダウンロードし、ローカルのテキストエディタでリクエストIDを手動でgrepして集計する
  4. D対象ロググループにサブスクリプションフィルタを新規作成し、今後発生するログイベントだけをKinesisへ転送して集計する
正解・解説・誤答理由・ひっかけを見る▼ open
✓ 正解:AAI作成・独立検証済

解説

CloudWatch Logs Insightsは、CloudWatch Logsに保存済みのロググループへ事前のエクスポートや外部インフラ構築なしに、 その場でクエリ言語(fields/filter/stats/parse 等)を使ってアドホックに検索・集計できる機能である。

  • 複数ロググループを横断して同時にクエリでき、時間範囲を指定して直近24時間分などに絞り込める。
  • statsコマンドでレイテンシの平均・パーセンタイル・分布集計も1クエリ内で完結できる。
  • これに対しAmazon Athenaでの分析は、ログが事前にS3へエクスポートされ、かつテーブル/パーティションが定義済みであることが前提となり、 障害対応中の即時調査には向かない(構築の時間的余裕が無い今回の状況と合わない)。
各誤答が違う理由
  • Bエクスポート完了・テーブル定義に時間がかかり、障害対応中の即時調査には間に合わない。今回は「事前構築の時間が無い」という前提に反する。
  • C複数ロググループ・24時間分の手動ダウンロード+grepは非効率でスケールせず、レイテンシの統計的集計も手作業では困難。
  • Dサブスクリプションフィルタは作成以降のログイベントにしか効かず、既に発生した直近24時間分の過去ログを遡って検索する用途には使えない。
ひっかけ: 「Athenaの方が高機能だから常に優先すべき」という思い込みに注意。Athenaは事前にS3上へログが存在しテーブル定義済みであることが前提で、 即時性が必要な障害対応の第一手としてはCloudWatch Logs Insightsが本命である。用途(即時調査 vs 長期集計)で使い分ける。
AIが作成し、独立した検証を経た解説です(有資格者による監修は経ていません)
Q23CloudWatch Logs保持設定難易度 標準無料

コスト監査の結果、社内の多数のCloudWatch Logsロググループが「失効しない(Never Expire)」設定のまま無期限に保持され、ストレージコストが増加し続けていることが判明した。今後新規作成されるロググループも含めて、組織のガバナンス方針である「保持期間90日」を継続的に強制したい。最も運用負荷が低い設計を選べ。(単一選択)

  1. AAWS Configのカスタムルールで「保持期間が90日でないロググループ(失効しない設定のものを含む)」を非準拠と判定させ、検出したら自動的にSSM Automationランブック(logs:PutRetentionPolicy)で保持期間を90日に是正する自動修復を設定する
  2. B現時点で存在する全ロググループに対して、一度だけCLIスクリプトで put-retention-policy を実行し保持期間を90日に統一する
  3. CIAM SCPで logs:PutRetentionPolicy の呼び出し自体を全アカウントで禁止し、保持期間の変更ができないようにする
  4. D各アプリケーションチームに、ロググループ作成時は必ず保持期間90日を手動で選択するよう社内Wikiで周知する
正解・解説・誤答理由・ひっかけを見る▼ open
✓ 正解:AAI作成・独立検証済

解説

CloudWatch Logsのロググループは、デフォルトでは「失効しない(無期限保持)」であり、明示的に保持期間(PutRetentionPolicy)を 設定しない限りコストが積み上がり続ける。既存分の是正だけでなく今後の新規作成分にも継続的に規約を適用するには、単発のスクリプト実行では不十分である。

  • AWS Configのカスタムルール(Guardで書くカスタムポリシールール、またはLambdaのカスタムルール)で 「保持期間が90日でないロググループ」=「失効しない(Never Expire)」のものも含めて非準拠と判定させると、 今後作成される分も含めて継続的に検出できる。
  • さらに自動修復(remediation)としてSSM Automationランブックlogs:PutRetentionPolicyを呼び出す)を紐づければ、 非準拠を検知するたびに自動で保持期間90日へ是正され、新規作成分にも継続的に効く運用が実現する。
  • ⚠️ここでAWS Configの管理ルール cw-loggroup-retention-period-check は使えない。 このルールは「保持期間が MinRetentionTime(既定365日)未満なら非準拠」という 最低保持期間を保証する向きの判定であり、公式ドキュメントに 「保持設定が『失効しない(Never expire)』のロググループはCOMPLIANTと判定される」と明記されている。 つまり本問の非準拠(Never Expire群)を1件も検出できない。
  • 単発のCLIスクリプトによる一括設定は既存分の是正にはなるが、継続的なガバナンス(今後作られるロググループへの適用)を担保できない
各誤答が違う理由
  • B既存分は是正できるが一過性の対応であり、翌日以降に新規作成されるロググループには適用されない。継続的なガバナンスを担保できない。
  • C呼び出しを禁止すると誰も保持期間を90日に是正できなくなり、逆に「Never Expire」の既定設定のまま固定化されてしまう。目的(90日への是正)と手段が逆。
  • D手動運用は徹底されず抜け漏れが発生しやすい。「継続的に強制する」という要件には、機械的な検知・自動修復の仕組みが必要。
ひっかけ: 「一度スクリプトで全ロググループの保持期間を90日に設定すれば完了(B)」という発想はその場限りの是正にとどまり、 翌日以降に新規作成されるロググループには効かない。継続的なガバナンス=検知(AWS Config)+自動修復(SSM Automation)という組み合わせが本問の狙い。 あわせて「管理ルール cw-loggroup-retention-period-check を有効化すれば済む」という思い込みも罠である。 このルールは短すぎる保持期間を検出する向きの判定で、「失効しない(Never expire)」のロググループはCOMPLIANT扱いになるため、 本問のケースを1件も拾えない。管理ルールで足りないときはカスタムルールを書く。
AIが作成し、独立した検証を経た解説です(有資格者による監修は経ていません)
Q24CloudTrail証跡とログファイル検証難易度 標準無料

CloudTrail証跡で「ログファイルの検証(log file validation)」を有効化した場合に得られる効果として正しいものを2つ選べ

  1. ACloudTrailは1時間ごとにダイジェストファイルを生成し、各ダイジェストには直前のダイジェストのハッシュも含まれるハッシュチェーンにより、ログファイルの削除・改ざんを検知できる
  2. Baws cloudtrail validate-logs CLIコマンドを使って、指定期間のログファイル群が配信後に改ざん・削除されていないかを検証できる
  3. Cログファイル検証を有効化すると、S3に配信されるログファイルが自動的にSSE-KMSで暗号化されるようになる
  4. Dログファイル検証を有効化すると、IAM管理者であっても該当のCloudTrail証跡自体を無効化・削除できなくなる
正解・解説・誤答理由・ひっかけを見る▼ open
✓ 正解:AAI作成・独立検証済

解説

ログファイル検証を有効化すると、CloudTrailは配信先S3バケットへログファイルを配信するたびに、 そのログファイルのSHA-256ハッシュを記録した「ダイジェストファイル」を1時間ごとに生成する。

  • 各ダイジェストファイルには直前のダイジェストファイルのハッシュ値も含まれ、ハッシュチェーンを形成する。 これにより、ログファイルまたはダイジェストファイル自体が削除・改ざん・置換された場合に検知可能になる。
  • 検証は aws cloudtrail validate-logs --trail-arn <ARN> --start-time <time> のようにCLIで実行し、 指定期間のログファイル群が改ざんされていないかを機械的に確認できる。

なお、ログファイル検証はあくまで「改ざん・削除の検知」の仕組みであり、ログの暗号化はSSE-S3/SSE-KMSという別機能で提供される点、 また証跡自体の削除・無効化を防ぐものではない点に注意する。

各誤答が違う理由
  • C暗号化はログファイル検証とは別の機能(サーバー側暗号化の設定)で有効化する必要がある。ログファイル検証は改ざん検知のみを提供する。
  • D証跡自体の無効化・削除を防ぐ機能ではない。改ざんされた場合に「検知」できるのであって、操作自体を禁止するものではない(証跡の削除防止にはIAMポリシーでの制御が別途必要)。
ひっかけ: 「ログファイル検証を有効化すればログが自動的にKMSで暗号化される(C)」は誤り。暗号化はSSE-KMSの設定で別途行う必要があり、 ログファイル検証は改ざん検知のみを担う機能である。目的(暗号化 vs 改ざん検知)を混同しないこと。
AIが作成し、独立した検証を経た解説です(有資格者による監修は経ていません)
Q25CloudTrail組織証跡難易度 標準無料

AWS Organizationsで20個のメンバーアカウントを統括する会社が、各メンバーアカウントの管理者であってもAPI呼び出しの監査ログ収集を無効化できないようにしたい。全アカウントの証跡を一元的に管理アカウント側のS3バケットへ集約する設計として最も適切なものを選べ。(単一選択)

  1. A管理アカウントから「組織内の全アカウントに適用する」オプションを有効にした組織証跡(organization trail)を作成し、ログの集約先を管理アカウントのS3バケットに指定する。メンバーアカウントの管理者はこの証跡を無効化・削除できない
  2. B各メンバーアカウントに個別のCloudTrail証跡を作成させ、各アカウントのS3バケットから管理アカウントのS3バケットへクロスアカウントレプリケーションでログを転送する
  3. C管理アカウントにのみCloudTrail証跡を作成し、メンバーアカウントでのAPI呼び出しも自動的にその証跡に記録されると想定する
  4. D各メンバーアカウントにSCPで cloudtrail:StopLogging を明示的にDenyし、各アカウントで個別にCloudTrail証跡を作成する
正解・解説・誤答理由・ひっかけを見る▼ open
✓ 正解:AAI作成・独立検証済

解説

AWS Organizationsの組織証跡(organization trail)を使うと、管理アカウント(またはCloudTrail用の委任管理者アカウント)から 「組織内の全アカウントに証跡を適用する」オプションを有効にして証跡を作成できる。

  • これにより各メンバーアカウントに自動的に同じ証跡が作成され、すべてのログが管理アカウント側の指定S3バケットへ集約される。
  • メンバーアカウントの管理者は、その組織証跡を無効化・削除・変更できない(参照のみ可能)。組織証跡の管理権限は管理アカウント(または委任管理者)に限定される。
  • これに対し、各アカウントに個別の証跡を手動作成する方式では、各アカウントの管理者がその証跡自体を無効化・削除できてしまうため、 「管理者であっても無効化できない」という要件を満たさない。
各誤答が違う理由
  • B集約自体はできるが、各アカウントの証跡はそのアカウントの管理者権限で無効化・削除できてしまうため、「管理者であっても無効化できない」という要件を満たさない。
  • C「組織内の全アカウントに適用する」オプションを明示的に有効化しない限り、管理アカウントの証跡はメンバーアカウントのAPI呼び出しを記録しない。
  • D運用が煩雑(証跡作成とSCP設定の二重管理)になるうえ、集約設計としても組織証跡ほどシンプルで確実ではない。SCPのDeny漏れがあれば無効化を防げない。
ひっかけ: 「各アカウントで個別にCloudTrailを有効化し、S3クロスアカウントレプリケーションで管理アカウントへ集約する(B)」は集約自体は実現できるが、 各アカウントの証跡はそのアカウントの管理者権限で無効化・削除が可能なままであり、要件(無効化させない)を満たさない。 組織証跡はメンバー側からの無効化を構造的に防ぐ点が個別証跡との決定的な違い。
AIが作成し、独立した検証を経た解説です(有資格者による監修は経ていません)
Q26VPC Flow Logs難易度 標準無料

異なるサブネットに配置された2台のEC2インスタンス間の通信が突然失敗するようになった。セキュリティグループ設定は変更していないと開発チームは主張している。SysOps管理者は、実際にどの通信が拒否(REJECT)されているかを、直近数分の範囲で素早く特定したい。最も適切な方法を選べ。(単一選択)

  1. A対象VPCでVPC Flow LogsをCloudWatch Logsへ配信するよう設定(既に有効なら既存のロググループ)し、CloudWatch Logs Insightsで action = "REJECT" かつ該当ENI/IPに絞り込んだクエリを直近数分の範囲で実行する
  2. B開発チームの「設定変更していない」という申告を信頼し、Flow Logsの確認はスキップしてセキュリティグループのコンソール画面だけを目視確認する
  3. CVPC Flow LogsをS3へ配信するよう新規設定し、Amazon Athenaでテーブルとパーティションを一から定義してからクエリする
  4. DCloudTrailで両方のEC2インスタンスへのRunInstances/ModifyInstanceAttribute 呼び出し履歴を確認する
正解・解説・誤答理由・ひっかけを見る▼ open
✓ 正解:AAI作成・独立検証済

解説

VPC Flow Logsは、ENI単位で発生する通信のACCEPT/REJECTの記録(送信元/宛先IP・ポート・プロトコル・パケット数等)を出力する機能である。 配信先をCloudWatch Logsに設定しておけば、CloudWatch Logs Insightsで filter action = "REJECT" のようなクエリを即座に実行し、直近数分間の拒否パターンを素早く洗い出せる。

  • REJECTの記録から、どのセキュリティグループ/ネットワークACLの設定変更が影響したかを絞り込む手がかりが得られる (Flow Logs自体はどのルールが拒否したかまでは明示しないが、拒否された通信の特定には直結する)。
  • 配信先をS3にした場合はAthenaでの分析が定石だが、Athenaはテーブル定義・パーティション設定が前提となり、 「今すぐ数分単位で確認したい」という即時性の要件には、CloudWatch Logs Insightsの方が適している。
各誤答が違う理由
  • B申告と実際の通信状況が食い違う可能性があるため、実際の通信結果(Flow Logsの記録)で事実を確認せずに判断するのはトラブルシュートとして不十分。
  • Cテーブル・パーティションの定義に時間がかかり、「直近数分の範囲で素早く特定したい」という即時性の要件に合わない。S3+Athenaは長期集計向き。
  • DCloudTrailはAWS API呼び出しの履歴であり、インスタンス間のネットワークパケットレベルの通信可否(ACCEPT/REJECT)は記録しない。今回の調査対象と噛み合わない。
ひっかけ: 「セキュリティグループの設定画面を目視確認するだけで十分(B)」は、設定変更していないと主張されている状況では実際の通信結果(Flow Logs) を見て事実を確認すべきという運用者視点が問われている。「調べずに推測で判断しない」という基本姿勢を押さえる。
AIが作成し、独立した検証を経た解説です(有資格者による監修は経ていません)
Q27CloudTrail管理イベントとデータイベント難易度 高無料

ある機密資料を含むS3バケットについて、「誰がいつどのオブジェクトを GetObject でダウンロードしたか」を監査したいという要請があった。現在CloudTrailには証跡が1つ作成されているが、監査ログにその記録が見当たらない。原因と対策として最も適切なものを選べ。(単一選択)

  1. A証跡は既に有効なのでGetObject呼び出しも自動的に記録されているはずであり、記録が見当たらないのはS3側の障害である
  2. B証跡の高度なイベントセレクタで、対象S3バケットに対するデータイベントを明示的に有効化する。これによりGetObject等のオブジェクトレベルの操作も記録されるようになる
  3. CS3バケットのアクセスログ(Server Access Logging)ではなくCloudTrailを使っている点が誤りであり、CloudTrailではオブジェクトアクセスの監査は原理的に不可能である
  4. DCloudTrail Insightsを有効化すれば、追加設定なしにGetObjectの呼び出し個々の記録が自動的に取得できるようになる
正解・解説・誤答理由・ひっかけを見る▼ open
✓ 正解:BAI作成・独立検証済

解説

CloudTrailのイベントには管理イベント(management events)データイベント(data events)の2種類があり、 証跡はデフォルトで管理イベントのみを記録する。

  • 管理イベントは、バケットの作成・削除・バケットポリシー変更などコントロールプレーン操作が中心で、 個々のオブジェクトに対するGetObject/PutObjectのようなデータプレーン操作は含まれない
  • オブジェクトレベルの操作を監査するには、証跡の高度なイベントセレクタ(advanced event selectors)でS3データイベントを明示的に有効化し、 対象バケット(または「すべてのS3バケット」)を指定する必要がある。
  • データイベントは記録量が多くなりがちで管理イベントとは別料金が発生するため、対象を必要なバケットに絞ることがコスト最適化の観点でも推奨される。
各誤答が違う理由
  • A証跡はデフォルトで管理イベントのみを記録し、GetObjectのようなデータイベントは対象外。S3の障害ではなく証跡設定側の問題。
  • C事実に反する。CloudTrailはデータイベントを有効化すればオブジェクトレベルのAPI呼び出しを監査できる。「原理的に不可能」ではない。
  • DCloudTrail Insightsは通常と異なるAPI呼び出しの「量的な異常」を検知する機能であり、個々のオブジェクトアクセス操作を記録する仕組みではない。データイベント自体の有効化が別途必要。
ひっかけ: 「証跡が有効なのだからすべてのAPI呼び出しが記録されているはず(A)」という思い込みが典型的な誤り。 データイベント(オブジェクトレベル操作)はデフォルトでは記録対象外であり、明示的な有効化が必要という点が本問の核心。
AIが作成し、独立した検証を経た解説です(有資格者による監修は経ていません)
Q28ログ集約と分析(CloudWatchエージェント)難易度 標準無料

EC2上で稼働するアプリケーションについて、①独自のログファイル(/var/log/myapp/app.log)をCloudWatch Logsへ収集し、②同時にOS側のメモリ使用率メトリクス(デフォルトのEC2メトリクスには含まれない)もCloudWatchへ収集したい。追加のエージェントを2種類インストールせずに1つで実現する方法を選べ。(単一選択)

  1. A統合CloudWatchエージェント(CloudWatch agent)をEC2にインストールし、1つの設定ファイルでログファイルの収集先ロググループと、メモリ使用率等のカスタムメトリクスの収集項目を併せて定義する
  2. B旧来のCloudWatch Logsエージェント(awslogs)をインストールし、設定ファイルにログファイルパスとメモリメトリクスの収集項目を両方記述する
  3. CCloudWatch Logsエージェントでログを収集し、別途Systems Manager RunCommandを5分おきに実行してメモリ使用率を都度PutMetricDataでCloudWatchへ送信するスクリプトを組む
  4. DVPC Flow Logsを有効化し、フローログの中からメモリ使用率とログファイルの内容の両方を読み取る
正解・解説・誤答理由・ひっかけを見る▼ open
✓ 正解:AAI作成・独立検証済

解説

統合CloudWatchエージェント(unified CloudWatch agent)は、旧来のCloudWatch Logsエージェント(awslogs、ログ収集専用でレガシー扱い)を置き換える 形で提供されており、1つのエージェントでログファイルの収集とOSレベルのカスタムメトリクス(メモリ使用率・ディスク使用率など、EC2のデフォルトメトリクスに含まれない項目) の両方を1つの設定ファイルで扱える

  • EC2インスタンスにCloudWatchエージェント用のIAMロール(CloudWatchAgentServerPolicy等の権限)を付与する。
  • エージェントの設定ファイル(JSON)で、収集するログファイルパスとロググループ名、収集するメトリクス項目(mem_used_percent等)を1箇所に記述する。
  • 結果として、ログはCloudWatch Logsへ、メトリクスはCloudWatchカスタムメトリクスへ、それぞれ同じエージェントプロセスから送信される。
各誤答が違う理由
  • B旧CloudWatch Logsエージェントはログ収集専用であり、メモリ使用率のようなOSレベルのカスタムメトリクス収集機能は持たない。
  • C2つの仕組みを別々に運用することになり「1つで実現」という要件に反する。統合エージェント1つで完結できる機能をわざわざ分割する非効率な設計。
  • DVPC Flow Logsはネットワーク通信のメタデータを記録するものであり、OSのメモリ使用率やアプリケーションのログ内容は一切含まれない。用途が根本的に異なる。
ひっかけ: 「旧CloudWatch Logsエージェント(awslogs)でも両方できる(B)」という誤解に注意。旧エージェントはログ収集専用であり、 メモリ使用率のようなOSレベルのカスタムメトリクス収集はサポートしない。両方を1つで実現できるのは統合CloudWatchエージェントのみという点が本問の核心。
AIが作成し、独立した検証を経た解説です(有資格者による監修は経ていません)
Q29CloudTrail Insights難易度 高無料

CloudTrail Insightsの仕様・挙動として正しいものを2つ選べ

  1. ACloudTrail Insightsは、証跡に記録されるAPI呼び出しの呼び出し量(API call rate)やエラー率(API error rate)について、通常時のベースラインから統計的に逸脱した異常パターンを自動検出する
  2. BCloudTrail Insightsは証跡ごとに明示的に有効化する必要があり、有効化にはInsightsが分析するイベント数に応じた追加課金が発生する
  3. CCloudTrail Insightsは証跡を作成した時点でデフォルトで有効になっており、追加設定や追加課金なしにすべての証跡で動作している
  4. DCloudTrail Insightsで異常を検知するには、開発者が事前に「1分間に100回以上のAPI呼び出しがあれば異常」のような閾値ルールをJSONで記述して登録する必要がある
正解・解説・誤答理由・ひっかけを見る▼ open
✓ 正解:AAI作成・独立検証済

解説

CloudTrail Insightsは、証跡に記録されるAPI呼び出しのパターンについて、 通常時のベースラインから統計的に逸脱した異常(例:リソースのプロビジョニング数の急増、エラー率の急上昇)を自動検出する機能である。 検出できる種類は呼び出し量(API call rate)エラー率(API error rate)の2つで、必要な記録設定はこの2つで異なる

  • 呼び出し量(API call rate)書き込み(write)系イベントの記録が必要だが、 エラー率(API error rate)読み取り(read)または書き込み(write)のいずれかを記録していればよい。 「Insightsは書き込み専用イベントでしか動かない」というのは呼び出し量側の条件であり、エラー率には当てはまらない。
  • 対象は長らく管理イベントのみだったが、2025年11月20日にデータイベント向けのInsightsが提供開始され、管理イベント専用ではなくなった (データイベントのInsightsは証跡でのみ対応し、イベントデータストアでは利用できない)。
  • Insightsは証跡ごとに明示的に有効化する必要があり、有効化していない証跡では動作しない(分析されたイベント数に応じた追加課金が発生する)。
  • 検出された異常はInsightイベントとして証跡の配信先S3バケットに書き込まれ、CloudTrailコンソールの「Insights」タブでも確認できる。
  • Insightsは正常時の呼び出しパターンを継続的に学習してベースラインを構築し、そこから外れた挙動を検知する仕組みであり、 特定のAPIコールを事前にルールとして登録する必要はない(あらかじめ閾値を手動設定する仕組みではない)。
各誤答が違う理由
  • C事実に反する。Insightsは証跡ごとに明示的な有効化(オプトイン)が必要な機能であり、追加課金も発生する。
  • DInsightsは正常時の呼び出しパターンを継続的に学習しベースラインを構築したうえで統計的に逸脱を検知する仕組みであり、手動での閾値ルール記述は不要。
ひっかけ: 「CloudTrail Insightsは証跡を作成した時点で自動的に有効になっている(C)」は誤り。Insightsは追加のオプトイン設定が必要な有償機能である。 また「異常検知は開発者が事前に閾値ルールを書く必要がある(D)」も誤り。統計的なベースライン学習による自動検出である点が特徴。
AIが作成し、独立した検証を経た解説です(有資格者による監修は経ていません)
Q30ログ集約と分析(クロスアカウント集約)難易度 高無料

10個のメンバーアカウントそれぞれで稼働するアプリケーションのCloudWatch Logsを、中央のセキュリティ監視アカウントが持つ1つのKinesis Data Streamへリアルタイムに集約し、統合的な異常検知を行いたい。この構成を実現する設計として最も適切なものを選べ。(単一選択)

  1. A中央アカウントにPutDestinationでKinesis Data Streamを紐づけた送信先(destination)を作成し、PutDestinationPolicyで各メンバーアカウントからのPutSubscriptionFilterを許可する。各メンバーアカウント側で対象ロググループにサブスクリプションフィルタを作成し、配信先に中央アカウントの送信先ARNを指定する
  2. B各メンバーアカウントで日次のCreateExportTaskを実行してロググループをそれぞれのS3バケットへエクスポートし、S3クロスアカウントレプリケーションで中央アカウントのバケットへ複製する
  3. C中央アカウントのIAMユーザーのアクセスキーを各メンバーアカウントのアプリケーションに配布し、アプリケーションから直接中央アカウントのKinesis Data StreamへPutRecordさせる
  4. D各メンバーアカウントでCloudTrail証跡を作成し、その証跡データをKinesis Data Streamへ直接ストリーミングするよう設定する
正解・解説・誤答理由・ひっかけを見る▼ open
✓ 正解:AAI作成・独立検証済

解説

CloudWatch Logsのクロスアカウントサブスクリプションを使うと、複数アカウントのロググループから単一の中央アカウントの配信先へリアルタイムに集約できる。

  • まず中央(監視)アカウント側PutDestination によりCloudWatch Logsの「送信先(destination)」リソースを作成し、 対象のKinesis Data Streamを紐づける。この送信先にはCloudWatch LogsサービスがKinesisへ書き込むためのIAMロール(信頼ポリシーでlogs.amazonaws.comを許可)を関連付ける。
  • 次にPutDestinationPolicyで、この送信先に対して各メンバーアカウントのプリンシパルからのlogs:PutSubscriptionFilterを許可するアクセスポリシーをアタッチする。
  • 最後に各メンバーアカウント側で、対象ロググループにサブスクリプションフィルタを作成し、配信先ARNとして中央アカウントの送信先ARNを指定する。

この3ステップにより、10アカウント分のログをそれぞれ個別にエクスポート・転送するスクリプトを書かずに、リアルタイムのクロスアカウント集約が実現できる。

各誤答が違う理由
  • Bエクスポートタスクは日次のバッチ処理でありリアルタイム性が無く、集約先もS3であってKinesis Data Streamへの集約という要件に合わない。
  • C長期アクセスキーの配布はベストプラクティスに反し、アプリケーションコードの改修も必要になる。CloudWatch Logsのマネージドなクロスアカウント集約機能を使う方が安全かつシンプル。
  • DCloudTrailはAWS API呼び出しの記録であり、アプリケーションのCloudWatch Logsログイベントの集約という今回の要件とは対象データが異なる。
ひっかけ: 「各メンバーアカウントでロググループをS3にエクスポートし、S3クロスアカウントレプリケーションで集約する(B)」はバッチ処理でありリアルタイム性が無いうえ、 「Kinesis Data Streamへ集約」という要件(S3ではない)にも合わない。クロスアカウント×リアルタイム=サブスクリプションフィルタ+送信先(destination)の組み合わせを押さえる。
AIが作成し、独立した検証を経た解説です(有資格者による監修は経ていません)

無料サンプルはここまでです。全問に挑戦するには6ヶ月アクセスパス(1回払い・自動更新なし)をご利用ください。ログインすると、間違えた問題だけを集めて復習できます。

料金プランを見る