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

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

教學課程:使用 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 並將以下策略粘貼到編輯器中。

    { "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. 接下來,建立角色並將原則附加至該角色。選擇 Roles (角色),然後選擇 Create role (建立角色)

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

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

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

  10. 選擇建立角色

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

步驟 2:建立集合

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

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

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

  3. 為集合取集合命名。

  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 端點」(Endpoint) 下的端點 (例如,https://{collection-id}.us-east-1.aoss.amazonaws.com)。當您建立管道時,您將需要它。

步驟 3:建立管道

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

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

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

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

  4. 在本教程中,我們將創建一個簡單的子管道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
  5. hosts URL 取代為您在上一節中建立的集合的端點。將sts_role_arn參數取代為的 ARN。PipelineRole或者,修改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 要求簽署至管線。使用 HTTP 工具,如郵差awscurl 將一些數據發送到管道。與將資料直接索引至集合一樣,將資料導入管道一律需要 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 收集器),以便將資料傳送至一或多個管線。您的管道可能會比本教學課程中的簡單範例更複雜。

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