为什么我的 CloudWatch Logs 日志未能导出到 S3 存储桶?

上次更新时间:2020 年 5 月 26 日

我想将我的 Amazon CloudWatch 日志数据导出到 Amazon Simple Storage Service (Amazon S3) 存储桶。但导出任务失败了。为什么我的 CloudWatch Logs 日志未能导出到 S3 存储桶?

解决方法

排查任务在创建期间失败的问题,请检查以下设置:

  • 区域 – 确认您的 CloudWatch Logs 日志流和 S3 存储桶使用的区域相同。
  • S3 存储桶策略 – 默认情况下,所有 S3 存储桶和对象都是私有的。仅资源拥有者(创建存储桶的 AWS 账户)能够访问该存储桶以及其中包含的任何对象。使用存储桶策略在 S3 存储桶上设置访问 CloudWatch Logs 的权限。
  • S3 存储桶前缀 – 设置 S3 存储桶策略时,最佳实践是使用一个随机生成的字符串作为存储桶的前缀。如果您使用前缀,您还必须在创建导出任务时指定 S3 存储桶前缀设置中随机生成的字符串,否则导出任务的创建将会失败。
  • AWS Identity and Access Management (IAM) 策略 – 确认创建导出任务的 IAM 用户(IAM 角色)具有对 Amazon S3 和 CloudWatch Logs 的完全访问权限
  • 资源配额CloudWatch Logs 服务配额会限制每个账户在每个区域正在运行或待执行的导出任务数量。请确保您没有超出允许的配额。
  • 服务器端加密类型 – 请确保您使用受支持的服务器端加密类型。不支持导出到使用 SSE-KMS 加密的 S3 存储桶。支持导出到使用 AES-256 加密的 S3 存储桶。

排查任务在创建后失败的问题,请检查时间范围设置:如果您要导出的日志流含有大量数据并且指定的时间范围较长,导出任务可能会失败。在这种情况下,请指定一个较短的时间范围。

注意:最长可能需要 12 小时后才可以导出日志,并且导出任务本身也可能需要一定的时间。要实时处理数据或持续将新数据存档到 S3,请使用订阅筛选条件。您可以将日志流式传输到 Amazon Kinesis Data Firehose 并将 Amazon S3 设置为目标。要将历史数据存档到 S3,请将您的数据导出到 Amazon S3。