答案1
答案2
正如 aws 文档中[1]所述,Amplify 存储了您在 Amplify 中托管的所有应用程序的访问日志。换句话说,它不是存储在您的某个 CloudWatch 日志中,也不只在 Amplify 控制台仪表板上可见,而是直接通过 Amplify 控制台本身存储和访问。因此,您将无法在任何 CloudWatch 日志组中找到所述日志。Amplify 控制台访问日志选项卡中也指明了这一点。单击“编辑时间范围”按钮,您应该会看到:“您可以访问从下面提供的日期和时间开始的任何两周的日志,如果您希望访问较旧的日志,您需要设置每两周运行一次的 Lambda 函数并将结果存储在 S3 中”。如我们所见,与 CloudWatch 日志不同,如果我们想要访问旧的 Amplify 日志,我们必须明确将其导出并存储在某个地方,无论是本地还是 S3 等数据存储中。
如果您希望对这些日志进行额外处理,您可以通过控制台下载并执行此操作。如果您想构建一个用于处理 Amplify Access 日志的自动化解决方案,您可以使用以下步骤:
我们可以使用“GenerateAccessLogs”AWS Api 调用[2],通过预签名的 URL 获取特定时间范围内的网站访问日志。请参阅此文档[2]最底部的部分,其中包含与此操作对应的 AWS CLI 命令或 SDK 调用的链接。我们可以在脚本或代码中使用此 CLI/API/SDK 调用以编程方式获取访问日志并将其存储在某个位置(本地文件或 S3 中)。
如果您希望自动执行上述日志导出,请安排您的脚本在本地运行,或者您也可以通过 AWS Lambda 运行相同的代码(例如 Python 脚本),并安排 lambda 通过 AWS EventBridge 每两周执行一次。
一旦我们将访问日志导出到 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