日志递归防护 - Amazon CloudWatch 日志
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

日志递归防护

订阅过滤器存在导致无限日志递归的风险,如果不加以防止,则可能导致 CloudWatch 日志和目标中的摄取账单大幅增加。当订阅筛选器与接收订阅交付工作流程产生的日志事件的日志组关联时,可能会发生这种情况。提取到日志组中的日志将传送到目标,从而导致日志组摄取更多日志,然后这些日志将再次转发到目标,从而形成递归循环。

例如,考虑一个目标为 Firehose 的订阅筛选器,它将日志事件传送到 Amazon S3。此外,还有一个 Lambda 函数,用于处理传送到 Amazon S3 的新事件并自行生成一些日志。如果将订阅筛选器应用于 Lambda 函数的日志组,则该函数生成的日志事件将被转发到目标位置的 Firehose 和 Amazon S3,然后它们将再次调用该函数,从而生成更多日志并转发到 Firehose 和 Amazon S3,从而导致再次调用该函数等。这将以无限循环的方式发生,导致日志提取、Firehose 和 Amazon S3 的账单意外增加。

如果 Lambda 函数附加到启用日志流日志的 VPC,则该 VPC 的日志组也可能导致日志递归。 CloudWatch

我们建议您不要将订阅过滤器应用于订阅交付工作流程中的日志组。对于账户级订阅过滤器,请使用 PutAccountPolicy API 中的selectionCriteria参数将这些日志组排除在策略之外。

排除日志组时,请考虑以下生成日志的 Amazon 服务,这些服务可能是您的订阅交付工作流程的一部分:

  • 带有 Fargate 的 Amazon EC2

  • Lambda

  • Amazon Step Function

  • 为日志启用的 Amazon VPC 流 CloudWatch 日志

注意

Lambda 目标的日志组生成的日志事件不会被转发回账户级订阅筛选策略的 Lambda 函数。在这种情况下,账户订阅策略不需要使用selectionCriteria排除目标 Lambda 函数的日志组。