我能够通过 Lambda 函数使用一些变通方法以及使用 Kannaiyan 提供的响应来解决该问题。
我通过控制台创建了对 ES 的订阅,然后取消订阅,并修改了 Lambda 函数默认代码。
我声明了两个 Elasticsearch 端点:
var endpoint1 = '<ELASTICSEARCH ENDPOINT 1>';
var endpoint2 = '<ELASTICSEARCH ENDPOINT 2>';
然后,声明一个名为“endpoint”的数组,其中包含端点 1 和端点 2 的内容:
var endpoint = [endpoint1, endpoint2];
我修改了调用“buildRequest”函数的“post”函数,然后引用“endpoint”......
function post(body, callback) {
for (index = 0; index < endpoint.length; ++index) {
var requestParams = buildRequest(endpoint[index], body);
...
因此,每次调用“post”函数时,它都会在端点数组中循环。
然后,我修改了负责构建请求的 buildRequest 函数。这个函数默认调用端点变量,但由于“post”函数循环遍历数组,我将“endpoint”重命名为“endpoint_xy”以确保它不调用全局变量,而是将变量输入到函数中:
function buildRequest(endpoint_xy, body) {
var endpointParts = endpoint_xy.match(/^([^\.]+)\.?([^\.]*)\.?([^\.]*)\.amazonaws\.com$/);
...
最后,我使用了 Kannaiyan 提供的关于使用 AWS CLI 实现对日志的订阅的响应,但更正了一些变量:
aws logs put-subscription-filter \
--log-group-name <LOG GROUP NAME> \
--filter-name <FILTER NAME>
--filter-pattern <FILTER PATTERN>
--destination-arn <LAMBDA FUNCTION ARN>
我暂时保持过滤器完全打开,但现在将过滤器直接编码到 Lambda 函数中,就像 dashmug 建议的那样。至少我可以将一个日志拆分为两个 ES 集群。
谢谢大家!