Amazon-Web-Services

在 CloudWatch 日誌組中找不到 Amplify 訪問日誌

  • May 13, 2022

我正在創建一個 CloudWatch 儀表板,並且我想在其他指標旁邊監控 Amplify 訪問日誌。我可以在 Amplify 儀表板(下面的螢幕截圖)中找到訪問日誌,但在 CloudWatch 日誌組中找不到相同的日誌。這是為什麼?我應該打開任何東西嗎?

在此處輸入圖像描述

正如這裡提到的

$$ 1 $$在 aws 文件中,Amplify 儲存您在 Amplify 中託管的所有應用程序的訪問日誌。換句話說,它不儲存在您的 CloudWatch 日誌之一中,僅在 Amplify 控制台儀表板上可見,而是通過 Amplify 控制臺本身直接儲存和訪問。因此,您將無法在任何 CloudWatch 日誌組中找到上述日誌。這也顯示在 Amplify 控制台訪問日誌選項卡中。點擊“編輯時間範圍”按鈕,您應該會看到:“您可以訪問從下面提供的日期和時間開始的任意兩週的日誌,如果您希望訪問舊日誌,您需要設置一個 Lambda 函式每兩週執行一次,並將結果儲存在 S3’ 中。正如我們所看到的,與 CloudWatch 日誌不同,如果我們想訪問舊的 Amplify 日誌,我們必須明確地將其導出並儲存在某處, 如果您希望對這些日誌進行額外處理,可以通過控制台下載並執行此操作。如果您想建構用於處理 Amplify Access 日誌的自動化解決方案,您可以使用以下步驟:

  1. 我們可以使用“GenerateAccessLogs”AWS Api 呼叫

$$ 2 $$使用預簽名 URL 獲取特定時間範圍內的網站訪問日誌。請參閱此文件的最底部部分$$ 2 $$帶有指向此操作的相應 AWS CLI 命令或開發工具包呼叫的連結。我們可以在我們的腳本或程式碼中使用此 CLI/API/SDK 呼叫以程式方式獲取訪問日誌並將其儲存在某處(在本地文件或 S3 中)。 2. 如果您希望自動執行上述日誌導出,請安排您的腳本在本地執行,或者您也可以通過 AWS Lambda 執行相同的程式碼(例如 Python 腳本),並通過 AWS EventBridge 安排 lambda 每兩週執行一次。 3. 一旦我們導出訪問日誌,以程式方式或手動方式說 S3,我們就可以對該數據進行額外處理。例如,如此處本節下方的“分析訪問日誌”部分所述

$$ 2 $$,您可以使用 AWS Athena 分析 S3 日誌。如果需要,您還可以將 Athena 結果推送回 CloudWatch 指標$$ 3 $$.

參考

$$ 1 $$ https://docs.aws.amazon.com/amplify/latest/userguide/access-logs.html#using-access-logs $$ 2 $$ https://docs.aws.amazon.com/amplify/latest/APIReference/API_GenerateAccessLogs.html $$ 3 $$ https://stackoverflow.com/questions/63715926/creating-a-cloudwatch-metrics-from-the-athena-query-results

Amplify AWS訪問日誌文件之後,看起來它們僅儲存在 Amplify 本身中,並且截至今天,無法將它們推送到 CloudWatch Logs。

該文件指定您可以以 CSV 格式下載它們並上傳回 S3 進行分析(利用 Athena)。在最後一種情況下,您應該首先創建一個 table,然後查詢它:

SELECT SUM(bytes) AS total_bytes
FROM logs
WHERE "date" BETWEEN DATE '2018-06-09' AND DATE '2018-06-11'
LIMIT 100;

引用自:https://serverfault.com/questions/1100624