创建与亚马逊 S3 的亚马逊 OpenSearch 服务数据源集成 - 亚马逊 OpenSearch 服务
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

创建与亚马逊 S3 的亚马逊 OpenSearch 服务数据源集成

这是针对亚马逊 OpenSearch 服务直接查询 Amazon S3 的预发行文档,该文档处于预览版。文档和特征都可能会更改。我们建议您仅在测试环境中使用此特征,不要在生产环境中使用。有关预览条款和条件,请参阅 Amazon 服务条款中的测试版和预览

您可以通过 Amazon Web Services Management Console 或 API 为 OpenSearch 服务创建新的 Amazon S3 直接查询数据源。每个新数据源都使用 Amazon Glue Data Catalog 来管理代表 Amazon S3 存储桶的表。

先决条件

在创建数据来源之前,您必须具有以下各项:

  • 版本为 2.11 或更高版本的 OpenSearch 域名

有关设置这些内容的说明,请参阅 创建 OpenSearch 服务域Amazon Glue Data Catalog入门

所需的权限

要创建数据来源,您的用户或角色必须附加具有相应 IAM 权限的基于身份的策略。以下示例策略演示了创建和管理数据来源所需的最低权限。请注意,如果您拥有更广泛的权限,例如 s3:*AdministratorAccess 策略,则这些权限包含示例策略中的最低权限。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "es:ESHttp*", "es:AddDataSource", "es:DeleteDataSource", "es:GetDataSource", "es:ListDataSource", "es:UpdateDataSource", "s3:Get*", "s3:List*", "s3:Put*", "s3:Describe*", "glue:*" ], "Resource": [ "arn:aws:s3:::bucket-name", "arn:aws:s3:::bucket-name/*", "arn:aws:glue:us-east-1:{aws-account-id}:database/*" ] }, { "Sid": "GlueCreateAndReadDataCatalog", "Effect": "Allow", "Action": [ "glue:GetDatabase", "glue:CreateDatabase", "glue:GetDatabases", "glue:CreateTable", "glue:GetTable", "glue:UpdateTable", "glue:DeleteTable", "glue:GetTables", "glue:GetPartition", "glue:GetPartitions", "glue:CreatePartition", "glue:BatchCreatePartition", "glue:GetUserDefinedFunctions" ], "Resource": "*" } ] }

该角色还必须具有指定目标 ID 的以下信任策略。

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service": "directquery.opensearchservice.amazonaws.com" }, "Action":"sts:AssumeRole" } ] }

有关创建角色的说明,请参阅使用自定义信任策略创建角色

如果您启用了细粒度访问控制,则将自动为您的数据源创建一个新的 OpenSearch 细粒度访问控制角色。<name of data source>新的细粒度访问控制角色的名称将是 _。 AWSOpenSearchDirectQuery

默认情况下,该角色只能访问直接查询数据源索引。尽管您可以将角色配置为限制或授予对数据源的访问权限,但建议您不要调整此角色的访问权限。 如果您删除数据源,则该角色将被删除。如果任何其他用户被映射到该角色,则这将删除他们的访问权限。

映射 Amazon Glue Data Catalog 角色(如果在创建数据源后启用了细粒度访问控制)

如果您在创建数据源后启用了精细访问控制,则必须将非管理员用户映射到具有 Amazon Glue Data Catalog 访问权限的 IAM 角色才能运行直接查询。要手动创建可映射到 IAM 角色的后端 glue_access 角色,请执行以下步骤:

注意

索引用于针对数据来源的任何查询。对给定数据来源的请求索引具有读取权限的用户可以读取针对该数据来源的所有查询。对结果索引具有读取权限的用户可以读取针对该数据来源的所有查询的结果。

  1. 从 OpenSearch 仪表板的主菜单中,选择安全角色创建角色

  2. 将该角色命名为 glue_access

  3. 对于集群权限,选择 indices:data/write/bulk*indices:data/read/scrollindices:data/read/scroll/clear

  4. 对于索引,输入想要授予具有角色访问权限的用户的以下索引:

    • .query_execution_request_<name of data source>

    • query_execution_result_<name of data source>

    • flint_*

  5. 对于索引权限,选择 indices_all

  6. 选择 创建

  7. 选择映射的用户管理映射

  8. 后端角色下,添加需要权限才能调用域的 Amazon Glue 角色的 ARN。

    arn:aws:iam::account-id:role/role-name
  9. 选择映射并确认在映射的用户下显示的角色。

有关表映射角色的更多信息,请参阅 将角色映射到用户

设置新的直接查询数据来源

您可以使用 Amazon Web Services Management Console 或 OpenSearch 服务 API 在网域上设置直接查询数据源。

  1. 导航到亚马逊 OpenSearch 服务控制台,网址为https://console.amazonaws.cn/aos/

  2. 在左侧导航窗格中,选择

  3. 选择要为其设置新数据来源的域。随即打开域详细信息页面。选择一般域详细信息下方的连接选项卡,然后找到直接查询部分。

  4. 选择 创建

  5. 在数据来源创建页面上,输入新数据来源的名称。在数据来源类型下,选择 Amazon S3。选择一个对在 Amazon Glue Data Catalog 和 Amazon S3 中可以访问的内容有限制的现有 IAM 角色。

  6. 选择 创建。这将打开带有 OpenSearch 仪表板 URL 的数据源详细信息屏幕。您可导航到此 URL 以完成后续步骤。

使用 AddDataSourceAPI 操作在您的网域中创建新的数据源。

POST https://es.region.amazonaws.com/2021-01-01/opensearch/domain/domain-name/dataSource { "DataSourceType": { "s3GlueDataCatalog": { "RoleArn": "arn:aws:iam::account-id:role/Admin" } } "Description": "data-source-description", "Name": "my-data-source" }

后续步骤

创建数据源后,S OpenSearch ervice 会为您提供 OpenSearch 仪表板 URL。您可以使用它来配置访问控制、定义表、为常用日志类型设置基于日志类型的控制面板以及查询数据。