자습서: Amazon OpenSearch Ingestion을 사용하여 컬렉션에 데이터 수집 - 아마존 OpenSearch 서비스

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

자습서: Amazon OpenSearch Ingestion을 사용하여 컬렉션에 데이터 수집

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

OpenSearch 프로비저닝된 서비스 도메인으로 데이터를 수집하는 방법을 보여주는 튜토리얼은 을 참조하십시오. 튜토리얼: Amazon OpenSearch Ingestion을 사용하여 도메인에 데이터 수집

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

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

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

  • 파이프라인이 쓸 ingestion-collection이라는 컬렉션입니다.

  • 파이프라인이 컬렉션에 쓰기 위해 맡게 되는 PipelineRole이라는 IAM 역할

필요한 권한

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

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

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

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

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

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

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

  3. JSON 을 선택한 후 다음 정책을 편집기에 붙여넣습니다.

    { "Version": "2012-10-17", "Statement": [ { "Action": [ "aoss:BatchGetCollection", "aoss:APIAccessAll" ], "Effect": "Allow", "Resource": "arn:aws:aoss:{region}:{your-account-id}:collection/{collection-id}" }, { "Action": [ "aoss:CreateSecurityPolicy", "aoss:GetSecurityPolicy", "aoss:UpdateSecurityPolicy" ], "Effect": "Allow", "Resource": "*", "Condition": { "StringEquals": { "aoss:collection": "{collection-name}" } } } ] }
  4. [다음] 을 선택하고 [다음] 을 선택한 다음 정책 이름을 지정합니다 collection-pipeline-policy.

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

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

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

    { "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":"osis-pipelines.amazonaws.com" }, "Action":"sts:AssumeRole" } ] }
  8. 다음을 선택합니다. 그런 다음 collection-pipeline-policy(방금 생성한 항목) 을 검색하여 선택합니다.

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

  10. Create role(역할 생성)을 선택합니다.

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

2단계: 컬렉션 생성

그 다음, 데이터를 수집할 컬렉션을 생성합니다. 컬렉션 이름을 ingestion-collection로 지정하겠습니다.

  1. https://console.aws.amazon.com/aos/home 에서 아마존 OpenSearch 서비스 콘솔로 이동합니다.

  2. 왼쪽 탐색에서 컬렉션을 선택하고 컬렉션 생성을 선택합니다.

  3. 컬렉션 이름을 ingestion-collection으로 지정하세요.

  4. 네트워크 액세스 설정에서 액세스 유형을 공개로 변경합니다.

  5. 다른 모든 설정을 기본값으로 유지하고 Next(다음)를 선택합니다.

  6. 정의 방법에는 JSON을 선택하고 편집기에 다음 정책을 붙여 넣습니다. 이 정책은 두 가지 기능을 합니다.

    • 파이프라인 역할이 컬렉션에 쓸 수 있도록 허용합니다.

    • 컬렉션에서 읽을 수 있도록 허용합니다. 나중에 일부 샘플 데이터를 파이프라인으로 수집한 후 컬렉션을 쿼리하여 데이터가 성공적으로 수집되고 인덱스에 기록되었는지 확인합니다.

      [ { "Rules": [ { "Resource": [ "index/ingestion-collection/*" ], "Permission": [ "aoss:CreateIndex", "aoss:UpdateIndex", "aoss:DescribeIndex", "aoss:ReadDocument", "aoss:WriteDocument" ], "ResourceType": "index" } ], "Principal": [ "arn:aws:iam::{your-account-id}:role/PipelineRole", "arn:aws:iam::{your-account-id}:role/Admin" ], "Description": "Rule 1" } ]
  7. Principal 요소를 교체하세요. 첫 번째 보안 주체는 생성한 파이프라인 역할을 지정해야 합니다. 두 번째 보안 주체는 나중에 컬렉션을 쿼리하는 데 사용할 수 있는 사용자 또는 역할을 지정해야 합니다.

  8. 다음을 선택합니다. 액세스 정책의 pipeline-domain-access이름을 지정하고 다음을 다시 선택합니다.

  9. 컬렉션 구성을 검토하고 Submit(제출)을 선택합니다.

컬렉션이 활성화되면 OpenSearch 엔드포인트 아래의 엔드포인트 (예:https://{collection-id}.us-east-1.aoss.amazonaws.com) 를 기록해 둡니다. 파이프라인을 생성할 때 사용합니다.

3단계: 파이프라인 생성

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

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

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

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

  4. 이 튜토리얼에서는 HTTP 소스 플러그인을 사용하는 log-pipeline이라는 간단한 하위 파이프라인을 만들어 보겠습니다. 플러그인은 JSON 배열 형식의 로그 데이터를 받아들입니다. 단일 OpenSearch 서버리스 컬렉션을 싱크로 지정하고 모든 데이터를 인덱스로 수집하겠습니다. my_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://{collection-id}.us-east-1.aoss.amazonaws.com" ] index: "my_logs" aws: sts_role_arn: "arn:aws:iam::{your-account-id}:role/PipelineRole" region: "us-east-1" serverless: true
  5. hosts URL을 이전 섹션에서 생성한 컬렉션의 엔드포인트로 대체합니다. sts_role_arn 파라미터를 PipelineRole의 ARN으로 대체합니다. 필요에 따라 region을 수정합니다.

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

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

    VPC에 대한 액세스를 구성하는 방법에 대한 자세한 정보는 Amazon OpenSearch 통합 파이프라인에 대한 VPC 액세스 구성 섹션을 참조하세요.

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

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

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

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

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

참고

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

먼저 파이프라인 설정 페이지에서 수집 URL을 가져옵니다.

그런 다음 일부 샘플 데이터를 수집하세요. 다음 샘플 요청은 awscurl을 사용하여 단일 로그 파일을 my_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 응답이 표시되어야 합니다.

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

awscurl --service aoss --region us-east-1 \ -X GET \ https://{collection-id}.us-east-1.aoss.amazonaws.com/my_logs/_search | json_pp

샘플 응답:

{ "took":348, "timed_out":false, "_shards":{ "total":0, "successful":0, "skipped":0, "failed":0 }, "hits":{ "total":{ "value":1, "relation":"eq" }, "max_score":1.0, "hits":[ { "_index":"my_logs", "_id":"1%3A0%3ARJgDvIcBTy5m12xrKE-y", "_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":"2023-04-26T05:22:16.204Z" } } ] } }

관련 리소스

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

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