

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

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

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

如需示範如何將資料擷取到佈建 OpenSearch Service *網域*的教學課程，請參閱 [教學課程：使用 Amazon OpenSearch Ingestion 將資料擷取至網域](osis-get-started.md)。

您將完成本教學課程中的下列步驟：。

1. [建立集合](#osis-serverless-get-started-access)。

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

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

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

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

若要完成本教學課程，您的使用者或角色必須具有具有下列最低許可的連接[身分型政策](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/security-iam-serverless.html#security-iam-serverless-id-based-policies)。這些許可可讓您建立管道角色並連接政策 (`iam:Create*` 和 )`iam:Attach*`、建立或修改集合 (`aoss:*`)，以及使用管道 ()`osis:*`。

此外，需要數個 IAM 許可，才能自動建立管道角色並將其傳遞給 OpenSearch Ingestion，以便將資料寫入集合。

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

****  

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

------

## 步驟 1：建立集合
<a name="osis-serverless-get-started-access"></a>

首先，建立要擷取資料的集合。我們將集合命名為 `ingestion-collection`。

1. 導覽至 Amazon OpenSearch Service 主控台，網址為 https：//[https://console.aws.amazon.com/aos/home](https://console.aws.amazon.com/aos/home)。

1. 從左側導覽中選擇**集合**，然後選擇**建立集合**。

1. 命名集合**擷取集合**。

1. 針對**安全性**，選擇**標準建立**。

1. 在**網路存取設定**下，將存取類型變更為**公**有。

1. 將其他所有設定保留為預設值，然後選擇 **Next** (下一步)。

1. 現在，為集合設定資料存取政策。取消選取**自動比對存取政策設定**。

1. 針對**定義方法**，選擇 **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/OpenSearchIngestion-PipelineRole",
           "arn:aws:iam::{{your-account-id}}:role/{{Admin}}"
         ],
         "Description": "Rule 1"
       }
     ]
     ```

1. 修改`Principal`元素以包含您的 AWS 帳戶 ID。針對第二個委託人，指定可用於稍後查詢集合的使用者或角色。

1. 選擇**下一步**。命名存取政策**pipeline-collection-access**，然後再次選擇**下一步**。

1. 檢閱集合組態，然後選擇 **Submit** (提交)。

## 步驟 2：建立管道
<a name="osis-serverless-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 Serverless 集合做為接收器，並將所有資料擷取至`my_logs`索引。

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

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

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

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

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

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

1. 設定接收器詳細資訊。針對 **OpenSearch 資源類型**，選擇**集合 （無伺服器）**。然後選擇您在上一節中建立的 OpenSearch Service 集合。

   將網路政策名稱保留為預設值。針對**索引名稱**，輸入 **my\_logs**。如果集合中尚不存在，OpenSearch Ingestion 會自動建立此索引。

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

1. 命名管道 **ingestion-pipeline-serverless**。將容量設定保留為預設值。

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 分鐘才會變成作用中。

## 步驟 3：擷取一些範例資料
<a name="osis-serverless-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`回應。

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

## 相關資源
<a name="osis-serverless-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/)