

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# チュートリアル: 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>

このチュートリアルを完了するには、ユーザーまたはロールに、次の最低限の許可を含む [ID ベースのポリシー](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:*`) が可能になります。

さらに、パイプラインロールを自動的に作成し、OpenSearch Ingestion に渡してコレクションにデータを書き込むには、複数の IAM アクセス許可が必要です。

------
#### [ 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. [https://console.aws.amazon.com/aos/home](https://console.aws.amazon.com/aos/home) の Amazon OpenSearch Service コンソールに移動します。

1. 左側のナビゲーションペインで **[コレクション]** をクリックし、次に **[コレクションを作成]** をクリックします。

1. コレクションに **[ingestion-collection]** という名前を付けます。

1. **[セキュリティ]**で、**[標準作成]** を選択します。

1. **[ネットワークアクセスの設定]** で、アクセスタイプを **[パブリック]** に変更します。

1. 他のすべての設定をデフォルトのままにして、**[Next]** (次へ) を選択します。

1. 次に、コレクション用のデータアクセスポリシーを設定します。**[アクセスポリシー設定を自動的に一致させる]** の選択を解除します。

1. **[定義方法]** で** [JSON]** をクリックし、エディタに以下のポリシーを貼り付けます。このポリシーは次の 2 つを実行します。
   + パイプラインロールがコレクションに書き込むことを許可します。
   + コレクションから*読み取る*ことを許可します。そして、いくつかのサンプルデータをパイプラインに取り込んだ後、コレクションにクエリを実行し、データが正常に取り込まれてインデックスに書き込まれたことを確認します。

     ```
     [
       {
         "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.  AWS アカウント ID を含めるように`Principal`要素を変更します。2 つ目のプリンシパルでは、後でコレクションをクエリするために使用できるユーザーまたはロールを指定します。

1. [**次へ**] を選択します。アクセスポリシーに **pipeline-collection-access** という名前を付け、再度 **[次へ]** を選択します。

1. コレクション設定を確認してから、**[Submit]** (送信) を選択します。

## ステップ 2: パイプラインを作成する
<a name="osis-serverless-get-started-pipeline"></a>

これでコレクションが作成され、パイプラインを作成できます。

**パイプラインを作成するには**

1. Amazon OpenSearch Service コンソールで、左側のナビゲーションペインから **[パイプライン]** をクリックします。

1. **パイプラインの作成** を選択します。

1. **[空]** のパイプラインを選択し、**[ブループリントを選択]** を選択します。

1. このチュートリアルでは、[HTTP source](https://opensearch.org/docs/latest/data-prepper/pipelines/configuration/sources/http-source/) プラグインを使用するシンプルなパイプラインを作成します。プラグインは、JSON 配列形式のログデータを受け入れます。1 つの 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 Ingestion のロールとユーザーの設定](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 Version 4](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html) を使用して、パイプラインへのすべての HTTP リクエストに署名する必要があります。[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/ja_jp/opensearch-service/latest/developerguide/images/pipeline-endpoint.png)


次に、いくつかのサンプルデータを取り込みパスに送信します。次のサンプルリクエストでは、[awscurl](https://github.com/okigan/awscurl) を使用して 1 つのログファイルをパイプラインに送信します。

```
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 経由で 1 つのドキュメントを取り込むというシンプルなユースケースを紹介しました。本番シナリオでは、1 つ以上のパイプラインにデータを送信するように、クライアントアプリケーション (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/)