教學課程:使用 Amazon OpenSearch 擷取將資料擷取到集合 - Amazon OpenSearch Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

教學課程:使用 Amazon OpenSearch 擷取將資料擷取到集合

本教學說明如何使用 Amazon OpenSearch 擷取設定簡單管道,並將資料擷取至 Amazon OpenSearch 無伺服器集合。管線是 OpenSearch 擷取佈建和管理的資源。您可以使用管道來篩選、豐富、轉換、標準化和彙總資料,以便在 OpenSearch Service 中進行下游分析和視覺化。

如需示範如何將資料內嵌至已佈建 OpenSearch 服務網域的教學課程,請參閱教學課程:使用 Amazon OpenSearch 擷取將資料導入網域

在本教學課程中,您會完成下列步驟:

在教學課程中,您將建立下列資源:

  • 一個名為的管道 ingestion-pipeline-serverless

  • 一個名為管ingestion-collection道將寫入的集合

  • 為了寫入集合PipelineRole,管道將承擔的IAM角色

所需的許可

若要完成本教學課程,您必須擁有正確的IAM權限。您的使用者或角色必須具有以下最低權限的附加以身分識別為基礎的原則。這些權限可讓您建立管線角色 (iam:Create*)、建立或修改集合 (aoss:*),以及使用管線 (osis:*)。

此外,管線角色資源需要iam:PassRole權限。此權限可讓您將管線角色傳遞給 OpenSearch 擷取,以便將資料寫入集合。

{ "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. 在開啟 AWS Identity and Access Management 主控台https://console.aws.amazon.com/iamv2/

  2. 選擇 [原],然後選擇 [建立原則]。

  3. 選取下列原則JSON並貼到編輯器中。相應地修改集合ARN和名稱。

    { "Version": "2012-10-17", "Statement": [ { "Action": [ "aoss:BatchGetCollection", "aoss:APIAccessAll" ], "Effect": "Allow", "Resource": "arn:aws:aoss:us-east-1: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. 接下來,建立角色並將原則附加至該角色。選擇 Roles (角色),然後選擇 Create role (建立角色)

  7. 選擇 [自訂信任原則],然後將下列原則貼到編輯器中:

    { "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":"osis-pipelines.amazonaws.com" }, "Action":"sts:AssumeRole" } ] }
  8. 選擇 Next (下一步)。然後搜索並選擇 collection-pipeline-policy(您剛剛創建的)。

  9. 選擇 [下一步] 並命名角色PipelineRole

  10. 選擇建立角色

請記住角色的 Amazon 資源名稱 (ARN) (例如,arn:aws:iam::your-account-id:role/PipelineRole)。當您建立管道時,您將需要它。

步驟 2:建立集合

接下來,創建一個集合以將數據導入其中。我們將命名集合ingestion-collection

  1. 導航到https://console.aws.amazon.com/aos/家中的 Amazon OpenSearch 服務控制台。

  2. 從左側導覽中選擇「商品系列」,然後選擇「建立

  3. 為集合取集合命名。

  4. 在「安全性」中選擇「標準建立

  5. 在 [網路存取設定] 下,將存取類型變更為 [用]。

  6. 將其他所有設定保留為預設值,然後選擇 Next (下一步)。

  7. 現在,設定集合的資料存取政策。對於定義方法,請選擇下列原則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" } ]
  8. 取代Principal元素。第一個主體應該指定您建立的管線角色。第二個應該指定一個用戶或角色,以便稍後用於查詢集合。

  9. 選擇 Next (下一步)。命名存取原則 pipeline-domain-access,然後再次選擇 [下一步]。

  10. 檢閱集合組態,然後選擇 Submit (提交)。

當集合處於作用中狀態時,請記下「 OpenSearch 端點」(Endpoint) 下的端點 (例如,https://{collection-id}.us-east-1.aoss.amazonaws.com)。當您建立管道時,您將需要它。

步驟 3:建立管道

現在您已經擁有了具有適當存取權限的集合和角色,您可以建立管線。

建立管道
  1. 在 Amazon OpenSearch 服務主控台內,從左側導覽窗格中選擇管道

  2. 選擇 Create pipeline (建立管道)

  3. 選取空白管線,然後選擇選取藍圖

  4. 命名管線無伺服器擷取,並將容量設定保留為其預設值。

  5. 在本教程中,我們將創建一個簡單的子管道,稱log-pipeline為使用HTTP源插件。該插件接受數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
  6. 將其取hostsURL代為您在上一節中建立的集合的端點。將sts_role_arn參數取代為ARN的PipelineRole。(可選) 修改region.

  7. 選擇驗證管線,並確定驗證成功。

  8. 為了簡化本教學課程,我們將設定管線的公用存取權限。在 Network (網路) 中,選擇 Public access (公有存取)。

    如需有關配置VPC存取權的資訊,請參閱為 Amazon OpenSearch 擷取管道設定 VPC 存取

  9. 保持日誌發佈啟用狀態,以防您在完成本教學課程時遇到任何問題。如需詳細資訊,請參閱監控管道日誌

    指定下列記錄群組名稱:/aws/vendedlogs/OpenSearchIngestion/serverless-ingestion/audit-logs

  10. 選擇 Next (下一步)。檢閱管線組態,然後選擇「建立管線」。管道需要 5-10 分鐘才能成為活動狀態。

步驟 4:擷取一些範例資料

當管道狀態為時Active,您就可以開始將資料擷取到其中。您必須使用「簽名版本 4」將所有HTTP請求簽署到管道。使用郵遞員awscurl 等HTTP工具將一些數據發送到管道。與將資料直接索引至集合一樣,將資料擷取到管道中始終需要IAM角色或IAM存取金鑰和秘密金鑰

注意

簽署要求的主體必須具有osis:IngestIAM權限。

首先,URL從「管道設定」 頁面取得擷取:

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

然後,擷取一些範例資料。下列範例要求會使用 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 收集器),以便將資料傳送至一或多個管線。您的管道可能會比本教學課程中的簡單範例更複雜。

若要開始設定用戶端和擷取資料,請參閱下列資源: