PostgreSQL - Amazon Kendra

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

PostgreSQL

PostgreSQL 是一个开源数据库管理系统。如果您是PostgreSQL用户,则可以使用索 Amazon Kendra 引您的PostgreSQL数据源。 Amazon Kendra PostgreSQL数据源连接器支持 PostgreSQL 9.6。

您可以使用Amazon Kendra 控制台TemplateConfigurationAPI Amazon Kendra 连接到您的PostgreSQL数据源。

要对 Amazon Kendra PostgreSQL数据源连接器进行故障排除,请参阅数据来源故障排除

支持的特征

  • 字段映射

  • 用户上下文筛选

  • 包含/排除筛选条件

  • 完整内容和增量内容同步

  • Virtual Private Cloud (VPC)

先决条件

在使用索 Amazon Kendra 引PostgreSQL数据源之前,请在PostgreSQL和 AWS 帐户中进行这些更改。

在 PostgreSQL 中,请确保:

  • 已记下您的数据库用户名和密码。

    重要

    最佳做法是提供 Amazon Kendra 只读数据库凭据。

  • 已复制您的数据库主机 URL、端口和实例。

  • 在 PostgreSQL 以及计划用于编制同一索引的其他数据来源中,已检查每个文档都是唯一的。您要用于编制索引的每个数据来源在所有数据来源中都不能包含相同的文档。文档 ID 对索引来说是全局性的,并且每个索引都必须是唯一的。

在你的 AWS 账户,请确保你有:

  • 已创建 Amazon Kendra 索引,如果使用 API,则记下索引 ID。

  • 为您的数据源@@ 创建了一个 IAM 角色,如果使用 API,请记下该角色的 ARN。 IAM

    注意

    如果您更改了身份验证类型和证书,则必须更新您的 IAM 角色才能访问正确的 AWS Secrets Manager 密钥 ID。

  • 将您的 PostgreSQL 身份验证凭证存储在 AWS Secrets Manager 密钥中,如果使用 API,请记下密钥的 ARN。

    注意

    我们建议您定期刷新或轮换您的凭证和密码。为了安全起见,请仅提供必要的访问权限级别。我们建议不要跨数据来源以及连接器版本 1.0 和 2.0(如果适用)重复使用凭证和密钥。

如果您没有现有的 IAM 角色或密钥,则可以在将PostgreSQL数据源连接到时使用控制台创建新的 IAM 角色和 Secrets Manager 密钥 Amazon Kendra。如果您使用的是 API,则必须提供现有 IAM 角色和 Secrets Manager 密钥的 ARN 以及索引 ID。

连接说明

要 Amazon Kendra 连接到您的PostgreSQL数据源,您必须提供PostgreSQL凭据的详细信息, Amazon Kendra 以便访问您的数据。如果您尚未进行配置,PostgreSQL请参 Amazon Kendra 阅先决条件

Console

