Amazon Ingestion OpenSearch パイプラインの作成 - Amazon OpenSearch サービス

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

Amazon Ingestion OpenSearch パイプラインの作成

パイプラインは、Amazon Ingestion OpenSearch がソース (データの出所) からシンク (データの出所) にデータを移動するために使用するメカニズムです。取り込み OpenSearch では、シンクは常に単一の Amazon OpenSearch Service ドメインになりますが、データのソースは Amazon S3、Fluent Bit、 OpenTelemetry コレクターなどのクライアントである可能性があります。

詳細については、 OpenSearch ドキュメントの「パイプライン」を参照してください。

前提条件と必要なロール

OpenSearch 取り込みパイプラインを作成するには、次のリソースが必要です。

  • Ingestion がシンクに書き込むために引き受ける OpenSearch IAM ロール。このロールの ARN をパイプライン設定に含めます。

  • シンクとして機能する OpenSearch サービスドメインまたは OpenSearch サーバーレスコレクション。ドメインに書き込む場合は、 OpenSearch 1.0 以降、または Elasticsearch 7.4 以降を実行している必要があります。シンクには、IAM パイプラインロールに適切な許可を付与するアクセスポリシーが必要です。

これらのリソースの作成手順については、次の各トピックを参照してください。

注記

きめ細かなアクセスコントロールを使用するドメインに書き込む場合は、追加の手順を実行する必要があります。ステップ 3: パイプラインロールをマッピングする (きめ細かいアクセスコントロールを使用するドメインについてのみ) を参照してください。

必要なアクセス許可

OpenSearch 取り込みでは、パイプラインの作成に次の IAM アクセス許可を使用します。

  • osis:CreatePipeline — パイプラインを作成します。

  • osis:ValidatePipeline — パイプライン設定が有効かどうかを確認します。

  • iam:PassRole — パイプラインロールを Ingestion OpenSearch に渡して、ドメインにデータを書き込めるようにします。このアクセス許可は、パイプラインロールリソース (パイプライン設定の sts_role_arn オプションで指定する ARN) にある必要があります。また、パイプラインごとに異なるロールを使用する場合は、* を使用します。

例えば、次のポリシーは、パイプラインを作成するためのアクセス許可を付与します。

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

OpenSearch 取り込みにはosis:Ingest、署名バージョン 4 を使用して署名付きリクエストをパイプラインに送信するために必要な というアクセス許可も含まれています。詳細については、「取り込みロールの作成」を参照してください。

注記

また、アカウントで最初にパイプラインを作成するユーザーは、iam:CreateServiceLinkedRole アクションの許可を有している必要があります。詳細については、「パイプラインロールリソース」を参照してください。

各アクセス許可の詳細については、「サービス認証リファレンス」の OpenSearch 「取り込みのアクション、リソース、および条件キー」を参照してください。

パイプラインのバージョンの指定

パイプラインを設定するときは、パイプラインを実行する Data Prepper のメジャーバージョンを指定する必要があります。バージョンを指定するには、パイプライン設定に version オプションを含めます。

version: "2" log-pipeline: source: ...

作成 を選択すると、 OpenSearch Ingestion は指定したメジャーバージョンの利用可能な最新のマイナーバージョンを決定し、そのバージョンでパイプラインをプロビジョニングします。例えば、 を指定しversion: "2"、Data Prepper のサポートされている最新バージョンが 2.1.1 の場合、Ingestion OpenSearch はパイプラインをバージョン 2.1.1 でプロビジョニングします。パイプラインで実行されているマイナーバージョンは公開されません。

Data Prepper の新しいメジャーバージョンが利用可能になったときに、パイプラインをアップグレードするには、パイプライン設定を編集して新しいバージョンを指定します。パイプラインを以前のバージョンにダウングレードすることはできません。

注記

OpenSearch 取り込みでは、Data Prepper の新しいバージョンがリリースされるとすぐにはサポートされません。新しいバージョンが公開されてから Ingestion OpenSearch でサポートされるまで、多少の遅延が生じます。さらに、Ingestion OpenSearch は特定のメジャーバージョンまたはマイナーバージョンを完全にサポートしていない場合があります。詳細な一覧については、「サポートされている Data Prepper のバージョン」を参照してください。

ブルー/グリーンデプロイを開始するパイプラインに変更を加えるたびに、Ingestion OpenSearch はパイプライン YAML ファイルで現在設定されているメジャーバージョンの最新のマイナーバージョンにアップグレードできます。詳細については、「」を参照してくださいパイプライン更新用のブルー/グリーンデプロイ。パイプライン設定内の versionオプションを明示的に更新しない限り、 OpenSearch 取り込みはパイプラインのメジャーバージョンを変更できません。

取り込みパスの指定

OTel トレースや OTel メトリクスなどのプルベースのソースの場合、Ingestion OpenSearch ではソース設定に追加pathのオプションが必要です。パスは /log/ingest のような文字列で、取り込み用の URI パスを示しています。このパスが、データをパイプラインに送信する際に使用する URI を定義します。

例えば、logs という名前の取り込みパイプラインに次のエントリサブパイプラインを指定したとします。

entry-pipeline: source: http: path: "/my/test_path"

パイプラインにデータを取り込むときは、クライアント設定で次のエンドポイントを指定する必要があります: https://logs-abcdefgh.us-west-2.osis.amazonaws.com/my/test_path

パスはスラッシュ (/) から開始し、「-」、「_」、「.、「/」などの特殊文字や ${pipelineName} プレースホルダーを含めることができます。${pipelineName} (path: "/${pipelineName}/test_path" のように) を使用すると、変数は関連するサブパイプラインの名前に置き換えられます。この例では、https://logs.us-west-2.osis.amazonaws.com/entry-pipeline/test_path のようになります。

パイプラインの作成

このセクションでは、 OpenSearch サービスコンソールと OpenSearch を使用して取り込みパイプラインを作成する方法について説明します AWS CLI。

パイプラインを作成するには
  1. https://console.aws.amazon.com/aos/home で Amazon OpenSearch Service コンソールにサインインします。

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

  3. パイプラインの名前を入力します。

  4. (オプション) [永続的バッファリングを有効にする] を選択します。永続的バッファリングは、複数の AZ にまたがってディスクベースのバッファにデータを保存します。詳細については、「永続的バッファリング」を参照してください。永続バッファを有効にする場合は、 AWS Key Management Service キーを選択してバッファデータを暗号化します。

  5. 取り込み OpenSearch コンピューティングユニット (OCUs) でパイプラインの最小容量と最大容量を設定します。詳細については、「パイプラインのスケーリング」を参照してください。

  6. [パイプライン設定] で、パイプライン設定を YAML 形式で入力します。1 個のパイプライン設定ファイルには、1~10 個のサブパイプラインを含めることができます。各サブパイプラインは、1 個のソース、0 個以上のプロセッサ、1 個のシンクの組み合わせです。 OpenSearch 取り込みの場合、シンクは常に OpenSearch サービスドメインである必要があります。サポートされているオプションのリストについては、「Amazon Ingestion OpenSearch パイプラインでサポートされているプラグインとオプション」を参照してください。

    注記

    各サブパイプラインには sts_role_arn オプションと sigv4 オプションを含める必要があります。パイプラインは、ドメインへのリクエストに署名sts_role_arnするために で定義されたロールを引き受けます。詳細については、「Amazon Ingestion OpenSearch パイプラインにドメインへのアクセスを許可する」を参照してください。

    次のサンプル設定ファイルは、HTTP ソースプラグインと Grok プラグインを使用して非構造化ログデータを処理し、 OpenSearch それを サービスドメインに送信します。サブパイプラインには、log-pipeline という名前が付けられています。

    version: "2" log-pipeline: source: http: path: "/log/ingest" processor: - grok: match: log: [ '%{COMMONAPACHELOG}' ] - date: from_time_received: true destination: "@timestamp" sink: - opensearch: hosts: [ "https://search-my-domain.us-east-1.es.amazonaws.com" ] index: "apache_logs" aws: sts_role_arn: "arn:aws:iam::123456789012:role/{pipeline-role}" region: "us-east-1"
    注記

    YAML パイプライン定義内で複数のシンクを指定する場合、それらはすべて同じ OpenSearch サービスドメインである必要があります。 OpenSearch 取り込みパイプラインは、複数の異なるドメインに書き込むことはできません。

    独自のパイプライン設定を作成することもできますが、[ファイルをアップロード] をクリックして、セルフマネージド型の Data Prepper パイプラインの既存設定をインポートすることもできます。または、設定のブループリントを使用することもできます。

  7. パイプラインを設定したら、[パイプラインを検証] をクリックして設定が正しいことを確認します。検証に失敗した場合、エラーを修正して検証を再実行します。

  8. ネットワーク設定 で、VPC アクセス またはパブリックアクセス を選択します。[パブリックアクセス] を選択した場合は、次のステップに進みます。[VPC アクセス] を選択した場合は、次の設定を行います。

    設定 説明
    エンドポイント管理

    VPC エンドポイントを自分で作成するか、 OpenSearch 取り込みで作成するかを選択します。エンドポイント管理のデフォルトは、Ingestion OpenSearch によって管理されるエンドポイントです。

    VPC

    使用する仮想プライベートクラウド (VPC) の ID を選択します。VPC とパイプラインは同じ AWS リージョンの中になければなりません。

    サブネット

    1 つ以上のサブネットを選択します。 OpenSearch サービスは VPC エンドポイントと Elastic Network Interface をサブネットに配置します。

    セキュリティグループ

    必要なアプリケーションがパイプラインによって公開されるポート (80 または OpenSearch 443) とプロトコル (HTTP または HTTP) の Ingestion パイプラインに到達できるようにする HTTPs1 つ以上選択します。

    VPC アタッチメントオプション

    ソースがセルフマネージドエンドポイントの場合は、パイプラインを VPC にアタッチします。提供されているデフォルトの CIDR オプションのいずれかを選択するか、カスタム CIDR を使用します。

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

  9. (オプション) [タグ] で、1 つ以上のタグ (キーと値のペア) をパイプラインに追加します。詳細については、「Amazon OpenSearch Ingestion パイプラインのタグ付け」を参照してください。

  10. (オプション) ログ発行オプション で、Amazon CloudWatch Logs へのパイプラインログの発行を有効にします。パイプラインの問題をより簡単にトラブルシューティングできるように、ログの発行を有効にすることをお勧めします。詳細については、「パイプラインのログのモニタリング」を参照してください。

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

  12. パイプライン設定を確認したら、[作成] をクリックします。

OpenSearch 取り込みは非同期プロセスを実行してパイプラインを構築します。パイプラインのステータスが Active になると、データの取り込みを開始できます。

create-pipeline コマンドは、パイプライン設定を文字列として、またはは .yaml ファイル内で受け入れます。設定を文字列として入力する場合、改行するたびに \n でエスケープする必要があります。例えば、次のようになります: "log-pipeline:\n source:\n http:\n processor:\n - grok:\n ...

次のサンプルコマンドは、以下にある設定でパイプラインを作成します。

  • 最低 4 つの取り込み OCU、最大 10 個の取り込み OCU

  • 仮想プライベートクラウド (VPC) 内でプロビジョニング

  • ログ発行の有効化

aws osis create-pipeline \ --pipeline-name my-pipeline \ --min-units 4 \ --max-units 10 \ --log-publishing-options IsLoggingEnabled=true,CloudWatchLogDestination={LogGroup="MyLogGroup"} \ --vpc-options SecurityGroupIds={sg-12345678,sg-9012345},SubnetIds=subnet-1212234567834asdf \ --pipeline-configuration-body "file://pipeline-config.yaml"

OpenSearch 取り込みは非同期プロセスを実行してパイプラインを構築します。パイプラインのステータスが Active になると、データの取り込みを開始できます。パイプラインのステータスを確認するには、 GetPipeline コマンドを使用します。

Ingestion API OpenSearch を使用して Ingestion OpenSearch パイプラインを作成するには、 CreatePipelineオペレーションを呼び出します。

パイプラインが正常に作成されたら、クライアントを設定し、 OpenSearch サービスドメインへのデータの取り込みを開始できます。詳細については、「Amazon Ingestion OpenSearch パイプライン統合の使用」を参照してください。

パイプラインの作成ステータスの追跡

Ingestion OpenSearch がパイプラインをプロビジョニングし、データを取り込む準備をするときに、パイプラインのステータスを追跡できます。

パイプラインを最初に作成した後、Ingestion OpenSearch がデータを取り込む準備をするときに、パイプラインは複数の段階を経ます。パイプライン作成のさまざまな段階を確認するには、パイプライン名をクリックして[パイプラインの設定] ページを表示します。[ステータス] で、[詳細を表示] をクリックします。

パイプラインは、データの取り込みが可能になるまでに次の段階を経ます。

  • 検証 — パイプライン設定を検証する。この段階が完了すると、すべての検証が成功したことになります。

  • 環境の作成 — リソースの準備とプロビジョニングを行います。この段階が完了すると、新しいパイプライン環境が作成されます。

  • パイプラインのデプロイ — パイプラインをデプロイします。この段階が完了すると、パイプラインは正常にデプロイされます。

  • パイプラインのヘルスチェック — パイプラインのヘルス状態をチェックします。この段階が完了すると、すべてのヘルスチェックを通過したことになります。

  • トラフィックの有効化 — パイプラインがデータを取り込むことができるようにします。この段階が完了すると、パイプラインへのデータの取り込みを開始できます。

get-pipeline-change-progress コマンドを使用して、パイプラインのステータスを確認します。次の AWS CLI リクエストは、 という名前のパイプラインのステータスをチェックしますmy-pipeline

