如何将数据从 CloudWatch Logs 流式传输到另一个账户中的基于 VPC 的 Amazon OpenSearch Service 集群?
上次更新日期:2022 年 6 月 23 日
我尝试将数据从 Amazon CloudWatch Logs 流式传输到另一个账户中使用虚拟私有云(VPC)的 Amazon OpenSearch Service 集群。但是,我收到了“Enter a valid Amazon OpenSearch Service Endpoint”(请输入有效的 Amazon Elasticsearch Service 端点)错误消息。如何解决此错误?
简短描述
要将数据从 CloudWatch Logs 流式传输到其他账户中的 OpenSearch Service 集群,请执行以下步骤:
1. 在账户 A 中设置 CloudWatch Logs。
2. 在账户 A 中配置 AWS Lambda。
3. 配置账户之间的Amazon Virtual Private Cloud(Amazon VPC)对等互连。
解决方法
在账户 A 中设置 CloudWatch Logs
1. 在账户 A 中打开 CloudWatch Logs 控制台,然后选择您的日志组。
2. 选择 Actions(操作)。
3. 选择 Create OpenSearch subscription(创建 OpenSearch 订阅)筛选条件。
4. 对于 Select Account(选择账户)选项,选择 This account(此账户)。
5. 在 OpenSearch Service 集群下拉列表中,为账户 A 选择一个现有集群。
6. 选择有权调用选定的 OpenSearch Service 集群的 Lambda IAM Execution Role(Lambda IAM 执行角色)。
7. 将 AWSLambdaVPCAccessExecutionRole 策略附加到您的角色。
8. 在 Configure log format and filters(配置日志格式筛选条件),选择 Log Format(日志格式)和 Subscription Filter Pattern(订阅筛选条件模式)。
9. 选择 Next。
10. 输入 Subscription filter(订阅筛选条件)名称,然后选择 Start Streaming(开始流式传输)。有关流式传输的更多信息,请参阅将 CloudWatch Logs 数据流式传输到 Amazon OpenSearch Service。
在账户 A 中配置 Lambda
1. 在账户 A 中,打开 Lambda 控制台。
2. 选择您的 Lambda 函数。
3. 在函数代码中,更新账户 B 中 OpenSearch Service 集群的端点变量。此更新允许 Lambda 函数将数据发送到账户 B 中的 OpenSearch Service 域。
4. 选择 Configuration(配置)。
5. 选择 VPC。
6. 在 VPC 下,选择 Edit(编辑)。
7. 选择您的 VPC、子网和安全组。
注意:此选择可确保 Lambda 函数在 VPC 内运行,使用 VPC 路由将数据发送回 OpenSearch Service 域。有关 Amazon Virtual Private Cloud (Amazon VPC) 配置的更多信息,请参阅配置 Lambda 函数以访问 VPC 中的资源。
8. 选择 Save(保存)。
在账户之间配置 VPC 对等
1. 在账户 A 和账户 B 中打开 Amazon VPC 控制台。
注意:请确保您的 VPC 没有重叠的 CIDR 块。
2. 在两个自定义 VPC(Lambda 和 OpenSearch Service)之间创建 VPC 对等会话。此 VPC 对等会话允许 Lambda 将数据发送到您的 OpenSearch Service 域。有关 VPC 对等连接的更多信息,请参阅创建并接受 VPC 对等连接。
3. 更新两个 VPC 的路由表。有关路由表的更多信息,请参阅为 VPC 对等连接更新路由表。
4. 在账户 A 中,转到安全组。
5. 选择为在其内设置 Lambda 的子网分配的安全组。
注意:在本例中,“安全组”是指子网网络 ACL。
6. 添加入站规则以允许来自 OpenSearch Service 子网的流量。
7. 在账户 B 中,选择为在其内设置 OpenSearch Service 的子网分配的安全组。
8. 添加入站规则以允许来自 Lambda 子网的流量。
9. 在账户 B 中,打开 OpenSearch Service console(OpenSearch Service 控制台)。
10. 选择 Actions(操作)。
11. 选择 modify access policy(修改访问策略),然后附加以下策略:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<AWS Account A>:role/<Lambda Execution Role>"
},
"Action": "es:*",
"Resource": "arn:aws:es:us-east-1: ::<AWS
Account B>:domain/<OpenSearch Domain Name>/*"
}
]
}
此策略允许 OpenSearch Service 从 Lambda 函数的执行角色进行调用。
12. 在 Lambda console(Lambda 控制台)中,检查 Error count and success rate(错误计数和成功率)指标。此指标可验证是否已将日志成功传输到 OpenSearch Service。
13. 检查 OpenSearch Service 中的 Indexing rate(索引率)指标以确认是否已发送数据。现在,CloudWatch Logs 将跨 Amazon VPC 中的两个账户进行流式传输。