要连接 Amazon Kendra 到 PostgreSQL

  1. 登录 AWS Management Console 并打开Amazon Kendra 控制台

  2. 在左侧导航窗格中,选择索引,然后从索引列表中选择要使用的索引。

    注意

    您可以选择在索引设置下配置或编辑您的用户访问控制设置。

  3. 入门页面上,选择添加数据来源

  4. 添加数据源页面上,选择PostgreSQL连接器,然后选择添加连接器。如果使用版本 2(如果适用),请选择带有 “V2.0” 标签的PostgreSQL连接器

  5. 指定数据来源详细信息页面上输入以下信息:

    1. 名称和描述中,在数据来源名称中输入您的数据来源的名称。可以包含连字符,但不能包含空格。

    2. (可选)说明 - 为数据来源输入说明。

    3. 使用默认语言-选择一种语言来筛选文档中的索引。除非另行指定,否则语言默认为英语。在文档元数据中指定的语言会覆盖所选语言。

    4. 标签中,用于添加新标签-包括可选标签以搜索和筛选您的资源或跟踪您的 AWS 成本。

    5. 选择下一步

  6. 定义访问权限和安全性页面上,请输入以下信息:

    1. 中,输入以下信息:

    2. 主机 - 输入数据库主机名。

    3. 端口 - 输入数据库端口。

    4. 实例 - 输入数据库实例。

    5. 启用 SSL 证书位置-选择输入 SSL 证书文件的 Amazon S3 路径。

    6. 身份验证中 - 请输入以下信息:

      1. AWS Secrets Manager s@@ ecret —选择现有密钥或创建新 Secrets Manager 密钥来存储您的PostgreSQL身份验证凭证。如果您选择创建新密钥,则会打开 AWS Secrets Manager 密钥窗口。

        1. 创建 AWS Secrets Manager 密钥窗口中输入以下信息:

          1. 密钥名称 - 密钥的名称。前缀 “AmazonKendra-PostgreSQL-” 会自动添加到您的密钥名称中。

          2. 对于数据库用户名密码 - 输入您从数据库中复制的身份验证凭证值。

        2. 选择保存

    7. 虚拟私有云(VPC)- 您可以选择使用 VPC。如果是这样,则必须添加子网VPC 安全组

    8. IAM ro le —选择现有 IAM 角色或创建新 IAM 角色来访问您的存储库凭据和索引内容。

      注意

      IAM 用于索引的角色不能用于数据源。如果您不确定是否将现有角色用于编制索引或常见问题解答,为了避免出错,请选择创建新角色

    9. 选择下一步

  7. 配置同步设置页面上,请输入以下信息:

    1. 同步范围中,从以下选项中进行选择:

      • SQL 查询 - 输入 SQL 查询语句,例如 SELECT 和 JOIN 操作。SQL 查询必须小于 32KB。 Amazon Kendra 将爬取与您的查询相匹配的所有数据库内容。

      • 主键列 - 提供数据库表的主键。这将标识数据库中的表。

      • 标题列 - 提供数据库表中文档标题列的名称。

      • 正文列-提供数据库表中文档正文列的名称。

    2. 其他配置 - 可选中,从以下选项中选择以同步特定内容,而不是同步所有文件:

      • 变更检测列-输入 Amazon Kendra 将用于检测内容变化的列的名称。 Amazon Kendra 当其中任何一列发生变化时,将重新索引内容。

      • 用户 ID 列 - 输入包含允许访问内容的用户 ID 的列的名称。

      • 组列 - 输入包含允许访问内容的群组的列的名称。

      • 源 URL 列 - 输入包含要编制索引的源 URL 的列的名称。

      • 时间戳列-输入包含时间戳的列的名称。 Amazon Kendra 使用时间戳信息来检测内容的变化并仅同步已更改的内容。

      • 时区列 - 输入列的名称,该列包含要搜索的内容的时区。

      • 时间戳格式 - 输入列的名称,该列包含用于检测内容更改和重新同步内容的时间戳格式。

    3. 同步模式 - 选择在数据来源内容发生变化时更新索引的方式。首次与同步数据源时, Amazon Kendra 默认情况下会对所有内容进行抓取和索引。如果初始同步失败,即使您没有选择完全同步作为同步模式选项,也必须对数据进行完全同步。

      • 完全同步:对所有内容进行新索引,每次数据源与索引同步时都会替换现有内容。

      • 修改过的新同步:每次数据源与索引同步时,仅为新增和修改过的内容编制索引。 Amazon Kendra 可以使用数据源的机制来跟踪内容更改并索引自上次同步以来更改的内容。

      • 新增、已修改、已删除的同步:每次数据源与索引同步时,仅索引新内容、修改内容和已删除内容。 Amazon Kendra 可以使用数据源的机制来跟踪内容更改并索引自上次同步以来更改的内容。

    4. 同步运行计划中,对于频率 - Amazon Kendra 与数据来源同步的频率。

    5. 选择下一步

  8. 设置字段映射页面上,请输入以下信息:

    1. 从生成的默认数据源字段(文档 ID、文档标题来源 URL)中进行选择,以映射到 Amazon Kendra 索引。

    2. 添加字段 - 添加自定义数据来源字段以创建要映射到的索引字段名称和字段数据类型。

    3. 选择下一步

  9. 查看和创建页面上,请检查输入的信息是否正确,然后选择添加数据来源。您也可以选择在此页面上编辑信息。成功添加数据来源后,您的数据来源将显示在数据来源页面上。

