参考

参考

我正在创建 CloudWatch 仪表板,我想监控 Amplify 访问日志以及其他指标。我可以在 Amplify 仪表板中找到访问日志(下面的屏幕截图),但在 CloudWatch 日志组中找不到相同的日志。这是为什么?我应该打开什么吗?

在此处输入图片描述

答案1

下列的放大 AWS 文档在访问日志上,它们看起来只存储在 Amplify 本身中,并且截至今天,无法将它们推送到 CloudWatch Logs。

文档指定您可以以 CSV 格式下载它们并上传回 S3 进行分析(利用 Athena)。在最后一种情况下,您应该首先创建表格,然后查询它:

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

答案2

正如 aws 文档中[1]所述,Amplify 存储了您在 Amplify 中托管的所有应用程序的访问日志。换句话说,它不是存储在您的某个 CloudWatch 日志中,也不只在 Amplify 控制台仪表板上可见,而是直接通过 Amplify 控制台本身存储和访问。因此,您将无法在任何 CloudWatch 日志组中找到所述日志。Amplify 控制台访问日志选项卡中也指明了这一点。单击“编辑时间范围”按钮,您应该会看到:“您可以访问从下面提供的日期和时间开始的任何两周的日志,如果您希望访问较旧的日志,您需要设置每两周运行一次的 Lambda 函数并将结果存储在 S3 中”。如我们所见,与 CloudWatch 日志不同,如果我们想要访问旧的 Amplify 日志,我们必须明确将其导出并存储在某个地方,无论是本地还是 S3 等数据存储中。

如果您希望对这些日志进行额外处理,您可以通过控制台下载并执行此操作。如果您想构建一个用于处理 Amplify Access 日志的自动化解决方案,您可以使用以下步骤:

  1. 我们可以使用“GenerateAccessLogs”AWS Api 调用[2],通过预签名的 URL 获取特定时间范围内的网站访问日志。请参阅此文档[2]最底部的部分,其中包含与此操作对应的 AWS CLI 命令或 SDK 调用的链接。我们可以在脚本或代码中使用此 CLI/API/SDK 调用以编程方式获取访问日志并将其存储在某个位置(本地文件或 S3 中)。

  2. 如果您希望自动执行上述日志导出,请安排您的脚本在本地运行,或者您也可以通过 AWS Lambda 运行相同的代码(例如 Python 脚本),并安排 lambda 通过 AWS EventBridge 每两周执行一次。

  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

相关内容