Amazon Web Services ブログ

Amazon OpenSearch Service と Amazon S3 のゼロ ETL 統合によるデータ可観測性のモダナイズ

本記事は、Modernize your data observability with Amazon OpenSearch Service zero-ETL integration with Amazon S3 を翻訳したものです。翻訳は Solutions Architect の深見が担当しました。

私たちは、バージョン 2.13 以降のドメインでの Amazon OpenSearch Service の Amazon Simple Storage Service (Amazon S3) とのゼロ ETL 統合の 一般提供の開始を発表できることを喜ばしく思います。
この統合により、お客様は Amazon S3 と S3 ベースのデータレイクに格納されているオペレーショナルログを、ツールを切り替えることなくダイレクトクエリできるようになりました。
OpenSearch Service と S3 データセットにまたがってクエリを実行することで、運用とセキュリティイベントの包括的な分析を行うことができます。
OpenSearch Service との新しい統合により、AWS のゼロ ETL ビジョンが実現され、データの複製や複数の分析ツールの管理による運用の複雑さが軽減されます。
これにより、オペレーショナルデータへのダイレクトクエリを実行でき、コストと時間を削減できます。

OpenSearch は、Elasticsearch 7.10 から派生したオープンソース分散検索・分析スイートです。現在、OpenSearch Service には数万人のアクティブユーザーがおり、数十万のクラスターを管理し、毎月数兆件のリクエストを処理しています。

Amazon S3 は、業界をリードする拡張性、データ可用性、セキュリティ、パフォーマンスを提供するオブジェクトストレージサービスです。
あらゆる規模の企業やあらゆる業界が、データレイク、クラウド中心のアプリケーション、モバイルアプリなど、実質的にあらゆるユースケースに対して、無制限にデータを保存して保護できます。
コスト効率の高いストレージクラスとユーザーフレンドリーな管理機能により、コストを最適化し、データを整理し、ビジネス、組織、コンプライアンス要件に合わせて細かくアクセス制御を設定できます。
OpenSearch Service のこの興味深い新機能について詳しく見ていきましょう。

OpenSearch Service と Amazon S3 のゼロ ETL 統合を利用するメリット

OpenSearch Service の Amazon S3 との ゼロ ETL 統合により、OpenSearch Service 外の Amazon S3 に格納されているクエリの頻度が低いデータに対して、OpenSearch Service SQL と PPL の高度な分析機能を直接利用できます。また、他の OpenSearch との統合とも連携しているため、事前にパッケージ化されたクエリと可視化を導入して、データを分析できます。すぐに利用を開始できるよう簡単に設定できます。

次の図は、OpenSearch Service が一般的な AWS ログタイプの、あまり頻繁にクエリされないログがもつ価値を引き出す方法を示しています。

OpenSearch Service のダイレクトクエリを使用すると、Amazon S3 のデータに対してクエリを実行できます。
OpenSearch Service は、Amazon S3 のオペレーショナルログやデータレイクを分析するための Amazon S3 とのダイレクトクエリ統合機能を提供しています。
これにより、サービス間の切り替えを行うことなく、クラウドオブジェクトストアのデータを分析し、同時に OpenSearch Service のオペレーショナル分析と可視化機能を利用できます。

多くのお客様は現在、お客様自身が提供するソリューションに関するイベントデータを Amazon S3 に保存しています。オペレーショナル分析の文脈では、Amazon S3 は通常、VPC フローログAmazon S3 アクセスログAWS ロードバランサーログ、および他の AWS サービスからのイベントソースの宛先として使用されています。お客様はまた、コンプライアンスと監査のニーズから、アプリケーションイベントのデータを直接 Amazon S3 に保存しています。Amazon S3 の耐久性と拡張性により、低コストで利用できる長期保存やアーカイブオプションを必要とする多くのお客様にとって、データの保存先として明快な選択肢になります。

