こんにちは、インフラエンジニアのryuです。
この記事は、AWSクラウドプラクティショナー(CLF-C02)の勉強をしていて、CloudWatchとCloudTrailの違いがあいまいな人に向けて書いています。
どちらも名前が「Cloud」で始まり、どちらもログを扱います。問題文に「記録」「ログ」「監視」と出てくると、どちらを選べばいいか迷ってしまいますよね。
この記事では、2つの違いを何を記録するサービスなのかという1点から整理します。あわせて、よく一緒に出てくるAWS Configとの使い分け、CloudShellでの確認、確認問題4問と進めていきます。
CLF-C02全体の勉強の進め方は、CLF-C02の勉強方法の記事にまとめています。
CloudWatchとCloudTrailの違いとは?¶
まずは、2つの違いを表で並べてみます。
| 項目 | CloudWatch | CloudTrail |
|---|---|---|
| ひとことで言うと | リソースやアプリケーションの監視 | AWSアカウントで行われた操作の記録 |
| 記録するもの | CPU使用率などのメトリクス、アプリケーションのログ | 誰が、いつ、どこから、どのAPIを呼んだか |
| 答えてくれる問い | 今サーバーは元気か?負荷は高すぎないか? | このEC2を停止したのは誰か? |
| よくある使い方 | アラームで通知する、ダッシュボードで見る | 不正な操作の調査、監査 |
いちばん大きな違いは、見ている対象です。CloudWatchはリソースの状態を見ていて、CloudTrailは人やサービスが行った操作を見ています。
CloudWatchは「リソースがどういう状態か」、CloudTrailは「誰が何をしたか」を記録するサービスです。迷ったら、問題文がどちらを知りたがっているかを考えます。
CloudWatchはリソースの状態を見る¶
CloudWatchは、AWSのリソースやアプリケーションを監視するサービスです。主な機能は次の4つです。
| 機能 | 内容 |
|---|---|
| メトリクス | CPU使用率やネットワークの通信量などを、時系列の数値として集める |
| アラーム | メトリクスがしきい値を超えたときに通知したり、アクションを実行したりする |
| ログ(CloudWatch Logs) | アプリケーションやOSのログを集めて保存し、検索する |
| ダッシュボード | メトリクスをグラフにして、1つの画面で見られるようにする |
たとえばEC2では、何も設定しなくてもCPU使用率などのメトリクスが5分ごとに送られます。これを基本モニタリングと呼びます。詳細モニタリングを有効にすると1分ごとになりますが、こちらは料金がかかります。
1つ気をつけたいのが、メモリの使用率です。EC2の標準のメトリクスにはメモリの使用率が含まれていないので、見たいときはインスタンスにCloudWatchエージェントを入れて送ります。
CloudWatchを使った死活監視はCloudWatchでWebサイトの死活監視をする記事、請求額のアラームはCloudWatchで請求アラームを有効にする記事で手順を紹介しています。
CloudTrailは誰が何をしたかを記録する¶
CloudTrailは、AWSアカウントの中で行われた操作を記録するサービスです。マネジメントコンソールでの操作も、AWS CLIやSDKからの操作も、AWSのAPIの呼び出しとして記録されます。
記録には、操作した人やロール、日時、送信元のIPアドレス、呼び出したAPIの名前などが含まれます。そのため、誰がいつEC2を停止したのか、誰がセキュリティグループを変更したのか、といったことを後から調べられます。
CloudTrailには、何も設定しなくても使えるイベント履歴があります。ここでは、リージョンごとに過去90日分の管理イベントを、追加の料金なしで見られます。
90日より長く残したいときは、証跡(トレイル)を作ってS3のバケットにログを保存します。この場合は、S3の保存料金がかかります。
コンソールでイベント履歴を見る手順は、CloudTrailでイベントログを確認する記事で紹介しています。
AWS Configも入れた3つの使い分け¶
CLF-C02では、CloudWatchとCloudTrailに加えて、AWS Configが一緒に出てくることがよくあります。3つを並べると、次のようになります。
| サービス | 記録するもの | 答えてくれる問い |
|---|---|---|
| CloudWatch | リソースの状態(メトリクス)とログ | 今、負荷は高いか?異常はないか? |
| CloudTrail | APIの呼び出し(操作) | 誰が、いつ、何をしたか? |
| AWS Config | リソースの設定とその変化 | この設定は、いつ・どう変わったか?ルールに合っているか? |
AWS Configは、リソースの設定を記録して、その変化を追いかけるサービスです。ルールを決めておくと、ルールに合っていないリソースを見つけることもできます。たとえば、暗号化されていないボリュームや、外部に公開されている設定を見つけるといった使い方です。
CloudTrailとConfigは似ていますが、CloudTrailは「操作」を、Configは「設定の状態」を記録します。同じセキュリティグループの変更でも、誰が変更したかはCloudTrail、変更の前後で設定がどうなったかはConfigで見ます。
問題文のキーワードで見分ける¶
試験の問題では、問題文の言葉からサービスを選べることが多いです。よく出てくる言葉を表にしておきます。
| 問題文に出てくる言葉 | 選ぶサービス |
|---|---|
| CPU使用率、しきい値、アラーム、通知、ダッシュボード | CloudWatch |
| アプリケーションのログを集めて検索したい | CloudWatch(CloudWatch Logs) |
| 誰が操作したか、APIの呼び出し、監査、ユーザーのアクティビティ | CloudTrail |
| 設定の変更履歴、設定がルールに準拠しているか、構成の記録 | AWS Config |
「ログ」という言葉だけで判断しないのがポイントです。アプリケーションやOSのログならCloudWatch Logs、AWSへの操作の記録ならCloudTrailです。
組み合わせて使う例¶
3つのサービスは、どれか1つを選ぶものではなく、組み合わせて使うこともよくあります。
たとえば、ルートユーザーでログインがあったら通知したいとします。CloudTrailの証跡をCloudWatch Logsに送り、ログの中からルートユーザーの操作を見つけるメトリクスフィルターを作って、CloudWatchのアラームで通知する、という構成がよく使われます。
この場合、操作を記録するのはCloudTrail、記録を見張って通知するのはCloudWatchです。役割が分かれていることを意識すると、組み合わせの問題も解きやすくなります。
ルートユーザーやIAMの考え方は、IAMユーザーとIAMロールの違いの記事でも整理しています。
今日やる練習:CloudShellでCloudTrailのイベント履歴を見る¶
ここで、実際にAWSで手を動かしてみましょう。使うのは AWS CloudShell と、AWS CLIのコマンドです。
CloudShellは、追加の料金なしで使えるサービスです。ここで打つコマンドは情報を表示するだけで、リソースは作りません。
手順1:直近の操作を5件表示する¶
マネジメントコンソールにログインして、画面上部のアイコンからCloudShellを開きます。開いたら、次のコマンドを打ちます。
aws cloudtrail lookup-events --max-results 5 \
--query 'Events[].[EventTime,EventName,Username]' \
--output table
lookup-events は、CloudTrailのイベント履歴を検索するコマンドです。--query で、日時、APIの名前、操作したユーザーの3つだけを表に出しています。
結果には、このリージョンで最近行われた操作が新しい順に並びます。
EventName の欄を見てみてください。Describe や List で始まるものは情報を見ただけの操作、Create や Delete で始まるものはリソースを変更した操作です。
CloudShellの開き方や、作業用のIAMユーザーの用意がまだの人は、AWS初心者が最初に試したい3つの操作の記事を先にやっておくと安心です。
手順2:イベント名で絞り込む¶
次は、特定の操作だけを探してみます。たとえば、EC2のインスタンスを起動した記録だけを見たいときは、次のように打ちます。
aws cloudtrail lookup-events \
--lookup-attributes AttributeKey=EventName,AttributeValue=RunInstances \
--max-results 5 \
--query 'Events[].[EventTime,Username]' \
--output table
EC2を起動したことがなければ、何も表示されません。それで正常です。
イベント履歴はリージョンごとに分かれているので、EC2を起動したリージョンとCloudShellのリージョンがそろっているかも確認してみてください。
これがCloudTrailの「誰が、いつ、何をしたか」です。同じことをCloudWatchのメトリクスで調べることはできない、という点を実際に確かめておくと、試験で迷いにくくなります。
CLF-C02の確認問題¶
ここからは、この記事の内容をもとに作ったオリジナルの確認問題です。本番の問題ではありません。
問題1:インスタンスを停止したのは誰か¶
本番環境のEC2インスタンスが、昨日の夜に停止されていました。誰が停止したのかを調べるのに使うサービスはどれでしょうか。
- A. Amazon CloudWatch
- B. AWS CloudTrail
- C. AWS Trusted Advisor
正解:B
誰がどのAPIを呼んだかを記録しているのはCloudTrailです。インスタンスの停止も
StopInstancesというAPIの呼び出しとして記録されます。CloudWatchはリソースの状態を見るサービスで、操作した人は分かりません。
問題2:CPU使用率が高くなったら通知したい¶
EC2インスタンスのCPU使用率が80%を超えたら、担当者に通知したいと考えています。使うサービスはどれでしょうか。
- A. Amazon CloudWatch
- B. AWS CloudTrail
- C. AWS Config
正解:A
CPU使用率はCloudWatchのメトリクスです。CloudWatchのアラームでしきい値を決め、超えたときに通知できます。
問題3:設定がルールに合っているか確認したい¶
セキュリティグループの設定が社内のルールに合っているかを継続的に確認し、変更の履歴も残したいと考えています。もっとも適したサービスはどれでしょうか。
- A. Amazon CloudWatch
- B. AWS CloudTrail
- C. AWS Config
正解:C
リソースの設定と変更の履歴を記録し、ルールに合っているかを評価するのはAWS Configです。CloudTrailでも誰が変更したかは分かりますが、設定がルールに合っているかの評価はしません。
問題4:アプリケーションのログを集めたい¶
EC2で動くWebアプリケーションのログを1か所に集めて、エラーを検索したいと考えています。使うサービスはどれでしょうか。
- A. Amazon CloudWatch Logs
- B. AWS CloudTrail
- C. AWS Config
正解:A
アプリケーションやOSのログを集めて検索するのはCloudWatch Logsです。CloudTrailが記録するのはAWSのAPIの呼び出しで、アプリケーションが出すログではありません。
4問のうち、迷った問題はあったでしょうか。迷った問題は、正解していても、なぜほかの選択肢が違うのかを説明できるようにしておきましょう。
CLF-C02では、どこで問われる?¶
CLF-C02の試験ガイドでは、この3つのサービスは「セキュリティとコンプライアンス」の分野に出てきます。この分野は試験全体の30%を占めています。
試験ガイドでは、ガバナンスとコンプライアンスに役立つサービスの例として、CloudWatchによる監視、CloudTrailやAWS Configによる監査が挙げられています。
CLF-C02は、細かい設定の手順よりも、どの場面で何を使うかを問う試験です。この記事の表にある「答えてくれる問い」を説明できれば、この3つのサービスで迷うことはかなり減ります。
サービスが多くて覚えきれないと感じている人は、AWSのサービスを流れで整理する記事もあわせて読んでみてください。暗記だけで解けない問題が気になる人は、CLF-C02は暗記だけで受かるか?の記事もおすすめです。
InfraAcademyで続ける¶
監視と記録のサービスが整理できたら、ほかの分野の問題でも理解を確かめてみましょう。
InfraAcademyでは、トップページのInfraAcademy の資格模擬問題で「AWS認定 クラウドプラクティショナー模擬試験150問」を解けます。セキュリティとコンプライアンスの分野で間違えた問題があれば、この記事のキーワードの表に戻って、どのサービスの話なのかを確かめてみてください。
AWSの操作を順番に学びたい人は、InfraAcademyのAWSの講座も使えます。講座の中のシミュレーターで、AWSの操作を練習できます。講座の順番はAWSのロードマップにまとめています。
まとめ¶
CloudWatchとCloudTrailの違いを振り返ります。
- CloudWatchはリソースの状態を見るサービスで、メトリクス、アラーム、ログ、ダッシュボードの機能がある
- CloudTrailは、誰が、いつ、どのAPIを呼んだかを記録するサービス
- CloudTrailのイベント履歴では、過去90日分の管理イベントを追加料金なしで見られる
- AWS Configは、リソースの設定とその変化を記録し、ルールに合っているかを評価する
- 「ログ」という言葉だけで選ばず、アプリのログか、AWSへの操作の記録かを見分ける
3つのサービスの役割が分かれば、セキュリティの問題だけでなく、運用や監視の問題も読みやすくなります。
1つずつ手を動かして確かめながら、合格まで進んでいきましょう。応援しています。
参考¶
- What is Amazon CloudWatch? - Amazon CloudWatch
- Working with CloudTrail event history - AWS CloudTrail
- How CloudTrail works - AWS CloudTrail
- AWS CloudTrail pricing
- Amazon CloudWatch pricing
- Metrics collected by the CloudWatch agent - Amazon CloudWatch
- What Is AWS Config? - AWS Config
- AWS CloudShell pricing
- AWS Certified Cloud Practitioner (CLF-C02) 試験ガイド - AWS Documentation



