我想使用 Amazon CloudWatch Logs 来创建订阅筛选条件,以便将我的日志流式传输到 Amazon Kinesis 数据流。
解决方法
为同一账户中的 Kinesis 数据流配置订阅筛选条件
如果您还没有,请创建 Kinesis 数据流。
**注意:**CloudWatch 日志组的 AWS 区域与 Kinesis 数据流目标必须相同。
使用自定义信任策略创建 IAM 策略和角色
AWS Identity and Access Management (IAM) 角色必须拥有 logs.yourregion.amazonaws.com 的信任权限,并允许权限 kinesis:PutRecord。
使用自定义信任策略创建 IAM 角色。在 Custom trust policy(自定义信任策略)部分中,输入以下信任策略:
{ "Statement": {
"Effect": "Allow",
"Principal": {
"Service": "logs.region.amazonaws.com"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringLike": {
"aws:SourceArn": "arn:aws:logs:REGION:ACCOUNT_ID:*"
}
}
}
}
**注意:**请将 REGION 替换为您的区域,并将 ACCOUNT_ID 替换为您的 AWS 账户 ID。
在 Step 2: Add permissions(步骤 2:添加权限)部分中,选择 Edit(编辑),然后将以下策略语句添加到自定义策略中:
{ "Statement": { "Effect": "Allow",
"Action": "kinesis:PutRecord",
"Resource": "arn:aws:kinesis:REGION:ACCOUNT_ID:stream/STREAM_NAME"
}
}
**注意:**请将 REGION 替换为您的区域,将 ACCOUNT_ID 替换为您的 AWS 账户 ID,并将 STREAM_NAME 替换为您的流名称。
上述策略特定于 Kinesis 数据流。有关 Amazon Data Firehose 权限的更多信息,请参阅授予对 Firehose 资源的访问权限。
创建订阅筛选条件
完成以下步骤:
- 打开 CloudWatch 控制台。
- 在导航窗格中,选择 Log Management(日志管理)。
- 选择您的日志组。
- 选择 Actions(操作),然后选择 Subscription Filters(订阅筛选条件)。
- 要配置目标,请选择 Create Kinesis subscription filter(创建 Kinesis 订阅筛选条件)。
- 选择 Current account(当前账户)。
- 从下拉列表中选择您的 Kinesis 数据流。
- 选择您创建的 IAM 角色。
- 选择分配方法。有关分配的更多信息,请参阅概念。
- 在 Subscription filter pattern(订阅筛选模式)部分中,定义 filter pattern(筛选模式)。
- 为订阅筛选条件输入名称。
- 使用现有的日志事件数据验证您的模式。
- 选择 Start Streaming(开始流式传输)。
要验证您的数据流是否有效,请查看以下订阅筛选条件指标:
- ForwardedBytes: 转发到订阅目标的日志事件量(以压缩字节为单位)。
- ForwardedLogEvents: 转发到订阅目标的日志事件的数量。
要检查将日志事件流式传输到目标时是否出现错误,请查看以下指标:
- DeliveryErrors: CloudWatch Logs 在将数据转发到订阅目标时收到错误的日志事件的数量。
- DeliveryThrottling: 显示 CloudWatch Logs 在将数据转发到订阅目标时遭遇节流的日志事件的数量。
为其他账户中的 Kinesis 数据流配置订阅筛选条件
**注意:**如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI。
创建目标
在数据接收者的账户中,创建一个目标。
创建订阅筛选条件
在源账户中,完成以下步骤:
- 如果您在 AWS Organizations 中使用组织,则创建一个 IAM 角色。否则,请继续执行步骤 2。
- 添加或验证跨账户目标的 IAM 权限。
- 创建日志组以向CloudWatch Logs 发送事件。
- 创建订阅筛选条件。
要验证您的数据流是否有效,请查看以下订阅筛选条件指标:
- ForwardedBytes: 转发到订阅目标的日志事件量(以压缩字节为单位)。
- ForwardedLogEvents: 转发到订阅目标的日志事件的数量。
要检查将日志事件流式传输到目标时是否出现错误,请查看以下指标:
- DeliveryErrors: CloudWatch Logs 在将数据转发到订阅目标时收到错误的日志事件的数量。
- DeliveryThrottling: 显示 CloudWatch Logs 在将数据转发到订阅目标时遭遇节流的日志事件的数量。
如果您有专用 Kinesis 数据流,请检查数据流指标以确认其功能。
有关跨账户日志记录的问题,请参阅对 CloudWatch 跨账户设置问题进行故障排除。
相关信息
创建 IAM 策略和用户
使用 Amazon Kinesis 数据流进行跨账户跨 AWS 区域的日志数据共享