API

要连接 Amazon Kendra 到 PostgreSQL

您必须使用 TemplateConfigurationAPI 指定以下内容:

  • 数据源-将数据源类型指定为使用 TemplateConfigurationJSON 架构JDBC时的类型。还要像调用 CreateDataSourceAPI TEMPLATE 时一样指定数据源。

  • 数据库类型 - 必须将数据库类型指定为 postgresql

  • SQL 查询-指定 SQL 查询语句,例如 SELECT 和 JOIN 操作。SQL 查询必须小于 32KB。 Amazon Kendra 将爬取与您的查询相匹配的所有数据库内容。

  • 同步模式-指定数据源内容发生变化时 Amazon Kendra 应如何更新索引。首次与同步数据源时, Amazon Kendra 默认情况下会对所有内容进行抓取和索引。如果初始同步失败,即使您没有选择完全同步作为同步模式选项,也必须对数据进行完全同步。您可以选择:

    • FORCED_FULL_CRAWL对所有内容进行全新索引,每次数据源与索引同步时都要替换现有内容。

    • FULL_CRAWL每次数据源与索引同步时,仅对新的、修改过的和已删除的内容编制索引。 Amazon Kendra 可以使用数据源的机制来跟踪内容更改并索引自上次同步以来更改的内容。

    • CHANGE_LOG每次数据源与索引同步时,仅索引新的和修改过的内容。 Amazon Kendra 可以使用数据源的机制来跟踪内容更改并索引自上次同步以来更改的内容。

  • 亚马逊秘密资源名称 (ARN)-提供包含您在账户中创建的身份验证凭证的 Secrets Manager 密钥的亚马逊资源名称 (ARN)。PostgreSQL密钥必须使用具有以下键的 JSON 结构存储:

    { "user name": "database user name", "password": "password" }
    注意

    我们建议您定期刷新或轮换您的凭证和密码。为了安全起见,请仅提供必要的访问权限级别。我们建议不要跨数据来源以及连接器版本 1.0 和 2.0(如果适用)重复使用凭证和密钥。

  • IAM ro le —指定RoleArn何时调用CreateDataSource以向 IAM 角色提供访问您的 Secrets Manager 密钥和调用PostgreSQL连接器所需的公共 API 的权限,以及 Amazon Kendra。有关更多信息,请参阅 PostgreSQL S3 数据来源的IAM 角色

您还可以添加以下可选功能:

  • 虚拟私有云(VPC)- 指定 VpcConfiguration,以便调用 CreateDataSource。有关更多信息,请参阅 配置 Amazon Kendra 为使用 Amazon VPC

  • 包含和排除过滤器 - 您可以使用用户 ID、组、来源 URL、时间戳和时区来指定是否包含特定内容。

  • 用户上下文筛选和访问控制-如果您的文档有 ACL,则会Amazon Kendra 搜索文档的访问控制列表 (ACL)。ACL 信息用于根据用户或用户组对文档的访问权限来筛选搜索结果。有关更多信息,请参阅用户上下文筛选

  • 字段映射 - 选择将 PostgreSQL 数据来源字段映射到 Amazon Kendra 索引字段。有关更多信息,请参阅映射数据来源字段

    注意

    要搜索您的文档,必须输入文档正文字段或文档正文等效字段。 Amazon Kendra 您必须将数据源中的文档正文字段名称映射到索引字段名称_document_body。其他所有字段均为可选字段。

有关要配置的其他重要 JSON 键的列表,请参阅PostgreSQL 模板架构

注意

  • 在 Amazon Kendra 检查更新内容时,不会跟踪已删除的数据库行。

  • 在数据库的一行中,字段名和值的大小不能超过 400KB。

  • 如果您的数据库数据源中有大量数据,并且不 Amazon Kendra 想在第一次同步后将所有数据库内容编入索引,则可以选择仅同步新的、修改过的或已删除的文档。

  • 最佳做法是提供 Amazon Kendra 只读数据库凭据。

  • 最佳做法是避免添加包含敏感数据或个人身份信息(PII)的表。