これらのソースからのデータを、ホットストレージとウォームストレージ層に格納された OpenSearch Service に取り込むことは、生成されるイベントのサイズとボリュームのために、現実的ではないケースがあります。OpenSearch Service のインデックスに格納されるイベントソースの一部については、データに対して実行されるクエリの量がクラスターにデータを保持し続けるコストに見合わないものもあります。以前は、クラスターにプロビジョニングされたストレージに基づいて、OpenSearch Service に取り込むイベントソースを選択する必要がありました。他のデータにアクセスするには、Amazon Athena などの別のツールを使用して、Amazon S3 上のデータを表示する必要がありました。

実際にこの新しい統合がどのように恩恵をもたらしたかを、Arcesiumの事例で見てみましょう。

“ Arcesiumは、金融サービス業界向けに高度なクラウドネイティブのデータ、オペレーション、分析機能を提供しています。当社のソフトウェア・プラットフォームは、1日に何百万件ものトランザクションを処理し、その過程で大量のログと監査記録を出力します。私たちが処理し、保存し、分析する必要のあるログデータの量は、私たちの保持とコンプライアンスのニーズを考慮すると、指数関数的に増加していました。Amazon OpenSearch Service の Amazon S3との新しいゼロ ETL 統合は、大規模でコストのかかる OpenSearch クラスタを維持したり、アドホックな取り込みパイプラインを構築したりする運用コストをかける代わりに、Amazon S3 にすでに保存されているクエリ頻度の低いログを分析できることで、私たちのビジネスのスケールに貢献しています。”

– Kyle George, SVP & Global Head of Infrastructure at Arcesium.

Amazon S3 へのダイレクトクエリにより、複雑な抽出、変換、ロード (ETL) パイプラインを構築する必要がなくなり、OpenSearch Service と Amazon S3 ストレージの両方にデータを複製するコストがかからなくなりました。

基本概念

ダイレクトクエリ接続を構成した後、OpenSearch Service Query Workbench を使用して AWS Glue Data Catalog 内にテーブルを作成する必要があります。ダイレクトクエリ接続は、Glue Data Catalog テーブル内のメタデータに依存する形で、Amazon S3 に格納されているデータを参照します。AWS Glue クローラーまたは Athena によって作成されたテーブルは、現在サポートされていないことに注意してください。

Data Catalog テーブルの構造、SQL インデックス技術、OpenSearch Service インデックスを組み合わせることで、クエリのパフォーマンスを加速し、高度な分析機能を解放し、クエリのコストを抑えることができます。
データを加速する方法の例をいくつか示します。

  • スキップインデックス – Amazon S3 に格納されているデータのメタデータのみを取り込み、インデックス化します。スキップインデックスを持つテーブルに対してクエリを実行すると、クエリプランナーがインデックスを参照し、すべてのパーティションとファイルをスキャンするのではなく、クエリを書き換えて効率的にデータの場所を特定します。これにより、スキップインデックスは分析に関連する格納データの特定の場所を素早く絞り込むことができます。
  • マテリアライズドビュー – マテリアライズドビューを使用すると、集計などの複雑なクエリを使ってダッシュボードの可視化を強化できます。マテリアライズドビューは、データの一部を OpenSearch Service のストレージに取り込みます。
  • カバリングインデックス – カバリングインデックスを使用すると、テーブル内の指定されたカラムからデータを取り込むことができます。これは 3 つのインデックスタイプの中で最も高性能です。OpenSearch Service が目的のカラムからすべてのデータを取り込むため、パフォーマンスが向上し、高度な分析を実行できます。OpenSearch Service は、カバリングインデックスデータから新しいインデックスを作成します。この新しいインデックスを使って、ダッシュボードの可視化や、異常検知や地理空間機能などの他の OpenSearch Service 機能を利用できます。

S3 バケットに新しいデータが入ると、マテリアライズドビューとカバリングインデックスのリフレッシュ間隔を設定して、Amazon S3 上の最新のデータにローカルでアクセスできるようにすることができます。

ソリューションの概要

