翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
OpenSearch Service 用の新しい Amazon S3 ダイレクトクエリデータソースは、 AWS Management Console または API を使用して作成できます。新しいデータソースはそれぞれ、 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 out-of-the-box 統合をインストールするか、OpenSearch Query Workbench を使用して高度なユースケース用のカスタム SQL テーブルを作成します。VPC、CloudTrail、および AWS WAF ログのテーブルを作成する例については、GitHub for VPC
、CloudTrail 、および のドキュメントを参照してくださいAWS WAF 。テーブルを作成したら、新しい Amazon S3 データソースを作成し、制限されたテーブルへのアクセスを制限できます。 -
(オプション) 手動で作成された IAM ロール。 このロールを使用して、データソースへのアクセスを管理できます。または、OpenSearch Service で、必要なアクセス許可を持つロールを自動的に作成することもできます。手動で作成した IAM ロールを使用する場合は、「」のガイダンスに従ってください手動で作成された IAM ロールに必要なアクセス許可。
手順
AWS Management Console または OpenSearch Service API を使用して、ドメインにダイレクトクエリデータソースを設定できます。
-
Amazon OpenSearch Service コンソール (https://console.aws.amazon.com/aos/
) に移動します。 -
左側のナビゲーションペインで [Domains] (ドメイン) を選択します。
-
新しいデータソースを設定するドメインを選択します。選択すると、ドメインの詳細ページが開きます。
-
一般的なドメインの詳細の下にある [接続] タブを選択し、[ダイレクトクエリ] セクションを見つけます。
-
データソースの設定 を選択します。
-
新しいデータソースの名前とオプションの説明を入力します。
-
で Amazon S3 AWS Glue Data Catalogを選択します。
-
IAM アクセス許可のアクセス設定で、アクセスを管理する方法を選択します。
-
このデータソースのロールを自動的に作成する場合は、次の手順に従います。
-
新しいロールの作成 を選択します。
-
IAM ロールの名前を入力します。
-
クエリするデータを含む 1 つ以上の S3 バケットを選択します。
-
クエリチェックポイントを保存するチェックポイント 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 リンクを提供します。これを使用して、アクセスコントロールの設定、テーブルの定義、out-of-the-box統合のインストール、データのクエリを行うことができます。
詳細については、「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
を選択します。 -
[Create] (作成) を選択します。
-
[マッピングされたユーザー]、[マッピングの管理] を選択します。
-
[バックエンドロール] で、ドメインを呼び出す許可を必要とする AWS Glue ロールの ARN を追加します。
arn:aws:iam::
account-id
:role/role-name
-
マップを選択し、ロールがマッピングされたユーザーに表示されていることを確認します。
ロールのマッピングの詳細については、「ユーザーへのロールのマッピング」を参照してください。
追加リソース
手動で作成された IAM ロールに必要なアクセス許可
ドメインのデータソースを作成するときは、データへのアクセスを管理する IAM ロールを選択します。これには 2 つのオプションがあります。
-
新しい IAM ロールを自動的に作成する
-
手動で作成した既存の IAM ロールを使用する
手動で作成したロールを使用する場合は、ロールに正しいアクセス許可をアタッチする必要があります。アクセス許可は、特定のデータソースへのアクセスを許可し、OpenSearch Service がロールを引き受けることを許可する必要があります。これは、OpenSearch Service がデータに安全にアクセスしてやり取りできるようにするために必要です。
次のサンプルポリシーは、データソースの作成と管理に必要な最小特権の許可を示しています。s3:*
または AdminstratorAccess
ポリシーなどのより広範な許可を持っている場合、これらの許可にはサンプルポリシーの最小特権が含まれます。
次のサンプルポリシーでは、プレースホルダーテキスト
をユーザー自身の情報に置き換えます。
{
"Version":"2012-10-17",
"Statement":[
{
"Sid":"HttpActionsForOpenSearchDomain",
"Effect":"Allow",
"Action":"es:ESHttp*",
"Resource":"arn:aws:es:region
:account
:domain/<domain_name>/*"
},
{
"Sid":"AmazonOpenSearchS3GlueDirectQueryReadAllS3Buckets",
"Effect":"Allow",
"Action":[
"s3:GetObject",
"s3:GetObjectVersion",
"s3:ListBucket"
],
"Condition":{
"StringEquals":{
"aws:ResourceAccount":"account
"
}
},
"Resource":"*"
},
{
"Sid":"AmazonOpenSearchDirectQueryGlueCreateAccess",
"Effect":"Allow",
"Action":[
"glue:CreateDatabase",
"glue:CreatePartition",
"glue:CreateTable",
"glue:BatchCreatePartition"
],
"Resource":"*"
},
{
"Sid":"AmazonOpenSearchS3GlueDirectQueryModifyAllGlueResources",
"Effect":"Allow",
"Action":[
"glue:DeleteDatabase",
"glue:DeletePartition",
"glue:DeleteTable",
"glue:GetDatabase",
"glue:GetDatabases",
"glue:GetPartition",
"glue:GetPartitions",
"glue:GetTable",
"glue:GetTableVersions",
"glue:GetTables",
"glue:UpdateDatabase",
"glue:UpdatePartition",
"glue:UpdateTable",
"glue:BatchGetPartition",
"glue:BatchDeletePartition",
"glue:BatchDeleteTable"
],
"Resource":[
"arn:aws:glue:us-east-1:account
:table/*",
"arn:aws:glue:us-east-1:account
:database/*",
"arn:aws:glue:us-east-1:account
:catalog",
"arn:aws:es:region
:account
:domain/domain_name
"
],
"Condition":{
"StringEquals":{
"aws:ResourceAccount":"account
"
}
}
},
{
"Sid":"ReadAndWriteActionsForS3CheckpointBucket",
"Effect":"Allow",
"Action":[
"s3:ListMultipartUploadParts",
"s3:DeleteObject",
"s3:GetObject",
"s3:PutObject",
"s3:GetBucketLocation",
"s3:ListBucket"
],
"Condition":{
"StringEquals":{
"aws:ResourceAccount":"account
"
}
},
"Resource":[
"arn:aws:s3:::amzn-s3-demo-bucket
",
"arn:aws:s3:::amzn-s3-demo-bucket/*
"
]
}
]
}
異なるアカウントで Amazon S3 バケットをサポートするには、Amazon S3 ポリシーに条件を含め、適切なアカウントを追加する必要があります。
次のサンプル条件では、プレースホルダーテキスト
を独自の情報に置き換えます。
"Condition": {
"StringEquals": {
"aws:ResourceAccount": "{{accountId
}}"
}
また、ロールには、ターゲット ID を指定する次の信頼ポリシーが必要です。
{
"Version":"2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Principal":{
"Service": "directquery.opensearchservice.amazonaws.com"
},
"Action":"sts:AssumeRole"
}
]
}
ロールを作成する手順については、「カスタム信頼ポリシーを使用したロールの作成」を参照してください。
OpenSearch Service できめ細かなアクセスコントロールが有効になっている場合、データソースに対して新しい OpenSearch のきめ細かなアクセスコントロールロールが自動的に作成されます。新しいきめ細かなアクセスコントロールロールの名前は AWS OpenSearchDirectQuery
になります。<name of data
source>
デフォルトでは、ロールは直接クエリデータソースインデックスにのみアクセスできます。データソースへのアクセスを制限または許可するようにロールを設定できますが、このロールのアクセスは調整しないことをお勧めします。データソースを削除すると、このロールは削除されます。これにより、他のユーザーがロールにマッピングされている場合、そのユーザーのアクセスは削除されます。