자습서: Amazon OpenSearch Ingestion을 사용하여 도메인으로 데이터 수집 - 아마존 OpenSearch 서비스

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

자습서: Amazon OpenSearch Ingestion을 사용하여 도메인으로 데이터 수집

이 자습서에서는 Amazon OpenSearch Ingestion을 사용하여 간단한 파이프라인을 구성하고 Amazon OpenSearch 서비스 도메인으로 데이터를 수집하는 방법을 보여줍니다. 파이프라인은 OpenSearch Ingestion이 프로비저닝 및 관리하는 리소스입니다. 파이프라인을 사용하여 Service의 다운스트림 분석 및 시각화를 위해 데이터를 필터링, 강화, 변환, 정규화하고 집계할 수 있습니다. OpenSearch

이 튜토리얼은 파이프라인을 준비하여 빠르게 실행하기 위한 기본 단계를 안내합니다. 더 자세한 내용은 파이프라인 생성섹션을 참조하세요.

이 튜토리얼에서는 다음 단계를 완료합니다.

이 튜토리얼에서는 다음 리소스를 생성합니다.

  • ingestion-pipeline이라는 파이프라인

  • 파이프라인이 쓸 ingestion-domain이라는 도메인입니다.

  • 도메인에 쓰기 위해 파이프라인이 맡게 PipelineRole 되는 IAM 역할

필수 권한

이 자습서를 완료하려면 올바른 IAM 권한이 있어야 합니다. 사용자 또는 역할에는 다음과 같은 최소 권한이 포함된 연결된 자격 증명 기반 정책이 있어야 합니다. 이러한 권한을 가지고 파이프라인 역할(iam:Create)을 생성하고, 도메인(es:*)을 생성 또는 수정하고, 파이프라인(osis:*)으로 작업할 수 있습니다.

또한 파이프라인 역할 리소스에 대한 iam:PassRole 권한도 필요합니다. 이 권한을 사용하면 Ingestion에 파이프라인 역할을 전달하여 OpenSearch Ingestion이 도메인에 데이터를 쓸 수 있도록 할 수 있습니다.

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Resource":"*", "Action":[ "osis:*", "iam:Create*", "es:*" ] }, { "Resource":[ "arn:aws:iam::your-account-id:role/PipelineRole" ], "Effect":"Allow", "Action":[ "iam:PassRole" ] } ] }

1단계: 파이프라인 역할 생성

먼저 OpenSearch 서비스 도메인 싱크에 액세스하기 위해 파이프라인이 맡을 역할을 생성하세요. 이 튜토리얼의 뒷부분에서 파이프라인 구성에 이 역할을 포함시킬 것입니다.

파이프라인 역할을 생성하려면
  1. 에서 AWS Identity and Access Management 콘솔을 엽니다 https://console.aws.amazon.com/iamv2/.

  2. 정책을 선택한 후 정책 생성을 선택합니다.

  3. 이 튜토리얼에서는 다음 단계에서 생성할 ingestion-domain이라는 도메인으로 데이터를 수집해 보겠습니다. 다음 정책을 선택하여 JSON편집기에 붙여넣습니다. {your-account-id}(을)를 계정 ID로 바꾸고 필요한 경우 리전을 수정하세요.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "es:DescribeDomain", "Resource": "arn:aws:es:us-east-1:your-account-id:domain/ingestion-domain" }, { "Effect": "Allow", "Action": "es:ESHttp*", "Resource": "arn:aws:es:us-east-1:your-account-id:domain/ingestion-domain/*" } ] }

    기존 도메인에 데이터를 쓰려면 ingestion-domain(을)를 도메인 이름으로 바꾸세요.

    참고

    이 튜토리얼에서는 간단한 설명을 위해 매우 광범위한 액세스 정책을 사용합니다. 하지만 프로덕션 환경에서는 파이프라인 역할에 보다 제한적인 액세스 정책을 적용하는 것이 좋습니다. 필요한 최소 권한을 제공하는 예제 정책은 Amazon OpenSearch 통합 파이프라인에 도메인 액세스 권한 부여(을)를 참조하세요.

  4. 다음을 선택하고 다음을 선택한 후, 정책 이름을 파이프라인-정책으로 지정합니다.

  5. 정책 생성을 선택합니다.

  6. 다음으로, 역할을 생성하여 역할에 정책을 연결합니다. 역할을 선택한 다음 역할 생성을 선택합니다.

  7. 사용자 지정 신뢰 정책을 선택하고 다음 정책을 편집기에 붙여넣습니다.

    { "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":"osis-pipelines.amazonaws.com" }, "Action":"sts:AssumeRole" } ] }
  8. Next(다음)를 선택합니다. 그런 다음 방금 생성한 파이프라인-정책을 검색하여 선택합니다.

  9. 다음을 선택하고 역할 이름을 지정합니다 PipelineRole.

  10. 역할 생성을 선택합니다.