VPC フローログをソースとして試してみましょう! 前述のように、多くの AWS サービスはログを Amazon S3 に出力します。VPC フローログは、Amazon Virtual Private Cloud (Amazon VPC) の機能で、VPC 内のネットワークインターフェースの送受信 IP トラフィックに関する情報をキャプチャできます。
このウォークスルーでは、次の手順を実行します。

  1. S3 バケットが未作成の場合は作成してください。
  2. トラフィックが生じており、ログを Amazon S3 上に Parquet 形式で保存できる既存の VPC を使用して、VPC フローログを有効にしてください。
  3. S3 バケットにログが存在することを確認してください。
  4. データが格納されている S3 バケットと Data Catalog に対して、ダイレクトクエリ接続を設定してください。
  5. VPC フローログ用の統合をインストールしてください。

S3 バケットの作成

既存の S3 バケットがある場合は、バケット内に新しいフォルダを作成することでそのバケットを再利用できます。バケットを新規作成する必要がある場合は、Amazon S3 コンソールに移動し、組織のポリシーに適したバケット名で Amazon S3 バケットを作成してください。

VPC フローログの有効化

VPC フローログを有効にするには、次の手順を実行してください。

  1. Amazon VPC コンソールで、アプリケーショントラフィックからログを生成できる VPC を選択します。
  2. フローログタブで、フローログを作成を選択します。
  3. フィルターでは、すべてを選択します。
  4. 最大集約間隔を 1 分に設定します。
  5. 送信先では、Amazon S3 バケットに送信を選択し、前に作成したバケットの S3 バケット ARN を入力します。
  6. ログレコード形式では、カスタム形式を選択し、Standard attributes を選んでください。

この記事では、執筆時点で Amazon Elastic Container Service (Amazon ECS) の属性は OpenSearch との統合がまだ実装されていないため、選択しません。

  1. ログファイル形式では、Parquet を選択してください。
  2. Hive 互換 S3 プレフィックスでは、有効化を選択してください。
  3. 時間にログをパーティション分割を 1 時間ごと (60 分) に設定してください。

S3 バケットにログが受信されていることの確認

先ほど作成した S3 バケットに移動すると、データがそのバケットにストリーミングされていることがわかります。
ディレクトリ構造を掘り下げていくと、ログが 1 時間ごとのフォルダに配信され、1 分ごとに出力されていることがわかります。

VPC フローログを S3 バケットに流し込めるようになったので、次は Amazon S3 上のデータと OpenSearch Service ドメインの間に接続を設定する必要があります。

ダイレクトクエリデータソースの設定

このステップでは、Glue Data Catalog のテーブルと Amazon S3 のデータを使用するダイレクトクエリデータソースを作成します。このアクションにより、Hive メタストア (Glue Data Catalog のデータベースとテーブル、およびデータソースがアクセスするバケットとフォルダーの組み合わせに格納されている Amazon S3 のデータ) にアクセスするために必要なすべてのインフラストラクチャが作成されます。
また、セキュリティプラグインの きめ細かなアクセス制御 に適切な権限が組み込まれるため、開始時の権限を気にする必要はありません。

次の手順に従って、ダイレクトクエリデータソースを設定してください:

  1. OpenSearch Service ドメインで、ナビゲーションペインの ドメイン を選択します。
  2. ドメインを選択します。
  3. Connections タブで、Create new connection を選択します。
  4. Name には、zero_etl_walkthrough のようにダッシュを含まない名前を入力します。
  5. Description には、説明を入力します。
  6. Data source type では、Amazon S3 with AWS Glue Data Catalog を選択します。
  7. IAM role では、初めての場合は、Create a new role を選択して、ダイレクトクエリの設定で権限を処理させます。後で組織のコンプライアンスとセキュリティニーズに基づいて編集できます。この記事では、ロール名を zero_etl_walkthrough としています。
  8. S3 buckets では、さきほど作成したバケットを使用します。
  9. Grant access to all existing and new buckets という項目のチェックボックスは選択しないでください。
  10. Checkpoint S3 bucket では、作成したバケットと同じものを使用します。チェックポイントフォルダは自動的に作成されます。
  11. AWS Glue tables では、Data Catalog で作成したものがないため、Grant access to all existing and new tables を有効にします。

VPC フローログの OpenSearch 統合では、Data Catalog 内にリソースが作成されるため、それらのリソースにアクセスする権限が必要になります。

  1. 作成を選択します。

