CloudTrail での個人的な調査方法 3 つ
仕事でもプライベートでもトラブルシューティングの際にチェックする CloudTrail について、個人的な調査方法 3 つをまとめてみました。
CloudTrail とは
AWS CloudTrail(ユーザーアクティビティと API 使用状況の追跡)| AWS
一言で説明すると、「AWS 上での操作履歴を記録するサービス」です。
いつ、どこから、誰が、何の操作をしたのかが記録されるので、トラブルシューティングでは高確率でチェックします。
CloudTrail の詳細については、上記 AWS 公式ドキュメントをご覧ください。
調査方法
大きく分けて以下の 3 つの調査方法で調査することが多いです。
- エラーコードを確認する
- 調査範囲を絞る
- JSON でダウンロードして確認する
以下、1 つずつ説明していきます。
1. エラーコードを確認する
CloudTrail ではデフォルトではエラーコードを表示する設定になっていないので、設定でエラーコードを表示します。
上記のように設定することで、エラーコードの列が表示されます。
これでどの操作でエラーになったのかを確認することができます。
エラーが発生していた場合には以下のように表示されます。
上記の場合、CreateLogGroup という操作において、ResourceAlreadyExistsException
というエラーが発生していたことがわかります。
そのため、トラブルシューティングとしては、ResourceAlreadyExistsException
についての原因や解決策を調査していきます。
トラブルシューティングにおいて、エラーの有無やエラーの内容について知ることは非常に重要なので、まずは CloudTrail のエラーコードを確認できるように設定しています。
2. 調査範囲を絞る
CloudTrail ではイベント履歴の内容を絞ることができます。
デフォルトでは、「読み取り専用」というフィルター名で、値が「false」になっています。
これは、読み取り専用ではないイベント、つまり書き込みイベントを表示しているという意味です。
逆に、「読み取り専用」が「true」だと、読み取り専用イベントを表示しているという意味になります。
どのイベントが読み取り専用なのかどうかは、AWS 公式ドキュメントに記載されています。
読み取り専用かどうか以外にも、よく使うフィルターとしては、「イベント名」、「イベントソース」、「リソース名」があります。
詳細は AWS 公式ドキュメントに記載されていますが、ざっくり説明すると以下のような内容です。
・イベント名: 実行された操作や API
・イベントソース: どの AWS サービスに関するイベントか
・リソース名: EC2 インスタンス ID などのリソース名
初期段階でイベント名が絞れていれば AWS 公式ドキュメントも確認しつつ、イベント名でエラーの有無を調べます
一方、イベント名が分からない場合には、イベントソースを選択し、広い範囲から調べていくこともあります。
リソース名が分かっているときにはリソース名から調べ始めることもあります。
また、イベントの種類に関するフィルターだけではなく、日付でのフィルターも可能です。
日付のフィルターには大きく分けて相対時間 (Relative) と絶対時間 (Absolute) の 2 種類があります。
・相対時間 (Relative): 現在時刻を基準にした時間範囲
・絶対時間 (Absolute): 特定の日付の時間範囲
例えば、現在時刻が午前 9:00 の場合に、相対時間で 1 時間を選択すると、午前 8:00 ~ 午前 9:00 までのイベント履歴が表示されます。
一方、絶対時間は特定の日付の時間範囲なので、現在時刻とは関係なく、9/1 0:00 ~ 9/19 23:59 という特定の時間範囲を指定することができます。
上記のイベントフィルターや日付のフィルターを組み合わせて、調査範囲を絞ることが多いです。
JSON でダウンロードして確認する
イベントや日付を絞っても、コンソールで確認することが大変な場合もあります。
そんな時には、「イベントをダウンロード」から、JSON 形式でダウンロードします。
ダウンロード後に、テキストエディタの文字列検索でイベント名やエラーについて検索します。
コンソールでは 10 ページ以上ある場合などにはよく使用する方法です。
ただし、イベント量が多いと JSON や CSV のダウンロードに時間がかかる場合があるので、ダウンロードする場合でもある程度イベントなどは絞った方がよいです。
まとめ
今回は CloudTrail について、個人的な調査方法 3 つをまとめてみました。
- エラーコードを確認する
- 調査範囲を絞る
- JSON でダウンロードして確認する
基本的な内容だとは思いますが、どなたかの参考になれば幸いです。
Discussion