Amazon CloudWatch Logs
用户指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

使用控制台将日志数据导出到 Amazon S3

在下面的示例中,您将使用 Amazon CloudWatch 控制台将所有数据从名为 my-log-group 的 Amazon CloudWatch Logs 日志组导出到名为 my-exported-logs 的 Amazon S3 存储桶中。

步骤 1:创建 Amazon S3 存储桶

我们建议您使用专为 CloudWatch Logs 创建的存储桶。但是,如果要使用现有存储桶,请跳至第 2 步。

注意

该 Amazon S3 存储桶必须与要导出的日志数据处于同一个区域内。CloudWatch Logs 不支持将数据导出至其他区域中的 Amazon S3 存储桶。

创建 Amazon S3 存储桶

  1. 通过以下网址打开 Amazon S3 控制台:https://console.amazonaws.cn/s3/

  2. 如果需要,可以更改区域。从导航栏中,选择 CloudWatch Logs 所在的区域。

  3. 选择 Create Bucket

  4. 对于 Bucket Name (存储桶名称),输入存储桶的名称。

  5. 对于 Region (区域),选择 CloudWatch Logs 数据所在的区域。

  6. 选择 Create

步骤 2:创建对 Amazon S3 和 CloudWatch Logs具有完全访问权限的 IAM 用户

在以下步骤中,您将创建具有必要权限的 IAM 用户。

创建必要的 IAM 用户

  1. 通过以下网址打开 IAM 控制台:https://console.amazonaws.cn/iam/

  2. 依次选择 Users (用户)Add user (添加用户)

  3. 输入用户名,例如 CWLExportUser.

  4. 选择 Programmatic access (编程访问)AWS Management Console access (AWS 管理控制台访问)

  5. 选择 Autogenerated password (自动生成的密码)Custom password (自定义密码)

  6. 选择 Next: Permissions (下一步:权限)

  7. 选择 Attach existing policies directly (直接附加现有策略),然后将 AmazonS3FullAccessCloudWatchLogsFullAccess 策略附加到用户。您可以使用搜索框来查找策略。

  8. 选择 Next: Tags (下一步:标签)Next: Review (下一步:审核),然后选择 Create user (创建用户)

第 3 步:在 Amazon S3 存储桶上设置权限

默认情况下,所有 Amazon S3 存储桶和对象都是私有的。仅资源所有者(创建了存储桶的 AWS 账户)能够访问存储桶及其包含的任何对象。不过,资源所有者可以选择通过编写访问策略来向其他资源和用户授予访问权限。

当您设置策略时,建议包含一个随机生成的字符串作为存储桶的前缀,这样只会将目标日志流导出到该存储桶。

要设置 Amazon S3 存储桶上的权限

  1. 在 Amazon S3; 控制台中,选择您在第 1 步中创建的存储桶。

  2. 选择权限存储桶策略

  3. Bucket Policy Editor (存储桶策略编辑器) 中,添加以下策略之一。将 my-exported-logs 更改为 S3 存储桶的名称,将 random-string 更改为随机生成的字符串。请务必为 Principal (委托人) 指定正确的区域终端节点。

    • 如果存储桶位于您的账户中,请添加以下策略。

      { "Version": "2012-10-17", "Statement": [ { "Action": "s3:GetBucketAcl", "Effect": "Allow", "Resource": "arn:aws:s3:::my-exported-logs", "Principal": { "Service": "logs.us-west-2.amazonaws.com" } }, { "Action": "s3:PutObject" , "Effect": "Allow", "Resource": "arn:aws:s3:::my-exported-logs/random-string/*", "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control" } }, "Principal": { "Service": "logs.us-west-2.amazonaws.com" } } ] }
    • 如果存储桶位于其他账户中,请改用以下策略。它使用您在上一步中创建的 IAM 用户来包括附加语句。

      { "Version": "2012-10-17", "Statement": [ { "Action": "s3:GetBucketAcl", "Effect": "Allow", "Resource": "arn:aws:s3:::my-exported-logs", "Principal": { "Service": "logs.us-west-2.amazonaws.com" } }, { "Action": "s3:PutObject" , "Effect": "Allow", "Resource": "arn:aws:s3:::my-exported-logs/random-string/*", "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control" } }, "Principal": { "Service": "logs.us-west-2.amazonaws.com" } }, { "Action": "s3:PutObject" , "Effect": "Allow", "Resource": "arn:aws:s3:::my-exported-logs/random-string/*", "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control" } }, "Principal": { "AWS": "arn:aws:iam::SendingAccountID:user/CWLExportUser" } } ] }
  4. 选择 Save,将您刚添加的策略设置为存储桶上的访问策略。此策略可让 CloudWatch Logs 将日志数据导出至您的 Amazon S3 存储桶中。存储桶拥有者对所有导出的对象拥有完全权限。

    警告

    如果现有存储桶已附加一个或多个策略,请将 CloudWatch Logs 访问的语句添加到这些策略。我们建议您评估生成的权限集,确保它们适合访问存储桶的用户。

第 4 步:创建导出任务

在本步骤中,您可创建导出任务以便从日志组中导出日志。

使用 CloudWatch 控制台将数据导出到 Amazon S3

  1. 以您在 Step 2: Create an IAM User with Full Access to Amazon S3 and CloudWatch Logs (步骤 2:创建对 S3 和 CWL 具有完全访问权限的 IAM 用户) 中创建的 IAM 用户身份登录。

  2. 通过以下网址打开 CloudWatch 控制台:https://console.amazonaws.cn/cloudwatch/

  3. 在导航窗格中,选择 Logs

  4. Log Groups (日志组) 屏幕上,选择日志组旁边的按钮,然后依次选择 Log Groups (操作)Export data to Amazon S3 (将数据导出到 S3)

  5. 将数据导出到 Amazon S3 屏幕的确定要导出的数据下,使用设置要导出的数据的时间范围。

  6. 如果日志组有多个日志流,您可以提供一个日志流前缀,将日志组数据限定为特定流。选择 Advanced (高级),然后为 Stream prefix (流前缀) 输入日志流前缀。

  7. 选择 S3 存储桶中,选择与 Amazon S3 存储桶关联的账户。

  8. S3 存储桶名称选择 Amazon S3 存储桶。

  9. 选择 Advanced (高级),然后为 S3 Bucket prefix (S3 存储桶前缀) 输入存储桶策略中指定的随机生成字符串。

  10. 选择导出数据,将日志数据导出到 Amazon S3。

  11. 要查看您导出到 Amazon S3 的日志数据的状态,依次选择 Actions (操作)View all exports to Amazon S3 (查看导出至 S3 的所有内容)