역할의 Amazon 리소스 이름 (ARN) 을 기억하십시오 (예:arn:aws:iam::your-account-id:role/PipelineRole). 파이프라인을 생성할 때 사용합니다.

2단계: 도메인 생성

다음으로 데이터를 수집할 ingestion-domain이라는 도메인을 생성합니다.

https://console.aws.amazon.com/aos/집에서 Amazon OpenSearch Service 콘솔로 이동하여 다음 요구 사항을 충족하는 도메인을 생성합니다.

  • OpenSearch 1.0 이상 또는 엘라스틱서치 7.4 이상을 실행 중입니다.

  • 퍼블릭 액세스 사용

  • 세분화된 액세스 제어 사용 금지

참고

이러한 요구 사항은 이 튜토리얼에서 단순성을 보장하기 위한 것입니다. 프로덕션 환경에서는 VPC 액세스 권한이 있는 도메인을 구성하거나 세분화된 액세스 제어를 사용할 수 있습니다. 세분화된 액세스 제어를 사용하려면 파이프라인 역할 매핑을 참조하십시오.

도메인에는 이전 단계에서 생성한 권한을 PipelineRole에 부여하는 액세스 정책이 있어야 합니다. 파이프라인은 서비스 도메인 싱크로 데이터를 전송하기 위해 이 역할 (파이프라인 구성에서는 sts_role_arn이라는 이름) 을 맡습니다. OpenSearch