初期設定が完了したので、VPC フローログの OpenSearch 統合をインストールできます。

VPC フローログの OpenSearch 統合のインストール

OpenSearch のインテグレーションプラグインには、さまざまなソースから生成されたデータを可視化し、操作するのを簡単にするための、事前構築済みのダッシュボード、ビジュアライゼーション、マッピングテンプレート、その他のリソースが多数含まれています。
Amazon VPC 向けのインテグレーションでは、Amazon S3 に保存された VPC フローログデータを表示するためのさまざまなリソースがインストールされます。

このセクションでは、最新の統合パッケージをインストールするための手順を説明します。次に、OpenSearch 統合のインストール方法を示します。マイナーバージョンまたはメジャーバージョンのリリース時点では、VPC フローログ、NGINX、HA Proxy、Amazon S3 (アクセスログ) などの最新の統合が含まれている場合がほとんどです。ただし、OpenSearch はオープンソースのコミュニティ主導のプロジェクトであり、現在の展開に含まれていない新しいバージョンや新しい統合が登場することが予想されます。

OpenSearch と Amazon VPC の統合の最新バージョンの検証

OpenSearch Service の以前のバージョンから 2.13 にアップグレードする必要があります。このポストの内容と、あなたのデプロイ状況が一致していることを確認しましょう。

OpenSearch Dashboards で Integrations タブに移動し、Amazon VPC を選択します。インテグレーションのリリースバージョンが表示されます。

バージョン 1.1.0 以降がインストールされていることを確認してください。デプロイ環境にインストールされていない場合は、OpenSearch カタログから最新バージョンのインテグレーションをインストールできます。以下の手順を実行してください。

  1. OpenSearch カタログに移動します。
  2. Amazon VPC Flow Logs を選択します。
  3. amazon_vpc_flow_1.1.0 というラベルのリポジトリフォルダから、1.1.0 Amazon VPC integrationファイルをダウンロードします。
  4. OpenSearch ダッシュボードの Dashboards Management プラグインで、Saved Objects を選択します。
  5. Import を選択し、ローカルフォルダを参照します。
  6. ダウンロードしたファイルをインポートします。

このファイルには、インテグレーションを作成するために必要なすべてのオブジェクトが含まれています。インストール後、Amazon VPC OpenSearch インテグレーションのセットアップ手順に進むことができます。

OpenSearch と Amazon VPC の統合設定

さっそく統合をインストールしましょう:

  1. OpenSearch Dashboards で、Integrations タブに移動します。
  2. Available タブに遷移し、Amazon VPC の統合を選択します。
  3. バージョンが 1.1.0 以降であることを確認し、Set Up を選択します。
  4. Display Name はデフォルトのままにします。
  5. Connection Type では、S3 Connection を選択します。
  6. Data Source では、前の手順で作成したダイレクトクエリ接続の名前を選択します。この投稿では zero_etl_walkthrough を使用します。
  7. Spark Table Name では、事前入力された amazon_vpc_flow のままにします。
  8. S3 Data Location では、前の手順で設定した VPC Flow Logs によって作成されたログフォルダの S3 URI を入力します。この投稿では s3://zero-etl-walkthrough/AWSLogs/ を使用します。

S3 バケット名はグローバルに一意である必要があり、会社のコンプライアンスガイダンスに準拠したバケット名を使用することを検討する必要があります。
一意性を保証するには、UUID に説明的な名前を付けるのが良い選択肢です。

  1. S3 Checkpoint Location では、定義したチェックポイントフォルダの S3 URI を入力してください。チェックポイントは、ダイレクトクエリ機能のメタデータを格納します。選択したバケットの空のパスまたは未使用のパスを選んでください。この記事では、前に作成したバケットの s3://zero-etl-walkthrough/CP/ を使用します。
  2. Queries (recommended)Dashboards and Visualizations for Flint Integrations using live queries を選択します。

