导出CloudWatch日志组到S3

本文介绍了如何在AWS中国区,将CloudWatch日志组导出到S3。

在默认情况下,在CloudWatch上将Lambda、DMS等多种服务的日志组导出到S3时候会提示没有权限。当查看AWS文档时进行配置时,有关文档以Global区域为例进行编写,需要调整IAM Policy适应中国区域才能完成配置。

进入中国区S3控制台,并创建一个存储桶。设置桶时候,可以设置Block Public。因为导出CloudWatch日志组后后不需要外部公开访问。此时禁用公开访问,不影响导出日志。如下截图。

进入存储桶,选择 Permissions 权限,点击 Bucket Policy 桶策略。输入如下的策略。

{
    "Version": "2012-10-17",
    "Statement": [
      {
          "Action": "s3:GetBucketAcl",
          "Effect": "Allow",
          "Resource": "arn:aws-cn:s3:::cloudwatch-log-group",
          "Principal": { "Service": "logs.cn-northwest-1.amazonaws.com.cn" }
      },
      {
          "Action": "s3:PutObject" ,
          "Effect": "Allow",
          "Resource": "arn:aws-cn:s3:::cloudwatch-log-group/*",
          "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control" } },
          "Principal": { "Service": "logs.cn-northwest-1.amazonaws.com.cn" }
      }
    ]
}

这里与这里的官方文档上不同的地方在于:

  • 在Resource中的aws后增加aws-cn;
  • 替换存储桶名字为实际的存储桶;
  • 在Principal中替换服务节点为 logs.cn-northwest-1.amazonaws.com.cn 即Global文档后增加了.cn

修改如上。将以上策略贴到S3桶策略中。如下截图。

进入CloudWatch日志组。选中要导出的日志组,点击Action,选择导出。如下截图。

在导出界面,选择时间区间,然后选择要导出的Bucket桶名称。如下截图。

导出后进入S3桶,可以找到exportedlogs目录,如下截图。

导出的文件是tar.gz压缩格式。如下截图。

下载导出文件成功。

全文完。