如何将数据从 CloudWatch Logs 流式传输到另一个账户中基于 VPC 的 Amazon Elasticsearch Service 集群?
上次更新时间:2020 年 6 月 16 日
我尝试将数据从 Amazon CloudWatch Logs 流式传输到另一个账户中使用 Virtual Private Cloud (VPC) 的 Amazon Elasticsearch Service (Amazon ES) 集群。但是,我收到“请输入有效的 Amazon Elasticsearch Service 终端节点”错误消息。如何解决此错误?
简短描述
要将数据从 CloudWatch Logs 流式传输到另一个账户中的 Elasticsearch 集群,请执行以下步骤:
1.在账户 A 中设置 CloudWatch Logs。
2.在账户 A 中配置 AWS Lambda。
3.在账户之间配置 VPC 对等。
解决方法
在账户 A 中设置 CloudWatch Logs
1.在账户 A 中打开 CloudWatch Logs 控制台,然后选择您的日志组。
2.选择流式传输到 Amazon Elasticsearch Service 操作。
3.对于选择账户选项,请选择此账户。
4.在 Elasticsearch 集群下拉列表中,为账户 A 选择一个现有集群。
5.选择有权调用选定的 Elasticsearch 集群的 Lambda IAM 执行角色。
6.将 AWSLambdaVPCAccessExecutionRole 策略附加到您的角色,然后选择下一步。
7.选择日志格式和订阅筛选模式。
8.选择下一步。
9.输入您的 Lambda 函数名称,然后选择开始流式传输。有关流式传输的更多信息,请参阅将 CloudWatch Logs 数据流式传输到 Amazon Elasticsearch Service。
在账户 A 中配置 Lambda
1.在账户 A 中,打开 Lambda 控制台。
2.选择您的 Lambda 函数。
3.在函数代码中,更新账户 B 中的 Elasticsearch 集群的终端节点变量。此更新允许 Lambda 函数将数据发送到账户 B 中的 Amazon ES 域。
注意:您可以粘贴账户 B 的公有 DNS 名称。请确保从 URL 终端节点中删除“https://”。
4.选择自定义 VPC。
5.选择保存。此选择可确保 Lambda 函数在 VPC 内运行,使用 VPC 路由将数据发送回 Amazon ES 域。有关 Amazon Virtual Private Cloud (Amazon VPC) 配置的更多信息,请参阅配置 Lambda 函数以访问 VPC 中的资源。
在账户之间配置 VPC 对等
1.在账户 A 和账户 B 中打开 Amazon VPC 控制台。
注意:请确保您的 VPC 没有重叠的 CIDR 块。
2.在两个自定义 VPC(Lambda 和 Amazon ES)之间创建 VPC 对等会话。此 VPC 对等会话允许 Lambda 将数据发送到您的 Amazon ES 域。有关 VPC 对等连接的更多信息,请参阅创建并接受 VPC 对等连接。
3. 更新两个 VPC 的路由表。有关路由表的更多信息,请参阅为 VPC 对等连接更新路由表。
4.在账户 A 中,转到安全组。
5.选择为在其内设置 Lambda 的子网分配的安全组。
6.添加入站规则以允许来自 Amazon ES 子网的流量。
7.在账户 B 中,选择为在其内设置 Amazon ES 的子网分配的安全组。
8.添加入站规则以允许来自 Lambda 子网的流量。
9.在账户 B 中,打开 Amazon ES 控制台。
10.选择操作。
11.选择修改访问策略,然后附加以下策略:
{
"Version": "2012-10-17",
"Statement":
}
此策略允许 Amazon ES 从 Lambda 函数的执行角色进行调用。
12.在 Lambda 控制台中,检查错误计数和成功率指标。此指标可验证是否已将日志成功传输到 Amazon ES。
13.检查 Amazon ES 中的索引率指标以确认是否已发送数据。现在,CloudWatch Logs 将跨 Amazon VPC 中的两个账户进行流式传输。