「Setting Up the Integration – this can take several minutes. (インテグレーションのセットアップ – これには数分かかる場合があります)」というメッセージが表示されます。この特定のインテグレーションでは、Amazon S3 内のデータ上にスキップインデックスとマテリアライズドビューが設定されます。
マテリアライズドビューは、データをバッキングインデックスに集約し、すべてのデータを取り込んでその上に可視化を構築するよりも、クラスター内のデータ容量を大幅に小さくすることができます。

Amazon VPC 統合のインストールが完了すると、さまざまなアセットを利用できるようになります。インストール済みの統合を確認すると、Amazon S3 上のデータを使ってデータ探索を始められるクエリ、ビジュアライゼーション、その他のアセットが見つかります。この統合でインストールされるダッシュボードを見てみましょう。

コストはいくらですか?

OpenSearch Service のダイレクトクエリでは、ワークロードで消費されたリソースのみの料金が発生します。OpenSearch Service では、外部データを照会するために必要な計算リソースと、オプションで OpenSearch Service 内のインデックスを維持するための計算リソースのみが課金されます。計算容量は OpenSearch Compute Unit (OCU) で測定されます。クエリやインデックス作成が行われていない場合は、OCU は消費されません。次の表は、us-east-1 で HTTP ログを検索した場合の計算料金の例を示しています。

クエリごとにスキャンされるデータ (GB) クエリごとの OCU 価格 (USD)
1-10 $0.026
100 $0.24
1000 $1.35

料金は問い合わせごとに使用される OCU に基づいているため、このソリューションは頻繁に問い合わせされないデータ向けにカスタマイズされています。ユーザーがデータを頻繁に問い合わせする場合は、OR1 インスタンスUltraWarm などのストレージ最適化手法を活用し、OpenSearch Service への完全な取り込みを実施することが適切になります。

ゼロ ETL 統合で消費された OCU は、AWS Cost Explorer にアカウントレベルで表示されます。
アカウントレベルで OCU 使用量を把握し、しきい値を設定して、しきい値を超えた際にアラートを出すことができます。
Cost Explorer でフィルタリングする使用量の種類の形式は、RegionCode-DirectQueryOCU (OCU 時間) です。
AWS Budgets を使用して予算を作成し、DirectQueryOCU (OCU 時間) の使用量が設定したしきい値に達したときにアラートを設定できます。
また、Amazon Simple Notification Service (Amazon SNS) トピックと、ターゲットとして AWS Lambda 関数を使用してしきい値の条件を満たしたときにデータソースをオフにすることもできます。

サマリ

ダイレクトクエリ接続機能、OpenSearch 統合、および OpenSearch Service の Amazon S3 との ゼロ ETL 統合がどのように機能するかの概要を理解いただけたら、この機能をご自身の組織のツールセットの一部として利用することを検討してください。
OpenSearch Service の Amazon S3 との ゼロ ETL 統合により、イベント分析の新しいツールが利用できるようになりました。
ホットデータを OpenSearch Service に取り込めば、リアルタイムに近い分析とアラートが可能になります。
主にイベント後の分析と相関分析に使用される頻繁にクエリされることのない大量のデータは、Amazon S3 上でクエリできるため、データを OpenSearch Service に移動する必要がありません。
データは、コスト効率の高い Amazon S3 に保存されたままで、分析のために OpenSearch Service にデータを移動するための追加インフラストラクチャを構築することなく、必要に応じてデータにアクセスできます。

詳細については、Amazon S3 での Amazon OpenSearch Service のダイレクトクエリの操作を参照してください。

著者について

Joshua Bright は、Amazon Web Services のシニアプロダクトマネージャーです。Joshua は OpenSearch Service チームでデータレイク統合イニシアチブを主導しています。仕事以外では、Joshua は自然の中を散歩しながら鳥のさえずりを聞くのが好きです。

Kevin Fallis は、Amazon Web Services のプリンシパル スペシャリスト ソリューションアーキテクトです。お客様が適切な AWS サービスの組み合わせを活用して、ビジネス目標を達成できるよう支援することに情熱を注いでいます。仕事後の活動には、家族、DIY プロジェクト、大工仕事、ドラムを演奏すること、そして音楽全般が含まれます。


Sam Selvan
は、Amazon OpenSearch Service の Principal Specialist Solution Architect です。