チュートリアル: Amazon OpenSearch Ingestion を使用してドメインにデータを取り込む - Amazon OpenSearch Service

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

チュートリアル: Amazon OpenSearch Ingestion を使用してドメインにデータを取り込む

このチュートリアルでは、Amazon OpenSearch Ingestion を使用してシンプルなパイプラインを設定し、Amazon OpenSearch Service ドメインにデータを取り込む方法を示します。パイプラインは、OpenSearch Ingestion がプロビジョニングおよび管理するリソースです。パイプラインを使用すると、OpenSearch Service におけるダウンストリームの分析とビジュアライゼーションのために、データのフィルタリング、強化、変換、正規化、集計を行うことができます。

このチュートリアルでは、パイプラインをすばやく起動するための基本的な手順を説明します。より包括的な手順については、「」を参照してくださいパイプラインの作成

このチュートリアルでは、次の手順を実行します。

このチュートリアルでは、次のリソースを作成します。

  • パイプラインingestion-domainが書き込む という名前のドメイン

  • ingestion-pipeline という名前のパイプライン

必要なアクセス許可

このチュートリアルを完了するには、ユーザーまたはロールに、以下の最小限のアクセス許可を持つアイデンティティベースのポリシーがアタッチされている必要があります。これらのアクセス許可により、パイプラインロールの作成、ポリシーのアタッチ (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::your-account-id:role/OpenSearchIngestion-PipelineRole" ], "Effect":"Allow", "Action":[ "iam:CreateRole", "iam:AttachPolicy", "iam:PassRole" ] } ] }

ステップ 1: パイプラインロールを作成する

まず、OpenSearch Service ドメインのシンクにアクセスするために、パイプラインが引き受けるロールを作成します。これは、このチュートリアルの後半でパイプライン設定に含めます。

パイプラインロールを作成するには
  1. https://console.aws.amazon.com/iamv2/ で AWS Identity and Access Management コンソールを開きます。

  2. [ポリシー] を選択してから、[ポリシーを作成] を選択します。

  3. このチュートリアルでは、次のステップで作成する 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: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 Ingestion パイプラインにドメインへのアクセスを付与する」を参照してください。

  4. [次へ][次へ] の順にクリックし、ポリシーに pipeline-policy という名前を付けます。

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

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

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

    JSON
    { "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":"osis-pipelines.amazonaws.com" }, "Action":"sts:AssumeRole" } ] }
  8. [次へ] を選択します。その後、pipeline-policy (先ほど作成したもの) を検索して選択します。

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

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

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

ステップ 2: ドメインを作成する

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

Amazon OpenSearch Service コンソール (https://console.aws.amazon.com/aos/home) に移動し、次の要件を満たすドメインを作成します

  • OpenSearch 1.0 以降、または Elasticsearch 7.4 以降を実行している

  • パブリックアクセスを使用する

  • きめ細かいアクセスコントロールを使用しない

注記

これらの要件は、このチュートリアルをわかりやすくするためのものです。本番環境では、VPC アクセスを使用してドメインを設定できるほか、きめ細かなアクセスコントロールを使用することも可能です。きめ細かなアクセスコントロールを使用するには、「v」を参照してください。

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

ドメインに、パイプラインロールにドメインへのアクセスを許可する次のドメインレベルのアクセスポリシーがあることを確認します。リージョンとアカウント ID を自分のものに置き換えます。

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

ドメインレベルのアクセスポリシーの作成の詳細については、「」を参照してくださいリソースベースのポリシー

ドメインを既に作成済みの場合、その既存のアクセスポリシーを変更し、OpenSearchIngestion-PipelineRole に上記のアクセス許可を付与します。

ステップ 3: パイプラインを作成する

これでドメインが作成され、パイプラインを作成できます。

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

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

  3. 空のパイプラインを選択し、設計図の選択を選択します。

  4. このチュートリアルでは、HTTP ソースプラグインを使用するシンプルなパイプラインを作成します。プラグインは、JSON 配列形式のログデータを受け入れます。1 つの OpenSearch Service ドメインをシンクとして指定し、すべてのデータを application_logs インデックスに取り込みます。

    ソースメニューで、HTTP を選択します。パスには、/logs と入力します。

  5. このチュートリアルでは、わかりやすいようにパイプラインにパブリックアクセスを設定します。ソースネットワークオプションで、パブリックアクセスを選択します。VPC アクセスの設定の詳細については、「Amazon OpenSearch Ingestion パイプラインの VPC アクセスの設定」を参照してください。

  6. [次へ] を選択します。

  7. Processor に Date と入力し、Add を選択します。

  8. Enable From 受信時間。他のすべての設定はデフォルトのままにします。

  9. [次へ] を選択します。

  10. シンクの詳細を設定します。OpenSearch リソースタイプで、マネージドクラスターを選択します。次に、前のセクションで作成した OpenSearch Service ドメインを選択します。

    インデックス名に application_logs と入力します。OpenSearch Ingestion は、このインデックスが存在しない場合、ドメインに自動的に作成します。

  11. [次へ] を選択します。

  12. パイプラインに ingestion-pipeline という名前を付けます。容量設定はデフォルトのままにします。

  13. パイプラインロール で、新しいサービスロールを作成して使用する を選択します。パイプラインロールは、パイプラインがドメインシンクに書き込み、プルベースのソースから読み取るために必要なアクセス許可を提供します。このオプションを選択すると、OpenSearch Ingestion が IAM で手動でロールを作成するのではなく、自動的にロールを作成できるようになります。詳細については、「Amazon OpenSearch Ingestion のロールとユーザーの設定」を参照してください。

  14. サービスロール名のサフィックスPipelineRole と入力します。IAM では、ロールの形式は になりますarn:aws:iam::your-account-id:role/OpenSearchIngestion-PipelineRole

  15. [次へ] を選択します。パイプライン設定を確認し、[パイプラインの作成] をクリックします。パイプラインがアクティブになるまでに 5~10 分かかります。

ステップ 4: サンプルデータを取り込む

パイプラインのステータスが Active になると、パイプラインへのデータの取り込みを開始できます。Signature Version 4 を使用して、パイプラインへのすべての HTTP リクエストに署名する必要があります。Postmanawscurl などの HTTP ツールを使用して、パイプラインにデータを送信します。データのインデックス作成をドメインに直接行う場合と同様に、パイプラインにデータを取り込むには、常に IAM ロールまたは IAM アクセスキーとシークレットキーのいずれかが必要です。

注記

リクエストに署名するプリンシパルは、osis:Ingest という IAM アクセス許可を持っている必要があります。

まず、[パイプライン設定] ページから取り込み URL を取得します。

Pipeline settings page showing ingestion URL and other configuration details.

次に、いくつかのサンプルデータを取り込みます。次のリクエストでは、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 というレスポンスが確認できるはずです。認証エラーが発生した場合は、パイプラインとは別のアカウントからデータを取り込んでいることが原因かもしれません。「アクセス許可に関する問題に対応する」を参照してください。

次に、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 経由で 1 つのドキュメントを取り込むというシンプルなユースケースを紹介しました。本番シナリオでは、1 つ以上のパイプラインにデータを送信するように、クライアントアプリケーション (Fluent Bit、Kubernetes、OpenTelemetry Collector など) を設定します。パイプラインは、このチュートリアルのシンプルな例よりも複雑になる可能性があります。

クライアントの設定とデータの取り込みを開始するには、次のリソースを参照してください。