도메인에 대한 PipelineRole 액세스 권한을 부여하는 다음과 같은 도메인 수준 액세스 정책이 도메인에 적용되었는지 확인하세요. 을 리전으로 바꾸고 를 계정 ID로 바꿉니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::your-account-id:role/PipelineRole" }, "Action": "es:*", "Resource": "arn:aws:es:us-east-1:your-account-id:domain/ingestion-domain/*" } ] }

도메인 수준 액세스 정책을 만드는 방법에 대한 자세한 내용은 리소스 기반 액세스 정책을 참조하세요.

이미 도메인을 생성한 경우 기존의 액세스 정책을 수정하여 위의 권한을 PipelineRole에 제공하세요.

참고

도메인 엔드포인트(예:https://search-ingestion-domain.us-east-1.es.amazonaws.com)를 기억하세요. 이는 다음 단계에서 파이프라인을 구성하는 데 사용합니다.

3단계: 파이프라인 생성

이제 적절한 액세스 권한을 가진 컬렉션과 역할이 생겼으니 파이프라인을 생성할 수 있습니다.

파이프라인을 생성하려면
  1. Amazon OpenSearch Service 콘솔 내 왼쪽 탐색 창에서 파이프라인을 선택합니다.

  2. [파이프라인 생성]을 선택합니다.

  3. 빈 파이프라인을 선택한 다음, 블루프린트 선택을 선택합니다.

  4. 파이프라인의 이름을 ingestion-파이프라인으로 지정하고 용량 설정을 기본값으로 유지합니다.

  5. 이 튜토리얼에서는 HTTP 소스 플러그인을 사용하는 log-pipeline이라는 간단한 하위 파이프라인을 만들어 보겠습니다. 이 플러그인은 JSON 배열 형식의 로그 데이터를 받아들입니다. 단일 OpenSearch 서비스 도메인을 싱크로 지정하고 모든 데이터를 application_logs 인덱스로 수집합니다.

    파이프라인 구성에서 다음 YAML 구성을 편집기에 붙여넣습니다.

    version: "2" log-pipeline: source: http: path: "/${pipelineName}/test_ingestion_path" processor: - date: from_time_received: true destination: "@timestamp" sink: - opensearch: hosts: [ "https://search-ingestion-domain.us-east-1.es.amazonaws.com" ] index: "application_logs" aws: sts_role_arn: "arn:aws:iam::your-account-id:role/PipelineRole" region: "us-east-1"
    참고

    path옵션은 수집 URI 경로를 지정합니다. 이 옵션은 풀 기반 소스에 필요합니다. 자세한 내용은 수집 경로 지정 단원을 참조하십시오.

  6. 를 이전 hosts URL 섹션에서 생성 (또는 수정한) 도메인의 엔드포인트로 바꾸십시오. sts_role_arn파라미터를 of로 바꿉니다PipelineRole. ARN

  7. 파이프라인 검증을 선택하고 검증이 성공하는지 확인합니다.

  8. 이 튜토리얼에서는 간소화를 위해 파이프라인에 대한 공개 액세스를 구성해 보겠습니다. [네트워크(Network)]에서 [퍼블릭 액세스(Public access)]를 선택합니다.

    VPC액세스 구성에 대한 자세한 내용은 을 참조하십시오Amazon OpenSearch 통합 파이프라인에 대한 VPC 액세스 구성.

  9. 이 튜토리얼을 완료하는 동안 문제가 발생할 경우를 대비하여 로그 게시를 계속 활성화하세요. 자세한 내용은 파이프라인 모니터링 단원을 참조하십시오.

    다음 로그 그룹 이름을 /aws/vendedlogs/OpenSearchIngestion/ingestion-pipeline/audit-logs(으)로 지정하세요.

  10. Next(다음)를 선택합니다. 파이프라인 구성을 검토하고 파이프라인 생성을 선택합니다. 파이프라인이 활성화되려면 5~10분이 걸립니다.

4단계: 일부 샘플 데이터 수집

파이프라인이 Active 상태가 되면 데이터 수집을 시작할 수 있습니다. 서명 버전 4를 사용하여 파이프라인에 대한 모든 HTTP 요청에 서명해야 합니다. Postman 또는 awscurl과 같은 HTTP 도구를 사용하여 파이프라인에 일부 데이터를 전송하세요. 데이터를 도메인으로 직접 인덱싱하는 것과 마찬가지로, 파이프라인으로 데이터를 수집하려면 항상 IAM 역할 또는 액세스 키와 비밀 키가 필요합니다. IAM

참고

요청에 서명한 주체에게는 권한이 있어야 합니다. osis:Ingest IAM

먼저 파이프라인 설정 페이지에서 URL 인제스트를 가져오세요.

Pipeline settings page showing ingestion URL for an active ingestion pipeline.

그런 다음 일부 샘플 데이터를 수집하세요. 다음 샘플 요청은 awscurl을 사용하여 단일 로그 파일을 application_logs 인덱스에 보냅니다.

awscurl --service osis --region us-east-1 \ -X POST \ -H "Content-Type: application/json" \ -d '[{"time":"2014-08-11T11:40:13+00:00","remote_addr":"122.226.223.69","status":"404","request":"GET http://www.k2proxy.com//hello.html HTTP/1.1","http_user_agent":"Mozilla/4.0 (compatible; WOW64; SLCC2;)"}]' \ https://pipeline-endpoint.us-east-1.osis.amazonaws.com/log-pipeline/test_ingestion_path

200 OK 응답이 표시되어야 합니다. 인증 오류가 발생하는 경우 파이프라인이 있는 별도의 계정에서 데이터를 수집하고 있기 때문일 수 있습니다. 권한 문제 해결을 참조하세요.

이제 application_logs 인덱스를 쿼리하여 로그 항목이 성공적으로 수집되었는지 확인하세요.

awscurl --service es --region us-east-1 \ -X GET \ https://search-ingestion-domain.us-east-1.es.amazonaws.com/application_logs/_search | json_pp

샘플 응답:

{ "took":984, "timed_out":false, "_shards":{ "total":1, "successful":5, "skipped":0, "failed":0 }, "hits":{ "total":{ "value":1, "relation":"eq" }, "max_score":1.0, "hits":[ { "_index":"application_logs", "_type":"_doc", "_id":"z6VY_IMBRpceX-DU6V4O", "_score":1.0, "_source":{ "time":"2014-08-11T11:40:13+00:00", "remote_addr":"122.226.223.69", "status":"404", "request":"GET http://www.k2proxy.com//hello.html HTTP/1.1", "http_user_agent":"Mozilla/4.0 (compatible; WOW64; SLCC2;)", "@timestamp":"2022-10-21T21:00:25.502Z" } } ] } }

권한 문제 해결

튜토리얼의 단계를 따랐는데도 데이터를 수집하려고 할 때 인증 오류가 계속 발생한다면, 파이프라인에 쓰는 역할이 파이프라인 자체와 AWS 계정 다르기 때문일 수 있습니다. 이 경우 데이터를 수집할 수 있도록 특별히 지원하는 역할을 만들고 수임해야 합니다. 지침은 교차 계정 수집 액세스 제공 단원을 참조하십시오.

관련 리소스

이 자습서에서는 단일 문서를 인제스트하는 간단한 사용 사례를 제시했습니다. HTTP 프로덕션 시나리오에서는 하나 이상의 파이프라인으로 데이터를 전송하도록 클라이언트 애플리케이션 (예: Fluent Bit, Kubernetes 또는 OpenTelemetry Collector) 을 구성합니다. 파이프라인은 이 튜토리얼의 간단한 예제보다 더 복잡할 수 있습니다.

클라이언트 구성 및 데이터 수집을 시작하려면 다음 리소스를 참조하세요.