aws osis get-pipeline-change-progress \ --pipeline-name my-pipeline

レスポンス:

{ "ChangeProgressStatuses": { "ChangeProgressStages": [ { "Description": "Validating pipeline configuration", "LastUpdated": 1.671055851E9, "Name": "VALIDATION", "Status": "PENDING" } ], "StartTime": 1.671055851E9, "Status": "PROCESSING", "TotalNumberOfStages": 5 } }

Ingestion API を使用してパイプライン作成のステータスを追跡するには、 OpenSearch GetPipelineChangeProgressオペレーションを呼び出します。

ブループリントを使用したパイプラインの作成

パイプラインの定義をゼロから作成するのではなく、設定のブループリントを使用できます。設定のブループリントは、トレース分析や Apache ログなどの一般的な取り込みシナリオ用に事前設定された YAML テンプレートです。設定のブループリントを使用すると、設定をゼロから作成しなくても、パイプラインを簡単にプロビジョニングできます。

パイプラインのブループリントを使用するには
  1. https://console.aws.amazon.com/aos/home で Amazon OpenSearch Service コンソールにサインインします。

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

  3. ブループリントを選択します。パイプライン設定には、選択したユースケースのサブパイプラインが入力されます。

  4. コメントアウトされたテキストを確認します。ここには、ブループリント設定についての説明が記載されています。

    重要

    パイプラインのブループリントは、そのままでは有効になりません。認証に使用する AWS リージョン やロール ARN を指定するなど、いくつかの変更を行う必要があります。そうしないと、パイプラインの検証は失敗します。

を使用して使用可能なすべてのブループリントのリストを取得するには AWS CLI、 list-pipeline-blueprintsリクエストを送信します。

aws osis list-pipeline-blueprints

このリクエストは、利用可能なすべてのブループリントのリストを返します。

特定のブループリントに関する詳細情報を取得するには、 get-pipeline-blueprint コマンドを使用します。

aws osis get-pipeline-blueprint --blueprint-name AWS-ApacheLogPipeline

このリクエストは、Apache ログパイプラインブループリントの内容を返します。

{ "Blueprint":{ "PipelineConfigurationBody":"###\n # Limitations: https://docs.aws.amazon.com/opensearch-service/latest/ingestion/ingestion.html#ingestion-limitations\n###\n###\n # apache-log-pipeline:\n # This pipeline receives logs via http (e.g. FluentBit), extracts important values from the logs by matching\n # the value in the 'log' key against the grok common Apache log pattern. The grokked logs are then sent\n # to OpenSearch to an index named 'logs'\n###\n\nversion: \"2\"\napache-log-pipeline:\n source:\n http:\n # Provide the path for ingestion. ${pipelineName} will be replaced with pipeline name configured for this pipeline.\n # In this case it would be \"/apache-log-pipeline/logs\". This will be the FluentBit output URI value.\n path: \"/${pipelineName}/logs\"\n processor:\n - grok:\n match:\n log: [ \"%{COMMONAPACHELOG_DATATYPED}\" ]\n sink:\n - opensearch:\n # Provide an AWS OpenSearch Service domain endpoint\n # hosts: [ \"https://search-mydomain-1a2a3a4a5a6a7a8a9a0a9a8a7a.us-east-1.es.amazonaws.com\" ]\n aws:\n # Provide a Role ARN with access to the domain. This role should have a trust relationship with osis-pipelines.amazonaws.com\n # sts_role_arn: \"arn:aws:iam::123456789012:role/Example-Role\"\n # Provide the region of the domain.\n # region: \"us-east-1\"\n # Enable the 'serverless' flag if the sink is an Amazon OpenSearch Serverless collection\n # serverless: true\n index: \"logs\"\n # Enable the S3 DLQ to capture any failed requests in an S3 bucket\n # dlq:\n # s3:\n # Provide an S3 bucket\n # bucket: \"your-dlq-bucket-name\"\n # Provide a key path prefix for the failed requests\n # key_path_prefix: \"${pipelineName}/logs/dlq\"\n # Provide the region of the bucket.\n # region: \"us-east-1\"\n # Provide a Role ARN with access to the bucket. This role should have a trust relationship with osis-pipelines.amazonaws.com\n # sts_role_arn: \"arn:aws:iam::123456789012:role/Example-Role\"\n", "BlueprintName":"AWS-ApacheLogPipeline" } }

Ingestion API を使用してパイプラインの設計図に関する情報を取得するには、 ListPipelineBlueprintsおよび OpenSearch GetPipelineBlueprintオペレーションを使用します。