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

AWS SAP-C02 で Amazon CloudWatch Logs はどう問われるか

Amazon CloudWatch Logs が正解になる問題 3問
例題 3問 収録
最頻出: 第 2 分野: 新しいソリューションのための設計

SAP-C02 (ソリューションアーキテクト プロフェッショナル) の練習問題のうち 3 問で Amazon CloudWatch Logs が正解になります。最も多いのは第 2 分野: 新しいソリューションのための設計 (1問) で、次いで第 3 分野: 既存のソリューションの継続的な改善 (1問) です。ほかに 第 1 分野: 複雑な組織に対応するソリューションの設計 (1問) からも問われます。タスク単位では「タスク 2.6 コストを最適化するソリューションの決定」が 1 問と中心で、ここが Amazon CloudWatch Logs を学ぶうえで最優先の論点です。誤答の選択肢としては AWS CUR、Amazon Kinesis、AWS CloudTrail が併記されやすく、これらとの役割の違いを説明できるかどうかが正誤の分かれ目になります。

Amazon CloudWatch Logs の出題分野の内訳

分野別

第 2 分野: 新しいソリューションのための設計

1

第 3 分野: 既存のソリューションの継続的な改善

1

第 1 分野: 複雑な組織に対応するソリューションの設計

1


タスク別(AWS 公式 Exam Guide のタスクステートメント)

タスク 2.6 コストを最適化するソリューションの決定

1

タスク 3.1 全体的な運用上の優秀性を高めるための戦略策定

1

タスク 1.5 コスト最適化と可視化の戦略

1

Amazon CloudWatch Logs の例題 3問(クリックで即採点)

選択肢をタップするとその場で正誤が分かります。ログインもページ移動も不要です。

例題 1
複数選択
難易度: 標準

NAT ゲートウェイのデータ処理料金の削減

製造業の IoT 分析基盤では、プライベートサブネットで稼働する 600 個の Amazon ECS on AWS Fargate タスクが、毎月およそ 400 TB のセンサーデータを Amazon S3 へ書き込み、加工結果を Amazon DynamoDB に保存しています。各タスクは起動時に Amazon ECR からコンテナイメージを取得し、標準出力を Amazon CloudWatch Logs へ送信しています。請求内訳を確認したところ、NAT ゲートウェイのデータ処理料金が月額コストの最大項目になっていました。アーキテクチャを大きく変更せずにこの費用を削減する対策を 2 つ選択してください。

複数選択問題です (正解 2 つ)。選んでから判定してください。

解説を読む(正解: A、B)

NAT ゲートウェイの料金は時間あたりの固定料金と、通過したデータ量に比例するデータ処理料金の 2 つで構成されます。プライベートサブネットから S3、DynamoDB、ECR、CloudWatch Logs といった AWS のパブリックエンドポイントへ出ていく通信もすべて NAT ゲートウェイを通るため、大量データを扱うワークロードではデータ処理料金が支配的になります。S3 と DynamoDB はゲートウェイ型 VPC エンドポイントに対応しており、エンドポイント自体の利用料もデータ処理料金も発生しません。ルートテーブルに宛先プレフィックスリスト向けの経路が追加され、両サービス宛てのトラフィックは NAT ゲートウェイを迂回するため、毎月 400 TB 分のデータ処理料金がそのまま消えます。したがって A が最も効果の大きい対策です。B の ECR と CloudWatch Logs は AWS PrivateLink のインターフェイスエンドポイントに対応しており、エンドポイントの時間料金とデータ処理料金は発生するものの、単価は NAT ゲートウェイのデータ処理料金より低く、イメージのプルとログ送信の帯域を NAT から外せます (ECR のイメージレイヤーは S3 から取得されるため、A の S3 ゲートウェイエンドポイントと併用することが前提です)。C はデータ転送の問題を一部緩和しますが、600 個のタスクをインターネットに直接面する場所へ移すことになり、セキュリティ境界を大きく変えるため「アーキテクチャを大きく変更しない」という条件と最小権限の考え方に反します。D はデータ処理料金が通過データ量に比例する以上、台数を増やしても総額は変わらず、時間料金の分だけむしろ増加します。AZ 間のデータ転送料金の削減にはなりますが、主因の解決にはなりません。E の CloudFront は S3 からの配信 (ダウンロード) を高速化し配信コストを下げるためのサービスであり、VPC 内から S3 へアップロードする経路が NAT ゲートウェイを通ること自体を回避するものではありません。

この問題の出典(AWS 公式ドキュメント)

例題 2
複数選択
難易度: 標準

高負荷時のアプリケーション可観測性の確保

スポーツ観戦チケットを販売する企業が、AWS 上で 3 層構成のウェブアプリケーションを運用しています。フロントには Amazon CloudFront があり、Java で実装された予約エンジンは Apache ウェブサーバーを載せた Amazon EC2 インスタンス群 (Auto Scaling グループ) 上で動作し、バックエンドは Amazon Aurora MySQL DB クラスターです。先週のテレビ CM 放映直後にアクセスが急増し、利用者から座席をカートに入れる操作がタイムアウトするという報告が相次ぎました。運用チームが原因を調べようとしたところ、スケールインによって一部の EC2 インスタンスがログ回収前に終了しており、Aurora 側もどのクエリが遅延の原因かを判断できるだけの情報が残っていませんでした。次回以降のトラフィック急増時にアプリケーションの挙動を詳細に把握できるようにするために実施すべき対策はどれですか。3 つ選択してください。

