使用控制台将日志数据导出到 Amazon S3 - Amazon CloudWatch Logs
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

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

支持将日志数据导出到由 Amazon KMS 加密的 S3 桶。

步骤 1:创建 Amazon S3 存储桶

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

注意

S3 桶必须与要导出的日志数据位于同一区域。CloudWatch Logs 不支持将数据导出到其他区域中的 S3 桶。

创建 S3 存储桶
  1. 通过以下网址打开 Amazon S3 控制台:https://console.aws.amazon.com/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.aws.amazon.com/iam/

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

  3. 输入用户名,例如 CWLExportUser

  4. 同时选择 Programmatic access(以编程方式访问)Amazon Web Services Management Console access(控制台访问)

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

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

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

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

步骤 3:在 S3 桶上设置权限

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

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

重要

为了使导出到 S3 桶更加安全,我们现在要求您指定允许将日志数据导出到 S3 桶的源账户列表。在下面的示例中,这些账户 ID 的列表在 aws:SourceAccount 键中指定。

建议您还包括创建 S3 桶的账户的账户 ID,以允许在同一账户内导出。

设置 Amazon S3 存储桶上的权限
  1. 在 Amazon S3 控制台中,选择您在第 1 步中创建的存储桶。

  2. 选择 Permissions(权限)Bucket policy(存储桶策略)

  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", "aws:SourceAccount": [ "AccountId1", "AccountId2", ... ] } }, "Principal": { "Service": "logs.us-west-2.amazonaws.com" } } ] }
  4. 选择 Save,将您刚添加的策略设置为存储桶上的访问策略。此策略可让 CloudWatch Logs 将日志数据导出到您的 S3 桶中。存储桶拥有者对所有导出的对象拥有完全权限。

    警告

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

(可选)步骤 4:导出到使用 SSE-KMS 加密的桶

仅当您要导出到使用服务器端通过 Amazon KMS keys 加密的 S3 桶时,才需要执行此步骤。这种加密称为 SSE-KMS。

导出到使用 SSE-KMS 加密的桶
  1. 在 Amazon KMShttps://console.aws.amazon.com/kms 打开 控制台。

  2. 要更改 Amazon Web Services 区域,请使用页面右上角的 Region selector(区域选择器)。

  3. 在左侧导航栏中,选择 Customer managed keys(客户托管密钥)。

    选择 Create Key(创建密钥)。

  4. 对于 Key type (密钥类型),选择 Symmetric (对称)

  5. 对于 Key usage(密钥用法),选择 Encrypt and decrypt(加密和解密),然后选择 Next(下一步)。

  6. Add labels(添加标签)下,输入密钥的别名,并添加描述或标签(可选)。然后选择下一步

  7. Key administrators(密钥管理员)下,选择可以管理此密钥的人员,然后选择 Next(下一步)。

  8. Define key usage permissions(定义密钥使用权限)下,不进行任何更改并选择 Next(下一步)。

  9. 检查设置,然后选择 Finish(完成)。

  10. 返回 Customer managed keys(客户托管密钥)页面,选择您刚刚创建的密钥的名称。

  11. 选择 Key policy(密钥策略)选项卡,然后选择 Switch to policy view(切换到策略视图)。

  12. Key policy(密钥策略)部分,选择 Edit(编辑)。

  13. 将以下语句添加到密钥策略语句列表。执行此操作时,将 Region 替换为日志的区域,将 account-ARN 替换为拥有 KMS 密钥的账户的 ARN。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "Allow CWL Service Principal usage", "Effect": "Allow", "Principal": { "Service": "logs.Region.amazonaws.com" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "*" }, { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": "account-ARN" }, "Action": [ "kms:GetKeyPolicy*", "kms:PutKeyPolicy*", "kms:DescribeKey*", "kms:CreateAlias*", "kms:ScheduleKeyDeletion*", "kms:Decrypt" ], "Resource": "*" } ] }
  14. 选择 Save changes(保存更改)。

  15. 通过以下网址打开 Amazon S3 控制台:https://console.aws.amazon.com/s3/

  16. 找到您在 步骤 1:创建 S3 存储桶 中创建的桶并选择桶名称。

  17. 选择 Properties(属性)选项卡。然后,在 Default Encryption(默认加密)下,选择 Edit(编辑)。

  18. Server-side Encryption(服务器端加密)下,选择 Enable(启用)。

  19. Encryption type (加密类型) 下,请选择 Amazon Key Management Service key (SSE-KMS) (Amazon Key Management Service 密钥(SSE-KMS))

  20. 选择 Choose from your Amazon KMS keys(从 Amazon KMS 密钥中选择),然后找到您创建的密钥。

  21. 对于 Bucket Key(桶密钥),选择 Enable(启用)。

  22. 选择 Save changes(保存更改)。

步骤 5:创建导出任务

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

使用 CloudWatch 控制台将数据导出到 Amazon S3
  1. 以您在步骤 2:创建对 Amazon S3 和 CloudWatch Logs 具有完全访问权限的 IAM 用户中创建的 IAM 用户身份登录。

  2. 通过以下网址打开 CloudWatch 控制台:https://console.aws.amazon.com/cloudwatch/

  3. 在导航窗格中,选择 Log groups(日志组)

  4. Log Groups(日志组)屏幕上,选择日志组的名称。

  5. 选择 Actions(操作)Export data to Amazon S3(将数据导出到 Amazon S3)

  6. Export data to Amazon S3(将数据导出到 Amazon S3)屏幕的 Define data export(定义数据导出)下,使用 From(从)To(至)设置要导出的数据的时间范围。

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

  8. Choose S3 bucket(选择 S3 桶)下,选择与 S3 桶关联的账户。

  9. 对于 S3 bucket name(S3 桶名称),选择 S3 桶。

  10. 对于 S3 Bucket prefix(S3 存储桶前缀),输入在存储桶策略中指定的随机生成的字符串。

  11. 选择 Export(导出),将日志数据导出到 Amazon S3。

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