OpenSearch Service における Amazon S3 データソース統合の作成
AWS マネジメントコンソール または API を通じて、OpenSearch Service 用に新しい Amazon S3 ダイレクトクエリデータソースを作成できます。新しいデータソースはそれぞれ、AWS Glue Data Catalog を使用して Amazon S3 バケットを表すテーブルを管理します。
前提条件
作業を始める前に、以下の文書を確認したか確かめてください:
データソースを作成する前に、お使いの AWS アカウント に以下のリソースが存在する必要があります。
-
バージョン 2.13 以降の OpenSearch ドメイン これは、ダイレクトクエリ統合を設定するための基盤です。これをセットアップする手順については、「 OpenSearch Service ドメインの作成」を参照してください。
-
1 つ以上の S3 バケット。クエリするデータを含むバケットと、クエリのチェックポイントを保存するバケットを指定する必要があります。S3 バケットの作成方法については、「Amazon S3 ユーザーガイド」の「バケットの作成」を参照してください。
-
(オプション) 1 つ以上の AWS Glue テーブル。Amazon S3 でデータをクエリするには、S3 データを指すように AWS Glue Data Catalog にテーブルを設定しておく必要があります。OpenSearch Query Workbench を使用してテーブルを作成する必要があります。既存の Hive テーブルには互換性がありません。
Amazon S3 データソースを初めて設定する場合は、管理者データソースを作成してすべての AWS Glue Data Catalog テーブルを設定する必要があります。これを行うには、すぐに使用できる OpenSearch 統合をインストールするか、OpenSearch Query Workbench を使用して高度なユースケース用のカスタム SQL テーブルを作成します。VPC、CloudTrail、および AWS WAF のログのテーブルを作成する例については、GitHub 上の VPC
、CloudTrail 、AWS WAF のドキュメントを参照してください。テーブルを作成したら、新しい Amazon S3 データソースを作成し、アクセスを限定されたテーブルのみに制限できます。 -
(オプション) 手動で作成された IAM ロール。このロールを使用して、データソースへのアクセスを管理できます。または、OpenSearch Service で必要なアクセス許可を持つロールを自動的に作成することも可能です。手動で作成した IAM ロールを使用する場合は、手動で作成された IAM ロールに必要なアクセス許可 にあるガイダンスに従ってください。
手順
AWS マネジメントコンソール または OpenSearch Service API を使用して、ドメイン上にダイレクトクエリデータソースを設定できます。
-
Amazon OpenSearch Service コンソール (https://console.aws.amazon.com/aos/
) に移動します。 -
左側のナビゲーションペインで [ドメイン] を選択します。
-
新しいデータソースを設定するドメインを選択します。選択すると、ドメインの詳細ページが開きます。
-
一般的なドメインの詳細の下にある [接続] タブを選択し、[ダイレクトクエリ] セクションを見つけます。
-
[データソースの設定] を選択します。
-
新しいデータソースの名前と適宜説明を入力します。
-
[AWS Glue Data Catalog による Amazon S3] を選択します。
-
[IAM アクセス許可の設定] で、アクセスを管理する方法を選択します。
-
このデータソースのロールを自動的に作成する場合は、次の手順に従います。
-
[新しいロールを作成する] を選択します。
-
IAM ロールの名前を入力します。
-
クエリするデータを含む S3 バケットを 1 つ以上選択します。
-
クエリチェックポイントを保存するチェックポイント S3 バケットを選択します。
-
クエリ可能なデータをデータを定義するために、AWS Glue データベースまたはテーブルを 1 つ以上選択します。テーブルがまだ作成されていない場合は、デフォルトのデータベースへのアクセスを提供します。
-
-
自分で管理している既存のロールを使用する場合は、次の手順に従います。
-
[既存のロールを使用] を選択します。
-
ドロップダウンメニューから既存のロールを選択します。
-
注記
独自のロールを使用する場合は、IAM コンソールから必要なポリシーをアタッチして、すべての必要なアクセス許可があることを確認する必要があります。詳細については、「手動で作成された IAM ロールに必要なアクセス許可」内のサンプルポリシーを参照してください。
-
-
[設定] を選択します。これにより、OpenSearch Dashboards URL を含むデータソースの詳細の画面が開きます。この URL に移動して、次のステップを完了できます。
AddDataSource API オペレーションを使用して、ドメインに新しいデータソースを作成します。
POST https://es.region.amazonaws.com/2021-01-01/opensearch/domain/domain-name/dataSource { "DataSourceType": { "S3GlueDataCatalog": { "RoleArn": "arn:aws:iam::account-id:role/role-name" } } "Description": "data-source-description", "Name": "my-data-source" }
次のステップ
OpenSearch Dashboards にアクセスする
データソースを作成すると、OpenSearch Service は OpenSearch Dashboards のリンクを提供します。これを使用して、アクセス制御の設定、テーブルの定義、設定不要な統合のインストール、データのクエリを行うことができます。
詳細については、「OpenSearch Dashboards での S3 データソースの設定とクエリ」を参照してください。
AWS Glue Data Catalog ロールをマッピングする
データソースを作成後、きめ細かなアクセスコントロールが有効になっている場合、ダイレクトクエリを実行するには、管理者以外のユーザーを、AWS Glue Data Catalog アクセスが付与されている IAM ロールにマッピングする必要があります。IAM ロールにマッピングできるバックエンド glue_access ロールを手動で作成するには、次のステップを実行します。
注記
インデックスは、データソースに対するクエリに使用されます。特定のデータソースのリクエストインデックスの読み取りアクセス権を持つユーザーは、そのデータソースに対するすべてのクエリを読み取ることができます。結果インデックスの読み取りアクセス権を持つユーザーは、そのデータソースに対するすべてのクエリの結果を読み取ることができます。
-
OpenSearch Dashboards のメインメニューから、[セキュリティ]、[ロール]、[ロールを作成] の順に選択します。
-
ロールに glue_access という名前を付けます。
-
[クラスターの許可] で、
indices:data/write/bulk*、indices:data/read/scroll、またはindices:data/read/scroll/clearを選択します。 -
[インデックス] で、ロールアクセスをユーザーに付与する次のインデックスを入力します:
-
.query_execution_request_<name of data source> -
query_execution_result_<name of data source> -
.async-query-scheduler -
flint_*
-
-
[インデックスの許可] で、
indices_allを選択します。 -
[作成] を選択します。
-
[マッピングされたユーザー]、[マッピングの管理] を選択します。
-
[バックエンドロール] で、ドメインを呼び出す許可を必要とする AWS Glue ロールの ARN を追加します。
arn:aws:iam::account-id:role/role-name -
マップを選択し、ロールがマッピングされたユーザーに表示されていることを確認します。
ロールのマッピングの詳細については、「ユーザーへのロールのマッピング」を参照してください。
その他のリソース
手動で作成された IAM ロールに必要なアクセス許可
お使いのドメインのデータソースを作成するときは、データへのアクセスを管理する IAM ロールを選択します。これには 2 つのオプションがあります。
-
新しい IAM ロールを自動で作成する
-
手動で作成した既存の IAM ロールを使用する
手動で作成したロールを使用する場合は、そのロールに正しいアクセス許可をアタッチする必要があります。そのアクセス許可は、特定のデータソースへのアクセスを許可するものであり、OpenSearch Service がロールを引き継ぐことを許可する必要があります。これは、OpenSearch Service がデータに安全にアクセスして操作できるようにするために必要です。
次のサンプルポリシーは、データソースの作成と管理に必要な最小特権の許可を示しています。s3:* または AdminstratorAccess ポリシーなどのより広範な許可を持っている場合、これらの許可にはサンプルポリシーの最小特権が含まれます。
次のサンプルポリシーでは、placeholder text をユーザー自身の情報に置き換えます。
異なるアカウントで Amazon S3 バケットをサポートするには、Amazon S3 ポリシーに条件を含め、適切なアカウントを追加する必要があります。
次の例では、placeholder text をユーザー自身の情報に置き換えます。
"Condition": { "StringEquals": { "aws:ResourceAccount": "{{accountId}}" }
また、ロールには、ターゲット ID を指定する次の信頼ポリシーが必要です。
ロールを作成する手順については、「カスタム信頼ポリシーを使用したロールの作成」を参照してください。
OpenSearch Service できめ細かなアクセスコントロールが有効になっている場合、データソースに対して新しい OpenSearch のきめ細かなアクセスコントロールロールが自動的に作成されます。新しいきめ細かなアクセスコントロールロールの名前は AWSOpenSearchDirectQuery になります。<name of data
source>
デフォルトでは、ロールは直接クエリデータソースインデックスにのみアクセスできます。データソースへのアクセスを制限または許可するようにロールを設定できますが、このロールのアクセスは調整しないことをお勧めします。データソースを削除すると、このロールは削除されます。これにより、他のユーザーがロールにマッピングされている場合、そのユーザーのアクセスは削除されます。