개요
AWS OpenSearch(구 Elasticsearch)는 대규모 로그 및 데이터 검색을 효율적으로 수행할 수 있는 강력한 분산 검색 엔진입니다. 기존 Elasticsearch와의 차이점, Node.js를 활용한 데이터 저장 및 검색 방법, 그리고 AWS Lambda와 S3를 연계한 로그 분석 아키텍처를 살펴보겠습니다.
1. OpenSearch 개념과 기존 Elasticsearch와의 차이
1.1 OpenSearch란?
OpenSearch는 Amazon이 오픈소스로 제공하는 검색 및 분석 엔진으로, 기존 Elasticsearch 7.10 버전을 기반으로 개발되었습니다.
1.2 Elasticsearch와 OpenSearch 차이점
특징OpenSearchElasticsearch
라이선스 | Apache 2.0 (완전 오픈소스) | Elastic License (제한적) |
지원 버전 | OpenSearch 1.x, 2.x | Elasticsearch 7.x, 8.x |
AWS 서비스 연동 | 완전 지원 | 제한적 |
보안 기능 | 기본 내장 | 유료 X-Pack 필요 |
클러스터 관리 | 개선된 Auto-Tune 기능 | 기본 설정 유지 |
AWS 환경에서는 OpenSearch를 사용하는 것이 라이선스 및 관리 측면에서 유리합니다.
2. Node.js 기반 OpenSearch 데이터 저장 및 검색 예제
2.1 OpenSearch 클라이언트 설정
먼저, @opensearch-project/opensearch 라이브러리를 설치합니다.
npm install @opensearch-project/opensearch
이후, Node.js에서 OpenSearch 클라이언트를 설정합니다.
const { Client } = require('@opensearch-project/opensearch');
const client = new Client({
node: 'https://your-opensearch-domain.com',
auth: {
username: 'admin',
password: 'your-password'
}
});
2.2 데이터 색인(Indexing)
async function indexDocument() {
const response = await client.index({
index: 'logs',
body: {
timestamp: new Date().toISOString(),
level: 'INFO',
message: 'Lambda function executed successfully'
}
});
console.log(response);
}
indexDocument();
2.3 데이터 검색(Querying)
async function searchLogs() {
const response = await client.search({
index: 'logs',
body: {
query: {
match: { message: 'Lambda' }
}
}
});
console.log(response.body.hits.hits);
}
searchLogs();
3. AWS Lambda + OpenSearch + S3를 활용한 로그 분석 아키텍처
3.1 아키텍처 개요
- AWS Lambda: 로그 데이터를 S3에서 가져와 OpenSearch에 저장
- S3: 원본 로그 파일 저장소
- OpenSearch: 검색 및 분석 수행
3.2 Lambda 함수에서 OpenSearch로 데이터 적재
const AWS = require('aws-sdk');
const { Client } = require('@opensearch-project/opensearch');
const s3 = new AWS.S3();
const client = new Client({ node: 'https://your-opensearch-domain.com' });
exports.handler = async (event) => {
for (const record of event.Records) {
const bucket = record.s3.bucket.name;
const key = record.s3.object.key;
const data = await s3.getObject({ Bucket: bucket, Key: key }).promise();
const logEntries = data.Body.toString('utf-8').split('\n');
for (const log of logEntries) {
await client.index({ index: 'logs', body: { message: log, timestamp: new Date() } });
}
}
};
이 Lambda 함수는 S3에 새로운 로그 파일이 생성될 때 자동으로 실행되어 데이터를 OpenSearch에 저장합니다.
결론
AWS OpenSearch를 활용하면 대규모 로그 데이터를 효율적으로 관리하고 검색할 수 있습니다. Node.js 기반으로 데이터를 저장하고 검색하는 방법을 익히고, AWS Lambda 및 S3를 연계하여 실시간 로그 분석 시스템을 구축할 수 있습니다.
핵심 요약
✅ OpenSearch와 기존 Elasticsearch의 차이 이해하기
✅ Node.js 기반 OpenSearch 클라이언트 활용법 익히기
✅ AWS Lambda + S3 + OpenSearch를 이용한 로그 분석 자동화 구현하기
이제 OpenSearch를 활용하여 강력한 데이터 검색 및 분석 시스템을 구축해보세요! 🚀
'개발 환경 > AWS' 카테고리의 다른 글
[AWS] AWS IAM 보안 최적화: 최소 권한 원칙과 정책 설계 가이드 (0) | 2025.03.05 |
---|---|
[AWS] AWS Step Functions을 이용한 서버리스 워크플로우 구축 (Lambda + S3 + DynamoDB) (0) | 2025.02.28 |
[AWS] EventBridge로 마이크로서비스 간 이벤트 기반 통신 구축하기 (0) | 2025.02.28 |
[AWS] AWS Lambda & API Gateway 성능 최적화: Cold Start와 Latency 줄이기 (0) | 2025.02.28 |
[AWS] Amazon SQS와 Lambda를 활용한 서버리스 데이터 처리 (Node.js) (0) | 2025.02.25 |
댓글