我想对 Amazon CloudWatch Logs 进行故障排除,因为它无法导出到 Amazon Simple Storage Service (Amazon S3) 存储桶。
解决方法
**注意:**如果在运行 AWS 命令行界面 (AWS CLI) 命令时遇到错误,请参阅排查 AWS CLI 错误。此外,请确保您使用的是最新版本的 AWS CLI。
根据日志导出失败是发生在创建导出任务之时还是之后,对无法导出到 Amazon S3 存储桶的日志进行故障排除。
在导出任务创建过程中
要对在创建任务时失败的任务进行故障排除,请执行以下操作:
- **AWS 区域:**确认您的 CloudWatch 日志流和 Amazon S3 存储桶位于同一区域。
- **Amazon S3 存储桶策略:**默认情况下,Amazon S3 存储桶和对象是私有的。资源所有者只能访问存储桶和存储桶中的对象。有关详细信息,请参阅步骤 3: 设置在 S3 存储桶上的权限。
- **Amazon S3 存储桶前缀:**在设置 Amazon S3 存储桶策略时,最佳做法是以一个随机生成的字符串作为存储桶的前缀。如果您使用前缀,则必须在创建导出任务时在 Amazon S3 存储桶前缀设置中指定生成的字符串。如果您未指定生成的字符串,则导出任务创建会失败。
- **AWS Identity and Access Management(IAM)策略:**确认创建导出任务的 AWS Identity and Access Management (IAM) 用户或角色有权访问 Amazon S3 和 CloudWatch 日志。有关详细信息,请参阅步骤 2: 设置访问权限。
- 查看 CloudTrail 日志:在 AWS CloudTrail 中搜索 CreateExportTask 事件以确定错误消息。CreateExportTask 是一个异步操作。如果您提供了所有必要的信息,则会发起一个导出任务并返回任务的 ID。任务开始时,使用 DescribeExportTasks 检查状态。有关详细信息,请参阅错误。
- 资源配额:CloudWatch Logs 服务配额仅允许每个区域每个 AWS 账户执行一项正在运行或待执行的导出任务。您无法更改此配额。确保您不超出允许的配额。
- **服务器端加密的类型:**确保您的 Amazon S3 存储桶使用支持的服务器端加密。支持的加密包括高级加密标准 (AES) -256 和拥有 AWS Key Management Service (AWS KMS) 密钥的服务器端加密。这些支持的加密被称为 SSE-KMS。
创建导出任务后
要对在创建任务后失败的任务进行故障排除,请检查时间范围设置。如果您导出包含大量数据的日志流并指定了一个较长的时间范围,则导出任务可能会失败。要解决此问题,请在导出数据量较少的日志流时将时间范围配置得短一些。
要检查时间范围设置的状态,请运行以下 AWS CLI describe-export-tasks 命令:
aws logs describe-export-tasks --task-id example-task-id
注意:输入您的任务 ID 来替代example-task-id。
要将数据导出到 Amazon S3,请运行以下 AWS CLI create-export-task 命令:
aws logs create-export-task --task-name "example-task-name" --log-group-name "/aws/lambda/example-log-group-name" --destination "example-bucket-name --from 1710378735 --to 1710465135
注意:输入您的任务名称来替代 example-task-name。输入您的日志组名称来替代example-log-group-name。输入您的目标存储桶来替代example-bucket-name。
要检查导出任务的状态,请运行以下 AWS CLI describe-export-tasks 命令:
aws logs describe-export-tasks --task-id example-task-id
注意:输入您的任务 ID 来替代example-task-id。
日志最多可能需要长达 12 个小时才能准备好,供导出。而且,导出任务的处理时间也可能会长达数小时。此过程取决于您导出的数据量。最佳做法是使用日志组级订阅筛选器进行实时处理或持续将新数据存档到 Amazon S3。有关更多信息,请参阅使用订阅实时处理日志数据。
相关信息
我配置 Amazon CloudWatch 将日志数据导出到 Amazon S3,但日志数据要么丢失,要么无效。如何解决此问题?
如何从 CloudWatch Logs 检索日志数据?
将日志数据导出到 Amazon S3