本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
教學課程:使用 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 網域接收。您將在本教學稍後的管道組態中包含此角色。
建立管道角色
-
在 https://https://console.aws.amazon.com/iamv2/
開啟 AWS Identity and Access Management 主控台。 -
選擇政策,然後選擇建立政策。
-
在本教學課程中,您會將資料擷取至名為 的網域
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 管道對網域的存取權。
-
選擇下一步,選擇下一步,並命名您的政策管道政策。
-
選擇 建立政策。
-
接下來,建立角色並將政策連接至該角色。選擇 Roles (角色),然後選擇 Create role (建立角色)。
-
選擇自訂信任政策,並將下列政策貼到編輯器中:
{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":"osis-pipelines.amazonaws.com" }, "Action":"sts:AssumeRole" } ] }
-
選擇 Next (下一步)。然後搜尋並選取管道政策 (您剛建立的)。
-
選擇下一步,並命名角色 PipelineRole。
-
選擇建立角色。
記住角色的 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:建立管道
現在您已擁有具有適當存取權限的網域和角色,您可以建立管道。
建立管道
-
在 Amazon OpenSearch Service 主控台中,從左側導覽窗格中選擇管道。
-
選擇 Create pipeline (建立管道)。
-
選取空白管道,然後選擇選取藍圖。
-
命名管道擷取管道,並將容量設定保留為預設值。
-
在本教學課程中,您將建立名為 的簡單子管道
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 路徑。提取型來源需要此選項。如需詳細資訊,請參閱指定擷取路徑。 -
將
hosts
URL 取代為您在上一節中建立 (或修改) 之網域的端點。將sts_role_arn
參數取代為 的 ARNPipelineRole
。 -
選擇驗證管道,並確保驗證成功。
-
為了簡化本教學課程,請設定管道的公有存取。在 Network (網路) 中,選擇 Public access (公有存取)。
如需有關設定 VPC 存取的資訊,請參閱 設定 Amazon OpenSearch Ingestion 管道的 VPC 存取。
-
如果您在完成本教學課程時遇到任何問題,請保持啟用日誌發佈。如需詳細資訊,請參閱監控管道日誌。
指定下列日誌群組名稱:
/aws/vendedlogs/OpenSearchIngestion/ingestion-pipeline/audit-logs
-
選擇 Next (下一步)。檢閱您的管道組態,然後選擇建立管道。管道需要 5 到 10 分鐘才能啟用。
步驟 4:擷取一些範例資料
當管道狀態為 時Active
,您可以開始擷取資料。您必須使用 Signature 第 4 版簽署管道的所有 HTTP 請求。使用 Postman
注意
簽署請求的委託人必須擁有 osis:Ingest
IAM 許可。
首先,從管道設定頁面取得擷取 URL:

然後,擷取一些範例資料。下列請求使用 awscurlapplication_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),以將資料傳送至一或多個管道。您的管道可能比本教學課程中的簡單範例更複雜。
若要開始設定用戶端和擷取資料,請參閱下列資源: