如何使用 AWS CloudTrail 追蹤對 Amazon EC2 執行個體的 API 呼叫?

2 分的閱讀內容
0

我想要追蹤執行、停止、啟動和終止我 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體的 API 呼叫。如何使用 AWS CloudTrail 搜尋對我的 Amazon EC2 執行個體的 API 呼叫?

簡短描述

AWS CloudTrail 可讓您識別和追蹤對 AWS 帳戶發出的四種 API 呼叫類型 (事件類型):

若要在對您的帳戶進行這些類型的 API 呼叫後檢閱這些類型,您可以使用下列任何一種方法。

**注意:**您可以檢視過去 90 天內帳戶的事件歷史記錄。

解決方法

使用 CloudTrail 事件歷史記錄追蹤 API 呼叫

1.    開啟 CloudTrail 主控台

2.    選擇 Event history(事件歷史記錄)。

3.    在 Filter(篩選)下,從下拉式清單中選取 Event name(事件名稱)。

4.    在 Enter event name(輸入事件名稱)下,輸入您要搜尋的事件類型。然後,選擇事件類型。

5.    在 Time range(時間範圍)下,輸入您要追蹤事件類型的所需時間範圍。

6.    選擇 Apply(套用)。

如需詳細資訊,請參閱使用 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 Logs 追蹤 API 呼叫

重要事項: 若要將事件記錄到 Amazon S3 儲存貯體,您必須先建立 CloudWatch 追蹤

1.    依照尋找您的 CloudTrail 日誌檔案中的指示,存取您的 CloudTrail 日誌檔案。

2.    依照下載您的 CloudTrail 日誌檔案中的指示下載您的 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 事件

AWS 官方
AWS 官方已更新 3 年前