Amazon Elastic Compute Cloud (Amazon EC2) インスタンスを実行、停止、開始、削除する API コールを追跡したいです。AWS CloudTrail を使用して Amazon EC2 インスタンスへの API コールを検索する方法を教えてください。
簡単な説明
AWS CloudTrail では、AWS アカウントに対して行われた 4 種類の API コール (イベントタイプ) を識別して追跡できます。
これらの種類の API コールがアカウントに対して行われた後、次のいずれかの方法でその呼び出しを確認できます。
注: アカウントのイベント履歴は、過去 90 日間まで表示できます。
解決策
CloudTrail イベント履歴を使用して API コールを追跡する方法
1. CloudTrail コンソールを開きます。
2. [イベント履歴] を選択します。
3.[フィルター] で、ドロップダウンリストから [イベント名] を選択します。
4.[イベント名を入力] に、検索するイベントタイプを入力します。次に、イベントタイプを選択します。
5.[時間範囲] に、イベントタイプを追跡する時間範囲を入力します。
6.[適用] を選択します。
詳細については、「CloudTrail イベント履歴でイベントを表示する」および「CloudTrail コンソールで CloudTrail イベントを表示する」を参照してください。
Amazon Athena クエリを使用して API コールを追跡する方法
「Amazon Athena に AWS CloudTrail ログを検索するためのテーブルを自動的に作成する方法を教えてください」の手順に従います。
RunInstances API コールのクエリ例を次に示します。サポートされているどのイベントタイプでも同様のクエリを使用できます。
重要: 次のクエリ例のいずれかを実行する前に、cloudtrail-logs を実際の Athena テーブル名に置き換えます。
RunInstances API コールに関する、表示できるすべてのイベント情報を返すクエリの例
SELECT *
FROM cloudtrail-logs
WHERE eventName = 'RunInstances'
RunInstances API コールに関する、フィルターしたイベント情報を返すクエリの例
SELECT userIdentity.username, eventTime, eventName
FROM cloudtrail-logs
WHERE eventName = 'RunInstances'
ある時点から現在の日付までの、文字列 Instances で終わる API に関するイベント情報を返すクエリの例
重要: '2021-07-01T00:00:01Z' は、イベント情報を取得する起点となる時間に置き換えます。
SELECT userIdentity.username, eventTime, eventName
FROM cloudtrail-logs
WHERE (eventName LIKE '%Instances') AND eventTime > '2021-07-01T00:00:01Z'
Amazon Simple Storage Service (Amazon S3) でアーカイブされた Amazon CloudWatch ログを使用して API コールを追跡する方法
重要: Amazon S3 バケットにイベントを記録するには、まず CloudWatch 証跡を作成する必要があります。
1.CloudTrail ログファイルにアクセスする方法については、「CloudTrail ログファイルを特定する」の手順に従ってください。
2.「CloudTrail ログファイルのダウンロード」の手順に従ってログファイルをダウンロードします。
3.jq などの JSON コマンドラインプロセッサを使用して、追跡するイベントタイプをログから検索します。
Amazon S3 からダウンロードした CloudWatch ログから、特定のイベントタイプを検索する jq プロシージャの例
1.Bash ターミナルを開きます。次に、ログファイルを保存するために以下のディレクトリを作成します。
$ mkdir cloudtrail-logs
4.新しいディレクトリに移動します。次に、以下のコマンドを実行して CloudTrail ログをダウンロードします。
重要: 例にある my_cloudtrail_bucket は、実際の Amazon S3 バケットに置き換えます。
$ cd cloudtrail-logs
$ aws s3 cp s3://my_cloudtrail_bucket/AWSLogs/012345678901/CloudTrail/eu-west-1/2019/08/07 ./ --recursive
5.次の gzip コマンドを実行してログファイルを解凍します。
重要: *は、解凍するファイル名に置き換えます。
$ gzip -d *
6.検索するイベントタイプに対して jq クエリを実行します。
RunInstances API コールに関する、表示できるすべてのイベント情報を返す jq クエリの例
cat * | jq '.Records[] | select(.eventName=="RunInstances")'
StopInstances と TerminateInstances API コールに関する、表示できるすべてのイベント情報を返す jq クエリの例
cat * | jq '.Records[] | select(.eventName=="StopInstances" or .eventName=="TerminateInstances" )'
関連情報
CloudTrail を使用して、AWS アカウントで発生した API コールとアクションを確認する方法を教えてください
フィルターを使用してログイベントからメトリクスを作成する
AWS Config コンソールで、設定変更に関連する API イベントを表示できるようになりました