在 OpenSearch Service 中创建 Amazon S3 数据来源集成
您可以通过 Amazon Web Services 管理控制台 或 API 为 OpenSearch Service 创建新的 Amazon S3 直接查询数据来源。每个新数据来源都使用 Amazon Glue Data Catalog 来管理表示 Amazon S3 存储桶的表。
先决条件
开始使用之前,请确保您已阅读以下文档:
在创建数据来源之前,您必须在 Amazon Web Services 账户 中具有以下资源:
-
版本 2.13 或更高版本的 OpenSearch 域。这是设置直接查询集成的基础。有关相关设置的说明,请参阅 创建 OpenSearch Service 域。
-
一个或多个 S3 存储桶。您需要指定包含要查询数据的存储桶,以及用于存储查询检查点的存储桶。有关创建 S3 存储桶的说明,请参阅 Amazon S3 用户指南中的创建存储桶。
-
(可选)一个或多个 Amazon Glue 表。在 Amazon S3 上查询数据,需要在 Amazon Glue Data Catalog 中设置指向 S3 数据的表。必须使用 OpenSearch 查询工作台创建表。现有的 Hive 表不兼容。
如果这是您首次设置 Amazon S3 数据来源,则必须创建管理员数据来源。以配置所有 Amazon Glue Data Catalog 表。您可以通过安装开箱即用的 OpenSearch 集成实现此目标,或使用 OpenSearch 查询工作台创建自定义 SQL 表以满足高级使用案例需求。有关为 VPC、CloudTrail 和 Amazon WAF 日志创建表的示例,请参阅 GitHub 上 VPC
、CloudTrail 和 Amazon WAF 的文档。创建表后,您可以创建新的 Amazon S3 数据来源,并限制对特定表的访问权限。 -
(可选)手动创建的 IAM 角色。您可以使用此角色以管理对数据来源的访问权限。或者,您可以让 OpenSearch Service 自动为您创建具有所需权限的角色。如果选择使用手动创建的 IAM 角色,请按照 手动创建的 IAM 角色所需权限 中的指导进行操作。
过程
您可以使用 Amazon Web Services 管理控制台 或 OpenSearch Service API 在域上设置直接查询数据来源。
-
导航到 Amazon OpenSearch Service 控制台,地址为 https://console.amazonaws.cn/aos/
。 -
在左侧导航窗格中,选择 Domains(域)。
-
选择要为其设置新数据来源的域。随即打开域详细信息页面。
-
选择一般域详细信息下方的连接选项卡,然后找到直接查询部分。
-
选择配置数据来源。
-
为新的数据来源输入名称和可选的描述。
-
选择带 Amazon Glue Data Catalog 的 Amazon S3。
-
在 IAM 权限访问设置下,选择如何管理访问权限。
-
如果要自动为此数据来源创建角色,请按照以下步骤操作:
-
选择创建新角色。
-
输入 IAM 角色的名称。
-
选择一个或多个包含您要查询数据的 S3 存储桶。
-
选择用于存储查询检查点的检查点 S3 存储桶。
-
选择一个或多个 Amazon Glue 数据库或表,以定义可查询的数据范围。如果尚未创建表,则提供对默认数据库的访问权限。
-
-
如果要使用您自行管理的现有角色,请按照以下步骤操作:
-
选择使用现有角色。
-
从下拉菜单中选择现有角色。
-
注意
使用自有角色时,您必须通过从 IAM 控制台附加所需策略,确保该角色具备所有必要的权限。有关更多信息,请查看 手动创建的 IAM 角色所需权限 中的示例策略。
-
-
选择配置。这将打开带有 OpenSearch 控制面板 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 控制面板
创建数据来源后,OpenSearch Service 会为您提供 OpenSearch 控制面板链接。您可以使用此链接配置访问控制、定义表结构、安装开箱即用的集成,以及查询数据。
有关更多信息,请参阅 在 OpenSearch 控制面板中配置和查询 S3 数据来源。
映射 Amazon Glue Data Catalog 角色
如果您在创建数据来源后启用了精细访问控制,则必须将非管理员用户映射到具有 Amazon Glue Data Catalog 访问权限的 IAM 角色,才能运行直接查询。要手动创建可映射到 IAM 角色的后端 glue_access 角色,需执行以下步骤:
注意
索引用于针对数据来源的任何查询。对给定数据来源的请求索引具有读取权限的用户可以读取针对该数据来源的所有查询。对结果索引具有读取权限的用户可以读取针对该数据来源的所有查询的结果。
-
从 OpenSearch 控制面板的主菜单中,依次选择安全、角色、创建角色。
-
将该角色命名为 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。 -
选择创建。
-
选择映射的用户、管理映射。
-
在后端角色下,添加需要权限才能调用域的 Amazon Glue 角色的 ARN。
arn:aws:iam::account-id:role/role-name -
选择映射并确认在映射的用户下显示的角色。
有关表映射角色的更多信息,请参阅 将角色映射到用户。
其他资源
手动创建的 IAM 角色所需权限
在为您的域创建数据来源时,您可以选择一个 IAM 角色,以管理对数据的访问权限。您有两种选择:
-
自动创建新的 IAM 角色
-
使用手动创建的现有 IAM 角色。
如果您使用手动创建的角色,则需为该角色关联正确的权限。相关权限必须支持访问数据来源,并支持 OpenSearch Service 代入该角色。这是必需的,这样 OpenSearch Service 才能安全地访问您的数据并与之交互。
以下示例策略演示了创建和管理数据来源所需的最低权限。如果您拥有更广泛的权限,例如 s3:* 或 AdminstratorAccess 策略,则这些权限包含示例策略中的最低权限。
在以下示例策略中,将占位符文本替换为您自己的信息。
要支持不同账户中的 Amazon S3 存储桶,您需要在 Amazon S3 策略中包含一个条件并添加相应的账户。
在以下示例条件中,将占位符文本替换为您自己的信息。
"Condition": { "StringEquals": { "aws:ResourceAccount": "{{accountId}}" }
该角色还必须具有指定目标 ID 的以下信任策略。
有关创建角色的说明,请参阅使用自定义信任策略创建角色。
如果您在 OpenSearch Service 中启用了精细访问控制,则将自动为您的数据来源创建一个新的 OpenSearch 精细访问控制角色。该新的精细访问控制角色名称将为 AmazonOpenSearchDirectQuery 。<name of data
source>
默认情况下,该角色只能访问直接查询数据来源索引。尽管您可以配置该角色以限制或授予对数据来源的访问权限,但建议不要调整该角色的访问权限。如果您删除数据来源,该角色也将被删除。如果任何其他用户被映射到该角色,则将移除其访问权限。