VPC 流日志疑难解答 - Amazon Virtual Private Cloud
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

VPC 流日志疑难解答

下面是您在使用流日志时可能遇到的问题。

未完成的流日志记录

问题

您的流日志记录不完整或者已不再发布。

原因

将流日志传送到 CloudWatch Logs 日志组时可能会出现问题,或者可能存在 SkipData 条目

解决方案

在 Amazon EC2 控制台或 Amazon VPC 控制台中,选择 Flow Logs (流日志) 以获取相关资源。流日志表显示 Status(状态)列中的所有错误。或者,使用 describe-flow-logs 命令,然后检查 DeliverLogsErrorMessage 字段中返回的值。可能会显示以下错误之一:

  • Rate limited:如果应用了 CloudWatch Logs 日志节流,则当某个网络接口的流日志记录数超过了可以在特定时间范围内发布的最大记录数时,会出现此错误。如果已达到您可创建的 CloudWatch Logs 日志组数量的配额,也可能出现此错误。有关更多信息,请参阅《Amazon CloudWatch 用户指南》中的 CloudWatch 服务配额

  • Access error:出现此错误的原因为以下之一:

    • 您的流日志的 IAM 角色没有足够的权限,无法将流日志记录发布到 CloudWatch 日志组

    • IAM 角色与流日志服务没有信任关系

    • 信任关系不指定用作委托人的流日志服务

    有关更多信息,请参阅 用于将流日志发布到 CloudWatch Logs 的 IAM 角色

  • Unknown error:流日志服务中出现内部错误。

流日志处于活动状态,但没有流日志记录或日志组

问题

您已创建流日志,并且 Amazon VPC 或 Amazon EC2 控制台会将流日志显示为 Active。但是,您无法看到 CloudWatch Logs 中的任何日志流或 Amazon S3 存储桶中的日志文件。

可能的原因
  • 流日志仍在创建中。在某些情况下,当您为要创建的日志组创建流日志后,有时会需要数十分钟或更长时间才会显示数据。

  • 还没有为您的网络接口记录任何流量。只有在记录流量时,才会创建 CloudWatch Logs 中的日志组。

解决方案

等待几分钟,以便系统创建日志组,或者记录流量。

“LogDestinationNotFoundException”或“Access Denied for LogDestination”错误

问题

当您创建流日志时,会出现 Access Denied for LogDestinationLogDestinationNotFoundException 错误。

可能的原因
  • 创建将数据发布到 Amazon S3 存储桶的流日志时,此错误表示找不到指定的 S3 存储桶或存储桶策略不允许将日志传送到存储桶。

  • 创建将数据发布到 Amazon CloudWatch Logs 的流日志时,此错误表示 IAM 角色不允许将日志传送到日志组。

解决方案
  • 发布到 Amazon S3 时,请确保您指定了现有 S3 存储桶的 ARN,并且该 ARN 的格式正确。如果您不拥有 S3 存储桶,请验证存储桶策略具有所需的权限,并在 ARN 中使用正确的账户 ID 和存储桶名称。

  • 发布到 CloudWatch Logs 时,请验证 IAM 角色具有所需的权限。

超出 Amazon S3 存储桶策略限制

问题

在您尝试创建流日志时收到了以下错误:LogDestinationPermissionIssueException

可能的原因

Amazon S3 存储桶策略有 20 KB 的大小限制。

每次创建发布到 Amazon S3 存储桶的流日志时,我们都会自动将指定的存储桶 ARN(包括文件夹路径)添加到存储桶策略中的 Resource 元素。

创建发布到同一个存储桶的多个流日志可能会导致超出存储桶策略限制。

解决方案
  • 通过删除不再需要的流日志条目来清理存储桶策略。

  • 通过使用以下内容替换各个流日志条目,为整个存储桶授予权限。

    arn:aws:s3:::bucket_name/*

    如果您授予整个存储桶的权限,则新的流日志订阅不会向存储桶策略添加新权限。

LogDestination 无法送达

问题

在您尝试创建流日志时收到了以下错误:LogDestination <bucket name> is undeliverable

可能的原因

目标 Amazon S3 存储桶将使用 Amazon KMS(SSE-KMS)和服务器端加密进行加密,并且存储桶的默认加密方式为 KMS 密钥 ID。

解决方案

该值必须为 KMS 密钥 ARN。将默认 S3 加密类型从 KMS 密钥 ID 更改为 KMS 密钥 ARN。有关更多信息,请参阅《Amazon Simple Storage Service 控制台用户指南》中的 配置默认加密

流日志数据大小与账单数据不匹配

问题

流日志的总数据大小与账单数据报告的大小不匹配。

可能的原因

您的流日志中可能有 SKIPDATA 条目。有关 SKIPDATA 条目的说明,请参阅 无数据和跳过的记录

解决方案

通过在日志状态字段中查询日志中的不同条目,确认日志条目中是否存在 SKIPDATA 条目。

检查 SKIPDATA 的示例查询:

CW Insights:

fields @timestamp, @message, @logStream, @log | filter interfaceId = 'eni-123' | stats count(*) by interfaceId, logStatus | sort by interfaceId, logStatus

Athena:

SELECT log_status, interface_id, count(1) FROM vpc_flow_logs WHERE interface_id IN ('eni-1', 'eni-2', 'eni-3') GROUP BY log_status, interface_id