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

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

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

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

先决条件

在创建数据源之前,必须拥有版本为 2.13 或更高版本的 OpenSearch 域。有关设置的说明,请参阅 创建 OpenSearch 服务域

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

您可以使用 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" }

以下示例策略演示了创建和管理数据来源所需的最低权限。如果您拥有更广泛的权限,例如s3:*AdminstratorAccess策略,则这些权限包括示例策略中的最低权限权限。

集成需要访问权限才能写入 Amazon S3 和 Amazon Glue Data Catalog。对于 Amazon S3,我们需要写入权限才能在构建加速时维护检查点位置。因为 Amazon Glue Data Catalog,我们需要写入权限才能从 S OpenSearch ervice 内部管理集成所需的数据库、表和分区。

{ "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" ], "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:::<checkpoint_bucket_name>", "arn:aws:s3:::<checkpoint_bucket_name>/*" ] } ] }

要在不同的账户中支持 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" } ] }

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

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

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

映射 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. 选择映射并确认在映射的用户下显示的角色。

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

后续步骤

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