

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

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

このチュートリアルを完了するには、ユーザーまたはロールに、次の最低限の許可を含む [ID ベースのポリシー](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://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. **[次へ]**、**[次へ]** の順にクリックし、ポリシーに **pipeline-policy** という名前を付けます。

1. [**Create policy**] (ポリシーの作成) を選択します。

1. 次に、ポリシーを作成してロールにアタッチします。[**ロール**]、[**ロールの作成**] の順に選択します。

1. **[カスタム信頼ポリシー]** をクリックし、次のポリシーをエディタに貼り付けます。

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

****  

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

------

1. [**次へ**] を選択します。その後、**pipeline-policy** (先ほど作成したもの) を検索して選択します。

1. **[次へ]** をクリックし、ロールに **[PipelineRole]** という名前を付けます。

1. [**ロールの作成**] を選択してください。

ロールの Amazon リソースネーム (ARN) (例: `arn:aws:iam::{{your-account-id}}:role/PipelineRole`) を覚えておいてください。これは、パイプラインを作成するときに必要です。

## ステップ 2: ドメインを作成する
<a name="osis-get-started-access"></a>

まず、データを取り込む、`ingestion-domain` という名前のドメインを作成します。

Amazon OpenSearch Service コンソール ([https://console.aws.amazon.com/aos/home](https://console.aws.amazon.com/aos/home)) に移動し、次の要件を満たす[ドメインを作成します](createupdatedomains.md)。
+ OpenSearch 1.0 以降、または Elasticsearch 7.4 以降を実行している
+ パブリックアクセスを使用する
+ きめ細かいアクセスコントロールを使用しない

**注記**  
これらの要件は、このチュートリアルをわかりやすくするためのものです。本番環境では、VPC アクセスを使用してドメインを設定できるほか、きめ細かなアクセスコントロールを使用することも可能です。きめ細かなアクセスコントロールを使用するには、「[v](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/pipeline-domain-access.html#pipeline-access-domain)」を参照してください。

ドメインには、OpenSearch Service が次のステップで作成する `OpenSearchIngestion-PipelineRole` IAM ロールにアクセス許可を付与するアクセスポリシーが必要です。パイプラインは、ドメインシンクにデータを送信するためにこの役割を引き受けます。

ドメインが次のドメインレベルのアクセスポリシーを持っていることを確認します。このポリシーは、パイプラインロールにドメインへのアクセスを付与します。リージョンとアカウント 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. **パイプラインの作成** を選択します。

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

1. このチュートリアルでは、[HTTP source](https://opensearch.org/docs/latest/data-prepper/pipelines/configuration/sources/http-source/) プラグインを使用するシンプルなパイプラインを作成します。プラグインは、JSON 配列形式のログデータを受け入れます。1 つの 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. パイプラインに **ingestion-pipeline** という名前を付けます。容量設定はデフォルトのままにします。

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 分かかります。

## ステップ 4: サンプルデータを取り込む
<a name="osis-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` というレスポンスが確認できるはずです。認証エラーが発生した場合は、パイプラインとは別のアカウントからデータを取り込んでいることが原因かもしれません。「[アクセス許可に関する問題に対応する](#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 経由で 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/)