

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

# 教學課程：使用 Amazon OpenSearch Ingestion 將資料擷取至網域
<a name="osis-get-started"></a>

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

本教學課程會逐步引導您快速啟動和執行管道的基本步驟。如需更完整的說明，請參閱 [建立管道](creating-pipeline.md#create-pipeline)。

在本教學課程中，您會完成下列步驟：

1. [建立網域](#osis-get-started-access)。

1. [建立管道](#osis-get-started-pipeline)。

1. [擷取一些範例資料](#osis-get-started-ingest)。

在教學課程中，您將建立下列資源：
+ 管道寫入`ingestion-domain`的名為 的網域
+ 名為 的管道 `ingestion-pipeline`

## 所需的許可
<a name="osis-get-started-permissions"></a>

若要完成本教學課程，您的使用者或角色必須具有具有下列最低許可的連接[身分型政策](security-iam-serverless.md#security-iam-serverless-id-based-policies)。這些許可可讓您建立管道角色並連接政策 (`iam:Create*` 和 )`iam:Attach*`、建立或修改網域 (`es:*`)，以及使用管道 ()`osis:*`。

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Resource":"*",
         "Action":[
            "osis:*",
            "iam:Create*",
            "iam:Attach*",
            "es:*"
         ]
      },
      {
         "Resource":[
            "arn:aws:iam::{{111122223333}}:role/OpenSearchIngestion-PipelineRole"
         ],
         "Effect":"Allow",
         "Action":[
            "iam:CreateRole",
            "iam:AttachRolePolicy",
            "iam:PassRole"
         ]
      }
   ]
}
```

------

## 步驟 1：建立管道角色
<a name="osis-get-started-role"></a>

首先，建立管道將擔任的角色，以存取 OpenSearch Service 網域目的地。您將在本教學稍後的管道組態中包含此角色。

**建立管道角色**

1. 在 https：//[https://console.aws.amazon.com/iamv2/](https://console.aws.amazon.com/iamv2/ ) 開啟 AWS Identity and Access Management 主控台。

1. 選擇**政策**，然後選擇**建立政策**。

1. 在本教學課程中，您會將資料擷取至名為 的網域`ingestion-domain`，您將在下一個步驟中建立該網域。選取 **JSON**，並將下列政策貼到編輯器中。將 取代`{{your-account-id}}`為您的帳戶 ID，並視需要修改區域。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": "es:DescribeDomain",
               "Resource": "arn:aws:es:{{us-east-1}}:{{111122223333}}:domain/ingestion-domain"
           },
           {
               "Effect": "Allow",
               "Action": "es:ESHttp*",
               "Resource": "arn:aws:es:{{us-east-1}}:{{111122223333}}:domain/ingestion-domain/*"
           }
       ]
   }
   ```

------

   如果您想要將資料寫入*現有*網域，請將 取代`ingestion-domain`為您的網域名稱。
**注意**  
為了簡化本教學課程，我們使用廣泛的存取政策。不過，在生產環境中，建議您將更嚴格的存取政策套用至管道角色。如需提供最低必要許可的範例政策，請參閱 [授予 Amazon OpenSearch Ingestion 管道對網域的存取權](pipeline-domain-access.md)。

1. 選擇**下一步**，選擇**下一步**，並命名您的政策**管道政策**。

1. 選擇**建立政策**。

1. 接著，建立角色並將政策連接到該角色。選擇 **Roles (角色)**，然後選擇 **Create role (建立角色)**。

1. 選擇**自訂信任政策**，並將下列政策貼到編輯器中：

------
#### [ JSON ]

****  

   ```
   {
      "Version":"2012-10-17",		 	 	 
      "Statement":[
         {
            "Effect":"Allow",
            "Principal":{
               "Service":"osis-pipelines.amazonaws.com"
            },
            "Action":"sts:AssumeRole"
         }
      ]
   }
   ```

------

1. 選擇**下一步**。然後搜尋並選取**管道政策 **（您剛建立）。

1. 選擇**下一步**並命名角色 **PipelineRole**。

1. 選擇建**立角色**。

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

## 步驟 2：建立網域
<a name="osis-get-started-access"></a>

首先，建立名為 的網域`ingestion-domain`以擷取資料。

導覽至位於 https：//[https://console.aws.amazon.com/aos/home](https://console.aws.amazon.com/aos/home) 的 Amazon OpenSearch Service 主控台[，並建立符合下列要求的網域](createupdatedomains.md)：
+ 正在執行 OpenSearch 1.0 或更新版本，或 Elasticsearch 7.4 或更新版本
+ 使用公有存取
+ 不使用精細存取控制

**注意**  
這些要求旨在確保本教學課程中的簡單性。在生產環境中，您可以使用 VPC 存取和/或使用精細存取控制來設定網域。若要使用精細存取控制，請參閱[映射管道角色](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/pipeline-domain-access.html#pipeline-access-domain)。

網域必須具有授予 IAM `OpenSearchIngestion-PipelineRole` 角色許可的存取政策，OpenSearch Service 將在下一個步驟中為您建立該角色。管道將擔任此角色，以便將資料傳送至網域目的地。

請確定網域具有下列網域層級存取政策，這會授予管道角色對網域的存取權。將區域和帳戶 ID 取代為您自己的 ID：

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::{{111122223333}}:role/OpenSearchIngestion-PipelineRole"
      },
      "Action": "es:*",
      "Resource": "arn:aws:es:{{us-east-1}}:{{111122223333}}:domain/ingestion-domain/*"
    }
  ]
}
```

------

如需建立網域層級存取政策的詳細資訊，請參閱 [資源型政策](ac.md#ac-types-resource)。

如果您已建立網域，請修改其現有的存取政策，以提供上述許可給 `OpenSearchIngestion-PipelineRole`。

## 步驟 3：建立管道
<a name="osis-get-started-pipeline"></a>

現在您已擁有網域，您可以建立管道。

**建立管道**

1. 在 Amazon OpenSearch Service 主控台中，從左側導覽窗格中選擇**管道**。

1. 選擇 **Create pipeline (建立管道)**。

1. 選取**空白**管道，然後選擇**選取藍圖**。

1. 在本教學課程中，我們將建立使用 [HTTP 來源](https://opensearch.org/docs/latest/data-prepper/pipelines/configuration/sources/http-source/)外掛程式的簡單管道。外掛程式接受 JSON 陣列格式的日誌資料。我們將指定單一 OpenSearch Service 網域做為接收器，並將所有資料擷取至`application_logs`索引。

   在**來源**功能表中，選擇 **HTTP**。針對**路徑**，輸入 **/logs**。

1. 為了簡化本教學課程，我們將設定管道的公有存取。針對**來源網路選項**，選擇**公有存取**。如需設定 VPC 存取的資訊，請參閱 [設定 Amazon OpenSearch Ingestion 管道的 VPC 存取](pipeline-security.md)。

1. 選擇**下一步**。

1. 針對**處理器**，輸入**日期**，然後選擇**新增**。

1. 啟用**從接收到的時間**。將所有其他設定保留為預設值。

1. 選擇**下一步**。

1. 設定接收器詳細資訊。針對 **OpenSearch 資源類型**，選擇**受管叢集**。然後選擇您在上一節中建立的 OpenSearch Service 網域。

   針對**索引名稱**，輸入 **application\_logs**。如果網域中尚不存在，OpenSearch Ingestion 會自動建立此索引。

1. 選擇**下一步**。

1. 命名管道**擷取管道**。將容量設定保留為預設值。

1. 針對**管道角色**，選取**建立並使用新的服務角色**。管道角色為管道提供寫入網域目的地並從提取型來源讀取所需的許可。透過選取此選項，您可以允許 OpenSearch Ingestion 為您建立角色，而不是在 IAM 中手動建立角色。如需詳細資訊，請參閱[在 Amazon OpenSearch 擷取中設定角色和使用者](pipeline-security-overview.md)。

1. 針對**服務角色名稱尾碼**，輸入 **PipelineRole**。在 IAM 中，角色的格式為 `arn:aws:iam::{{your-account-id}}:role/OpenSearchIngestion-PipelineRole`。

1. 選擇**下一步**。檢閱您的管道組態，然後選擇**建立管道**。管道需要 5-10 分鐘才會變成作用中。

## 步驟 4：擷取一些範例資料
<a name="osis-get-started-ingest"></a>

當管道狀態為 時`Active`，您可以開始將資料導入其中。您必須使用 [Signature 第 4 版簽署管道的所有 HTTP ](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html)請求。使用 [Postman](https://www.getpostman.com/) 或 [awscurl](https://github.com/okigan/awscurl) 等 HTTP 工具，將一些資料傳送至管道。如同將資料直接索引至網域一樣，將資料擷取至管道一律需要 IAM 角色或 [IAM 存取金鑰和私密金鑰](https://docs.aws.amazon.com/powershell/latest/userguide/pstools-appendix-sign-up.html)。

**注意**  
簽署請求的委託人必須具有 `osis:Ingest` IAM 許可。

首先，從**管道設定**頁面取得擷取 URL：

![管道設定頁面，其中反白顯示顯示端點 URL 的擷取 URL 欄位。](http://docs.aws.amazon.com/zh_tw/opensearch-service/latest/developerguide/images/pipeline-endpoint.png)


然後，擷取一些範例資料。下列請求使用 [awscurl](https://github.com/okigan/awscurl) 將單一日誌檔案傳送至管道：

```
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/logs
```

您應該會看到`200 OK`回應。如果您收到身分驗證錯誤，可能是因為您從不同帳戶擷取資料，而不是管道所在的資料。請參閱 [修正許可問題](#osis-get-started-troubleshoot)。

現在，請查詢`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"
            }
         }
      ]
   }
}
```

## 修正許可問題
<a name="osis-get-started-troubleshoot"></a>

如果您遵循教學課程中的步驟，並且在嘗試擷取資料時仍看到身分驗證錯誤，可能是因為寫入管道的角色與管道本身 AWS 帳戶 不同。在這種情況下，您需要建立並[擔任特別可讓您擷取資料的角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html)。如需說明，請參閱[提供跨帳戶擷取存取權](configure-client.md#configure-client-cross-account)。

## 相關資源
<a name="osis-get-started-next"></a>

本教學課程提供透過 HTTP 擷取單一文件的簡單使用案例。在生產案例中，您將設定用戶端應用程式 （例如 Fluent Bit、Kubernetes 或 OpenTelemetry Collector)，以將資料傳送至一或多個管道。您的管道可能比本教學課程中的簡單範例更複雜。

若要開始設定用戶端和擷取資料，請參閱下列資源：
+ [建立和管理管道](creating-pipeline.md#create-pipeline)
+ [設定您的用戶端將資料傳送至 OpenSearch Ingestion](configure-client.md)
+ [Data Prepper 文件](https://opensearch.org/docs/latest/clients/data-prepper/index/)