教學課程:使用 Amazon OpenSearch Ingestion 將資料擷取至網域 - Amazon OpenSearch Service

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

教學課程:使用 Amazon OpenSearch Ingestion 將資料擷取至網域

本教學課程說明如何使用 Amazon OpenSearch Ingestion 設定簡單的管道,並將資料擷取至 Amazon OpenSearch Service 網域。管道是 OpenSearch Ingestion 佈建和管理的資源。您可以使用管道來篩選、擴充、轉換、標準化和彙總資料,以在 OpenSearch Service 中進行下游分析和視覺化。

本教學課程會逐步引導您快速啟動和執行管道的基本步驟。如需更完整的說明,請參閱 建立管道

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

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

  • 名為 的管道 ingestion-pipeline

  • 管道將寫入ingestion-domain的名為 的網域

  • 名為 的 IAM 角色PipelineRole,管道將擔任此角色以寫入網域

所需的許可

若要完成本教學課程,您的使用者或角色必須具有具有下列最低許可的連接身分型政策。這些許可可讓您建立管道角色 (iam:Create)、建立或修改網域 (es:*),以及使用管道 ()osis:*iam:PassRole 許可可讓您將管道角色許可傳遞至管道,讓管道可以將資料寫入網域。

{ "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 Service 網域接收。您將在本教學稍後的管道組態中包含此角色。

建立管道角色
  1. 在 https://https://console.aws.amazon.com/iamv2/ 開啟 AWS Identity and Access Management 主控台。

  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 Ingestion 管道對網域的存取權

  4. 選擇下一步,選擇下一步,並命名您的政策管道政策

  5. 選擇 建立政策

  6. 接下來,建立角色並將政策連接至該角色。選擇 Roles (角色),然後選擇 Create role (建立角色)

  7. 選擇自訂信任政策,並將下列政策貼到編輯器中:

    { "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":"osis-pipelines.amazonaws.com" }, "Action":"sts:AssumeRole" } ] }
  8. 選擇 Next (下一步)。然後搜尋並選取管道政策 (您剛建立的)。

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

  10. 選擇建立角色

記住角色的 Amazon Resource Name (ARN) (例如 arn:aws:iam::your-account-id:role/PipelineRole)。建立管道時,您需要它。

步驟 2:建立網域

接著,建立名為 的網域,ingestion-domain以擷取資料。

導覽至 Amazon OpenSearch Service 主控台,網址 https://console.aws.amazon.com/aos/home://:

  • 正在執行 OpenSearch 1.0 或更新版本,或 Elasticsearch 7.4 或更新版本

  • 使用公有存取

  • 不使用精細存取控制

注意

這些要求旨在確保本教學課程的簡單性。在生產環境中,您可以設定具有 VPC 存取的網域和/或使用精細存取控制。若要使用精細存取控制,請參閱映射管道角色

網域必須具有 存取政策,將許可授予您在上一個步驟中建立PipelineRole的 。管道將擔任此角色 (管道組態中的名為 sts_role_arn),以便將資料傳送至 OpenSearch Service 網域接收。

請確定網域具有下列網域層級的存取政策,這會授予網域的PipelineRole存取權。將區域和帳戶 ID 取代為您自己的 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. 選擇 Create pipeline (建立管道)

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

  4. 命名管道擷取管道,並將容量設定保留為預設值。

  5. 在本教學課程中,您將建立名為 的簡單子管道log-pipeline,該管道使用 Http 來源外掛程式。此外掛程式接受 JSON 陣列格式的日誌資料。您將指定單一 OpenSearch Service 網域做為接收,並將所有資料擷取至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 參數取代為 的 ARNPipelineRole

  7. 選擇驗證管道,並確保驗證成功。

  8. 為了簡化本教學課程,請設定管道的公有存取。在 Network (網路) 中,選擇 Public access (公有存取)。

    如需有關設定 VPC 存取的資訊,請參閱 設定 Amazon OpenSearch Ingestion 管道的 VPC 存取

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

    指定下列日誌群組名稱: /aws/vendedlogs/OpenSearchIngestion/ingestion-pipeline/audit-logs

  10. 選擇 Next (下一步)。檢閱您的管道組態,然後選擇建立管道。管道需要 5 到 10 分鐘才能啟用。

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

當管道狀態為 時Active,您可以開始擷取資料。您必須使用 Signature 第 4 版簽署管道的所有 HTTP 請求。使用 Postmanawscurl 等 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),以將資料傳送至一或多個管道。您的管道可能比本教學課程中的簡單範例更複雜。

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