Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
如何使用 CloudWatch 控制台创建、配置 Kinesis 订阅筛选条件并对其进行错误排除?
我想要使用 Amazon CloudWatch 控制台创建订阅筛选条件,用于将我的 Amazon CloudWatch Logs 流式传输到 Amazon Kinesis。
简短描述
使用订阅筛选条件将 CloudWatch 日志近乎实时地发送到同一个账户,或者发送到跨账户 Kinesis 或 Amazon Kinesis Data Firehose 目标。CloudWatch Logs 控制台支持目标和设置配置。
有关如何使用筛选模式语法来配置订阅筛选条件的信息,请参阅 筛选条件和模式语法。
解决方法
在同一账户或当前账户中为 Kinesis 数据流配置订阅
**注意:**CloudWatch 日志组的 AWS 区域与 Kinesis 目标必须相同。
在创建订阅之前,请完成以下操作:
- 如果尚未 创建 Kinesis 流,那就创建一个。
- 创建 AWS Identity and Access Management(IAM)角色,应具有相应的信任策略和权限。
要创建 自定义 IAM 角色 和角色策略,请完成以下步骤:
-
使用具有管理员权限的用户打开 IAM 控制台。
-
在导航窗格中,选择策略。
-
在内容窗格中,选择创建策略。
-
在 JSON 选项卡中输入以下角色权限策略文档。用您自己的详细信息替换REGION、ACCOUNT_ID和STREAM_NAME:
{ "Statement": \[{ "Effect": "Allow", "Action": "kinesis:PutRecord", "Resource": "arn:aws:kinesis:REGION:ACCOUNT\_ID:stream/STREAM\_NAME" }\] }
5. 打开 IAM 控制台。
6. 在导航窗格中,选择角色,然后选择创建角色。
-
选择自定义信任策略角色类型。
-
在自定义信任策略部分中,输入或粘贴角色的自定义 信任策略。请参阅以下信任策略示例:
{ "Statement": { "Effect": "Allow", "Principal": { "Service": "logs.region.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringLike": { "aws:SourceArn": "arn:aws:logs:REGION:ACCOUNT\_ID:\*" } } } }
9. 选择下一步。
-
选择您在第 4 步中创建的自定义 IAM 策略。
-
选择下一步,然后选择创建角色。
创建 Kinesis 流和 IAM 角色后,创建订阅筛选条件:
-
打开 CloudWatch 控制台。
-
选择日志组。
-
依次选择操作和订阅筛选条件。
-
要配置目标,请选择创建 Kinesis 订阅筛选条件。
-
选择当前账户。
-
从下拉列表中选择您的 Kinesis 数据流。
-
选择您创建的 IAM 角色。
-
选择**分配方法:
按日志流:**这验证了下游使用者可以按日志流聚合日志事件,但效率可能较低。这种方法还可能产生更高的流媒体成本,因为它需要更多的分片。
**随机:**这会将负载分布在 Kinesis 流分片上,但下游使用者无法通过日志流聚合日志事件。 -
配置日志格式和筛选条件:
选择日志格式。对于 Amazon VPC、CloudTrail 或 Lambda 发布的日志,其格式可以是 Amazon VPC Flow Logs、AWS CloudTrail 或 AWS Lambda。或者,您可以根据传入的日志事件选择 JSON、空格分隔或其他。
在订阅筛选模式部分定义 筛选模式。
输入订阅筛选条件的名称。 -
使用现有的日志事件数据验证您的模式。
-
验证后,选择开始流式传输。
-
(可选)确认日志事件流以验证您的数据流正常。
跨账户 Kinesis 数据流目标的配置
**注意:**如果您在运行 AWS 命令行界面(AWS CLI)命令时收到错误,请 确保您使用的是最新版本的 AWS CLI。
您可以将 CloudWatch Logs 事件传送到不同 AWS 账户和区域中的 Kinesis 数据流。为此,请设置与订阅共享的跨账户日志数据并指定区域。
在以下示例中,us-east-1 区域中的 CloudWatch 日志被传输到 us-west-2 中另一个 AWS 用户的 Kinesis 数据流。日志数据接收者的账户 ID 为 222222222222,日志数据发送者的账户 ID 为 111111111111。
在接收者账户 222222222222 中创建目标数据流
使用 IAM 角色和信任策略,在数据接收者账户中的 Kinesis 中 创建目标 数据流。
在源账户 111111111111 中创建订阅筛选条件
要创建订阅筛选条件,请完成以下步骤:
-
选择日志组。
-
依次选择操作和订阅筛选条件。
-
要选择目标,请选择创建,然后选择创建 Kinesis 订阅筛选条件。
-
选择其他账户。
-
对于跨账户 Kinesis 或 Kinesis 数据 Firehose 目标,请提供目标 ARN。
-
选择分配方法:
**按日志流:**这验证了下游使用者可以按日志流聚合日志事件,但效率可能较低。这种方法还可能产生更高的流媒体成本,因为它需要更多的分片。
**随机:**这会将负载分布在 Kinesis 流分片上,但下游使用者无法通过日志流聚合日志事件。 -
配置日志格式和筛选条件:
选择日志格式。对于 Amazon VPC、CloudTrail 或 Lambda 发布的日志,其格式可以是 Amazon VPC Flow Logs、CloudTrail 或 AWS Lambda。或者,您可以根据传入的日志事件选择 JSON、空格分隔或其他。
在订阅筛选模式部分定义 筛选模式。
输入订阅筛选条件的名称。 -
使用现有的日志事件数据验证您的模式。
-
验证后,选择开始流式传输。
-
(可选)确认流日志事件以验证您的数据流正常。
故障排除
- 确保您的 Kinesis 流处于 活动 状态。您可以在 Kinesis 控制台上查看流,也可以使用 DescribeStream API 调用。
- 验证 CloudWatch 日志组与 Kinesis 数据流区域相同。
- 确保有一个 IAM 角色拥有 logs.yourregion.amazonaws.com 的信任权限并允许该权限 kinesis:putrecords。
- 验证 IAM 策略中的区域和资源是正确的。
- 在为 Kinesis 数据流配置订阅筛选条件时,请确保没有选择 Kinesis Firehose。
- 开始流式传输后,请查看 订阅筛选指标,确认筛选模式有效且与传入的日志事件相匹配。查看以下指标: **ForwardedBytes:**转发到订阅目标的日志事件量(以压缩字节为单位)。**ForwardedLogEvents:**转发到订阅目标的日志事件的数量。
- 核对将日志事件流式传输到目标时未出错。查看以下指标: **DeliveryErrors:**CloudWatch Logs 在将数据转发到订阅目标时收到错误的日志事件的数量。**DeliveryThrottling:**表明 CloudWatch Logs 在将数据转发到订阅目标时受到限制的日志事件的数量。
- 如果您有专用 Kinesis 流,请 查看该流的指标 确认功能。
- 有关跨账户日志记录的问题,请参阅 对 CloudWatch 跨账户设置问题进行故障排除。
- 语言
- 中文 (简体)
