如何将日志数据从 CloudWatch Logs 流式传输到跨区域和跨账户 Kinesis 数据流?

1 分钟阅读
0

我需要将来自 Amazon CloudWatch Logs 的日志数据发送到其他 AWS 区域的另一个 AWS 账户的 Amazon Kinesis 数据流。

解决方法

要向不同 AWS 账户和区域中的 Amazon Kinesis 数据流传输 CloudWatch 日志事件,请设置通过订阅进行跨账户日志数据共享。然后,要指定 AWS 区域,请完成以下步骤:

  1. 使用 AWS Identity and Access Management (IAM) 角色和信任策略,在数据接收者账户的 Kinesis 中创建目标数据流

    要创建数据流,请在使用 create-stream 命令时指定 --region。以下命令示例在 us-west-2 中创建了数据流 YourStreamName

    $ aws kinesis create-stream --stream-name "YourStreamName" --shard-count 1 --region us-west-2
  2. 在此示例中,CloudWatch 在 us-east-1 区域登录,AWS 账户 ID 为 111111111111。然后,CloudWatch 在 us-west-2 中登录另一个 AWS 用户的 Kinesis 数据流,AWS 账户 ID 为 999999999999。

    要检查 StreamDescription.StreamStatus 属性,请在使用 describe-stream 命令时指定 --region。以下命令示例会检查 us-west-2 中的流 YourStreamName

    $ kinesis describe-stream --stream-name "YourStreamName" --region us-west-2

    创建 CloudWatch Logs 目标,请使用 put-destination 命令。然后将 --role-arn--region 设置为与源CloudWatch 日志相同的区域。在以下示例中,此命令在 us-east-1 的收件人账户 999999999999 中创建日志目标:

    >aws logs put-destination \
        --destination-name "testDestination" \
        --target-arn "arn:aws:kinesis:us-west-2:222222222222:stream/YourStreamName" \  
        --role-arn "arn:aws:iam::222222222222:role/YourIAMRoleName" --region us-east-1
  3. 在您的发件人账户中创建订阅筛选器。例如,AWS 账户 ID 为 999999999999。

  4. (可选)要检查数据流是否工作,请验证日志事件流

注意: 如果在运行 AWS 命令行界面 (AWS CLI) 命令时遇到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI

相关信息

角色术语和概念

AWS 官方
AWS 官方已更新 8 个月前