複数選択問題です (正解 3 つ)。選んでから判定してください。

解説を読む(正解: A、B、D)

可観測性の課題は「揮発するインスタンス上にデータを残さない」ことと「層をまたいだ処理の内訳を可視化する」ことの 2 点に整理できます。まず A は、Aurora MySQL がスロークエリログとエラーログを CloudWatch Logs へ直接発行できる機能を利用するもので、どのクエリが閾値を超えたかを永続的に保持し、Logs Insights で集計できるようになります。次に B の AWS X-Ray SDK for Java は、受信 HTTP リクエストにトレース ID を付与し、JDBC 呼び出しなどのダウンストリーム処理をサブセグメントとして記録するため、遅延がウェブ層で発生しているのか SQL 実行で発生しているのかをサービスマップ上で切り分けられます。D は CloudWatch Logs エージェントで Apache のログをほぼリアルタイムに転送する対策で、Auto Scaling によってインスタンスが終了してもログが失われないという、本問の中心的な課題を直接解決します。誤りの選択肢を見ると、C は Aurora の DB クラスターログの発行先として Kinesis を直接指定する機能が存在しないため実装できません。E の CloudTrail は AWS API 呼び出しの監査記録を残すサービスであり、アプリケーション内部のリクエスト処理時間や SQL の遅延は記録対象外です。F は Aurora に「パフォーマンスベンチマークを有効化して X-Ray へ発行する」という機能自体が存在せず、DB 側の詳細分析には Performance Insights など別の仕組みを使う必要があります。

例題 3
単一選択
難易度: 難しい

共有 DynamoDB テーブルのテナント別コスト按分

勤怠管理 SaaS を提供する企業が、マルチテナント環境を運用しています。ストレージ層ではすべてのテナントが共通の Amazon DynamoDB テーブルを共有しており、アプリケーションのビジネスロジックは AWS Lambda 関数で実装されています。各テナントは、Lambda 関数へのすべてのリクエストに含まれる一意のテナント ID で識別されます。同社は、テナントごとのリソース消費量に応じた段階的なサブスクリプション料金体系を新たに提供しようとしており、その前提として DynamoDB の利用料金をテナントごとの消費量に比例して配賦したいと考えています。AWS アカウントでは AWS コストと使用状況レポート (AWS CUR) がすでに有効化されています。最も少ない運用工数でテナント別の DynamoDB コストの内訳を得られるソリューションはどれですか。

解説を読む(正解: B)

AWS の請求データは基本的にリソース単位で集計されるため、複数テナントが 1 つの DynamoDB テーブルを共有するプール型のマルチテナント構成では、請求情報だけからテナント別のコストを割り出すことはできません。この場合の定石は、アプリケーション側でテナントごとの実消費量を計測し、その比率で実際の請求額を按分する方式です。DynamoDB の API レスポンスには ReturnConsumedCapacity を指定することで各操作が消費した RCU / WCU が返されるため、B のように Lambda 関数がテナント ID と消費キャパシティユニットを CloudWatch Logs へ記録すれば、テナントごとの正確な使用量を継続的に取得できます。あとは別の Lambda 関数が定期的に、ログから集計した使用量と AWS Cost Explorer API から取得した実際の DynamoDB 合計コストを掛け合わせて按分し、EventBridge のスケジュールルールで自動実行すれば、既存のデータモデルを変更することなく詳細な内訳が得られます。A は誤りで、コスト配分タグはリソース (テーブル) 単位でしか集計できないため、1 つのテーブルを共有するテナント間のコストを分割できません。C はテナントを識別するためにパーティションキーを設計し直す必要があり、既存データの移行とアプリケーション改修を伴う大規模な作業となるうえ、項目数はキャパシティ消費量と比例しないため按分の精度も低くなります。D はレスポンスサイズや実行時間からキャパシティ消費を推定する間接的な方法で精度が劣るほか、AWS Pricing Calculator は将来の見積もりを算出するツールであり、実際に発生した請求額を取得する用途には使えません。

Amazon CloudWatch Logs とよく混同されるサービス

Amazon CloudWatch Logs が答えの問題で、誤答の選択肢として並ぶサービス

SAP-C02 の問題プールを実際に集計した結果です。ここに並ぶサービスとの違いを言葉で説明できるようになると、Amazon CloudWatch Logs 系の問題を取りこぼしにくくなります。

AWS CUR

2回

Amazon Kinesis

1回

AWS CloudTrail

1回

Amazon EC2

1回

Amazon CloudWatch Logs の公式ドキュメント

本ページの内容は以下の AWS 公式ドキュメントに基づいています。

SAP-C02 の関連論点

Amazon ECR

8問

Amazon Route 53

8問

Amazon SQS

7問

AWS Secrets Manager

7問

Amazon Simple Queue Service

6問

Amazon DynamoDB

6問

Amazon Kinesis Data Streams

6問

AWS WAF

5問

SAP-C02 のサービス別 論点一覧をすべて見る

SAP-C02 の練習問題をすべて解く

Amazon CloudWatch Logs を含む全分野の練習問題と本番形式の模擬試験を、日本語の解説つきで収録しています。

練習問題を始める