in source/src/main/java/com/amazonaws/comprehend/esproxy/lambda/utils/kibana/KibanaUploader.java [94:128]
public void uploadKibanaDashboard(@NonNull Map<String, ComprehendConfiguration> configMap, @NonNull LambdaLogger logger) {
Set<String> indexNameSet = new HashSet<>();
List<Future> futureList = new ArrayList<>();
try {
// Upload markdown visualizations
futureList.add(submitMarkdownRequest(logger));
for (ComprehendConfiguration configuration : configMap.values()) {
String indexName = configuration.getIndexName();
String fieldName = configuration.getFieldName();
Set<ComprehendOperationEnum> operations = configuration.getComprehendOperations();
// Upload index pattern to Kibana
if (!indexNameSet.contains(indexName)) {
futureList.add(submitIndexPatternRequest(indexName, logger));
indexNameSet.add(indexName);
}
// Upload visualization
futureList.add(submitVisualRequest(indexName, fieldName, operations, logger));
// Upload Comprehend Dashboard
futureList.add(submitDashboardRequest(indexName, fieldName, logger));
}
// Check whether all tasks have completed execution, or until timeout occurs
for (Future future : futureList) {
future.get(Constants.KIBANA_UPLOAD_TIMEOUT_SECONDS, TimeUnit.SECONDS);
}
} catch (TimeoutException e) {
logger.log("Upload Dashboard timed out, some dashboard/visualization may not be uploaded. " + e);
} catch (Exception e) {
logger.log("Upload Dashboard failed with Exception: " + e);
}
}