チュートリアル: Amazon Ingestion OpenSearch を使用してコレクションにデータを取り込む - Amazon OpenSearch サービス

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

チュートリアル: Amazon Ingestion OpenSearch を使用してコレクションにデータを取り込む

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

プロビジョニングされた OpenSearch サービスドメインにデータを取り込む方法を示すチュートリアルについては、「」を参照してくださいチュートリアル: Amazon OpenSearch Ingestion を使用してドメインにデータを取り込む

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

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

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

  • パイプラインの書き込み先となる、ingestion-collection という名前のコレクション

  • パイプラインがコレクションに書き込むために引き受ける、PipelineRole という名前の IAM ロール

必要なアクセス許可

このチュートリアルを完了するには、適切な IAM のアクセス許可を持っている必要があります。ユーザーまたはロールには、次の最低限の許可を含む ID ベースのポリシーが、アタッチされている必要があります。これらの許可により、パイプラインロールの作成 (iam:Create*)、コレクションの作成または変更 (aoss:*)、パイプラインの使用 (osis:*) が可能になります。

さらに、パイプラインロールリソースには iam:PassRole 許可が必要です。このアクセス許可により、パイプラインロールを Ingestion OpenSearch に渡して、コレクションにデータを書き込むことができます。

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Resource":"*", "Action":[ "osis:*", "iam:Create*", "aoss:*" ] }, { "Resource":[ "arn:aws:iam::{your-account-id}:role/PipelineRole" ], "Effect":"Allow", "Action":[ "iam:PassRole" ] } ] }

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

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

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

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

  3. [JSON] を選択し、次のポリシーをエディタに貼り付けます。

    { "Version": "2012-10-17", "Statement": [ { "Action": [ "aoss:BatchGetCollection", "aoss:APIAccessAll" ], "Effect": "Allow", "Resource": "arn:aws:aoss:{region}:{your-account-id}:collection/{collection-id}" }, { "Action": [ "aoss:CreateSecurityPolicy", "aoss:GetSecurityPolicy", "aoss:UpdateSecurityPolicy" ], "Effect": "Allow", "Resource": "*", "Condition": { "StringEquals": { "aoss:collection": "{collection-name}" } } } ] }
  4. へを選択し、へを選択し、ポリシーに という名前を付けますcollection-pipeline-policy

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

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

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

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

  9. Next を選択し、ロールに という名前を付けますPipelineRole

  10. [ロールの作成] を選択します。

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

ステップ 2: コレクションを作成する

次に、データを取り込むコレクションを作成します。コレクションに ingestion-collection という名前を付けます。

  1. https://console.aws.amazon.com/aos/home で Amazon OpenSearch Service コンソールに移動します。

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

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

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

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

  6. [定義方法] [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/PipelineRole", "arn:aws:iam::{your-account-id}:role/Admin" ], "Description": "Rule 1" } ]
  7. Principal エレメントを置き換えます。最初のプリンシパルでは、作成したパイプラインロールを指定する必要があります。2 つ目のプリンシパルでは、後でコレクションをクエリするために使用できるユーザーまたはロールを指定する必要があります。

  8. [次へ] をクリックします。アクセスポリシーに名前を付けpipeline-domain-access、もう一度次へを選択します。

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

コレクションがアクティブになったら、 OpenSearch エンドポイントの下のエンドポイントを書き留めます (例: https://{collection-id}.us-east-1.aoss.amazonaws.com)。これは、パイプラインを作成するときに必要です。

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

コレクションと適切なアクセス許可を持つロールを作成できたので、パイプラインを作成できます。

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

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

  3. パイプラインに serverless-ingestion という名前を付け、キャパシティ設定はデフォルトのままにします。

  4. このチュートリアルでは、log-pipeline というシンプルなサブパイプラインを作成し、HTTP ソースプラグインを使用します。プラグインは、JSON 配列形式のログデータを受け入れます。1 つの OpenSearch Serverless コレクションをシンクとして指定し、すべてのデータをmy_logsインデックスに取り込みます。

    [パイプライン設定] で、次の YAML 設定をエディタに貼り付けます。

    version: "2" log-pipeline: source: http: path: "/${pipelineName}/test_ingestion_path" processor: - date: from_time_received: true destination: "@timestamp" sink: - opensearch: hosts: [ "https://{collection-id}.us-east-1.aoss.amazonaws.com" ] index: "my_logs" aws: sts_role_arn: "arn:aws:iam::{your-account-id}:role/PipelineRole" region: "us-east-1" serverless: true
  5. hosts URL を、前のセクションで作成したコレクションのエンドポイントに置き換えます。sts_role_arn パラメータを PipelineRole の ARN に置き換えます。必要に応じて region を変更します。

  6. [パイプラインを検証] をクリックし、検証が成功したことを確認します。

  7. このチュートリアルでは、わかりやすいようにパイプラインにパブリックアクセスを設定します。[ネットワーク] で [パブリックアクセス] を選択します。

    VPC アクセスの設定の詳細については、「Amazon Ingestion OpenSearch パイプラインの VPC アクセスの設定」を参照してください。

  8. このチュートリアルを完了する間に問題が発生した場合に備えて、ログ発行を有効にしておきます。詳細については、「パイプラインのログのモニタリング」を参照してください。

    ロググループ名を次のように指定します: /aws/vendedlogs/OpenSearchIngestion/serverless-ingestion/audit-logs

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

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

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

注記

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

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

次に、いくつかのサンプルデータを取り込みます。次のサンプルリクエストでは、awscurl を使用して 1 つのログファイルを my_logs インデックスに送信します。

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/log-pipeline/test_ingestion_path

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" } } ] } }

関連リソース

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

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