本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
教學課程:使用 Amazon OpenSearch 擷取將資料導入網域
本教學說明如何使用 Amazon OpenSearch 擷取設定簡單管道,並將資料擷取至 Amazon OpenSearch 服務網域。管線是 OpenSearch 擷取佈建和管理的資源。您可以使用管道來篩選、豐富、轉換、標準化和彙總資料,以便在 OpenSearch Service 中進行下游分析和視覺化。
本教程將引導您完成基本步驟,以快速啟動和運行管道。如需詳細資訊,請參閱建立管道。
在本教學課程中,您會完成下列步驟:
在教學課程中,您將建立下列資源:
-
一個名為的管道
ingestion-pipeline
-
管道將寫入的名稱
ingestion-domain
網域 -
為了寫入網域
PipelineRole
,管道將假定為了寫入網域的IAM角色
所需的許可
若要完成本教學課程,您必須擁有正確的IAM權限。您的使用者或角色必須具有以下最低權限的附加以身分識別為基礎的原則。這些權限可讓您建立管線角色 (iam:Create
)、建立或修改網域 (es:*
),以及使用管線 (osis:*
)。
此外,管線角色資源需要iam:PassRole
權限。此權限可讓您將管線角色傳遞給 OpenSearch 擷取,以便將資料寫入網域。
{ "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 服務網域接收器而假設的角色。您將在本教學課程稍後的管線設定中包含此角色。
若要建立管線角色
-
在開啟 AWS Identity and Access Management 主控台https://console.aws.amazon.com/iamv2/
。 -
選擇 [原則],然後選擇 [建立原則]。
-
在本教學課程中,您會將資料擷取到名為的網域中
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 擷取管道對網域的存取權。
-
選擇 [下一步],選擇 [下一步],然後命名原則管線原則。
-
選擇 建立政策。
-
接下來,建立角色並將原則附加至該角色。選擇 Roles (角色),然後選擇 Create role (建立角色)。
-
選擇 [自訂信任原則],然後將下列原則貼到編輯器中:
{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":"osis-pipelines.amazonaws.com" }, "Action":"sts:AssumeRole" } ] }
-
選擇 Next (下一步)。然後搜尋並選取管線原則 (您剛建立的)。
-
選擇 [下一步] 並命名角色PipelineRole。
-
選擇建立角色。
請記住角色的 Amazon 資源名稱 (ARN) (例如,arn:aws:iam::
)。當您建立管道時,您將需要它。your-account-id
:role/PipelineRole
步驟 2:建立網域
接下來,建立一個名為將資料擷取ingestion-domain
到的網域。
導覽至https://console.aws.amazon.com/aos/家
-
正在執行 OpenSearch 1.0 或更新版本,或彈性搜尋 7.4 或更新版本
-
使用公共訪問
-
不使用細粒度的訪問控制
注意
這些要求是為了確保在本教程中的簡單性。在生產環境中,您可以設定具有VPC存取權和/或使用精細存取控制的網域。若要使用精細的存取控制,請參閱對應管線角色。
網域必須具有授與權限的存取原則PipelineRole
,這是您在上一個步驟中建立的權限。管線將扮演此角色 (在管線組態中名為 sts_role_arn),以便將資料傳送至服務網域接收器。 OpenSearch
請確定網域具有下列網域層級存取原則,這些原則會授與網域的PipelineRole
存取權。使用您自己的地區和帳戶 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 服務主控台內,從左側導覽窗格中選擇管道。
-
選擇 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
參數取代為ARN的PipelineRole
。 -
選擇驗證管線,並確定驗證成功。
-
為了簡化本教學課程,請設定管線的公用存取權。在 Network (網路) 中,選擇 Public access (公有存取)。
如需有關配置VPC存取權的資訊,請參閱為 Amazon OpenSearch 擷取管道設定 VPC 存取。
-
保持日誌發佈啟用狀態,以防您在完成本教學課程時遇到任何問題。如需詳細資訊,請參閱監控管道日誌。
指定下列記錄群組名稱:
/aws/vendedlogs/OpenSearchIngestion/ingestion-pipeline/audit-logs
-
選擇 Next (下一步)。檢閱管線組態,然後選擇「建立管線」。管道需要 5-10 分鐘才能成為活動狀態。
步驟 4:擷取一些範例資料
當管道狀態為時Active
,您就可以開始將資料擷取到其中。您必須使用簽名版本 4 將所有HTTP請求簽署到管道。使用郵遞員
注意
簽署要求的主體必須具有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 收集器),以便將資料傳送至一或多個管線。您的管道可能會比本教學課程中的簡單範例更複雜。
若要開始設定用戶端和擷取資料,請參閱下列資源: