使用新的Amazon Kendra Alfresco连接器对您的Alfresco内容创建索引

使用Amazon Kendra Alfresco连接器创建索引

Amazon Kendra是一款由机器学习(ML)驱动的高度准确且易于使用的智能搜索服务。Amazon Kendra提供一套数据源连接器,简化内容摄取和索引的过程,无论内容存储在哪里。

组织中有价值的数据存储在结构化和非结构化的存储库中。企业搜索解决方案应能够索引和搜索多个结构化和非结构化存储库。

Alfresco内容服务提供了开放、灵活、高度可扩展的企业内容管理(ECM)功能,并具有内容服务平台的附加优势,通过与您每天使用的业务应用程序的轻松集成,使内容在任何地方和任何方式下都可以访问。许多组织使用Alfresco内容管理平台来存储其内容。企业客户使用Alfresco的一个关键要求是能够轻松、安全地在所有存储的文档中找到准确的信息。

我们很高兴地宣布,您现在可以使用新的Amazon Kendra Alfresco连接器来搜索存储在Alfresco存储库和站点中的文档。在本文中,我们展示了如何使用新的连接器来检索存储在Alfresco中的文档,以进行索引,并安全地使用Amazon Kendra智能搜索功能。此外,基于机器学习的智能搜索功能可以准确地从自然语言叙述内容的非结构化文档中找到信息,而关键字搜索效果不佳。

Amazon Kendra Alfresco连接器的新功能

Amazon Kendra Alfresco连接器支持以下功能:

  • 用于Alfresco On-Premises(On-Prem)平台的基本认证和OAuth2认证机制
  • 用于Alfresco PaaS平台的基本认证和OAuth2认证机制
  • 基于Aspect的Alfresco存储库文档爬取

解决方案概述

使用Amazon Kendra,您可以配置多个数据源,提供一个集中的搜索文档存储库和站点的位置。本文中的解决方案演示了以下内容:

  • 从Alfresco私有站点和公共站点检索文档和评论
  • 从Alfresco存储库使用Amazon Kendra特定Aspect检索文档和评论
  • 使用基本认证和OAuth2机制对Alfresco On-Prem和PaaS平台进行身份验证
  • Amazon Kendra搜索功能对站点和存储库进行访问控制

如果您只使用其中一个平台,您仍然可以按照本文构建示例解决方案;只需忽略您不使用的平台对应的步骤。

以下是构建示例解决方案的步骤摘要:

  1. 将文档上传到三个Alfresco站点和存储库文件夹。确保上传的文档在站点和存储库文件夹中是唯一的。
  2. 对于两个私有站点和存储库,使用基于文档级别的Alfresco权限管理设置访问权限。对于公共站点,您不需要在文档级别设置权限。请注意,权限信息由Amazon Kendra Alfresco连接器检索,并由Amazon Kendra搜索功能用于访问控制。
  3. 对于两个私有站点和存储库,创建一个新的Amazon Kendra索引(您可以在私有站点和存储库上使用相同的索引)。对于公共站点,创建一个新的Amazon Kendra索引。
  4. 对于On-Prem私有站点,在私有站点的Amazon Kendra索引中创建一个使用基本认证的Amazon Kendra Alfresco数据源。
  5. 对于具有Amazon Kendra特定Aspect的On-Prem存储库文档,在私有站点的Amazon Kendra索引中创建一个使用基本认证的数据源。
  6. 对于PaaS私有站点,在私有站点的Amazon Kendra索引中创建一个使用基本认证的数据源。
  7. 对于PaaS公共站点,在公共站点的Amazon Kendra索引中创建一个使用OAuth2认证的数据源。
  8. 为每个数据源执行同步。
  9. 在具有访问控制的Amazon Kendra索引中运行测试查询,用于私有站点和存储库。
  10. 在不具有访问控制的Amazon Kendra索引中运行测试查询,用于公共站点。

先决条件

您需要一个具有创建AWS身份和访问管理(IAM)角色和策略的特权的AWS帐户。有关更多信息,请参阅访问管理概述:权限和策略。您需要对AWS和如何导航AWS管理控制台有基本的了解。

对于Alfresco On-Prem平台,请完成以下步骤:

  1. 创建一个私有站点或使用现有站点。
  2. 创建一个仓库文件夹或使用现有仓库文件夹。
  3. 获取仓库的URL。
  4. 获取基本身份验证凭据(用户ID和密码)。
  5. 确保身份验证是ALFRESCO_ADMINISTRATORS组的一部分。
  6. 获取以.pem格式保存的公共X509证书并将其保存到本地。

对于Alfresco PaaS平台,请完成以下步骤:

  1. 创建一个私有站点或使用现有站点。
  2. 创建一个公共站点或使用现有站点。
  3. 获取仓库的URL。
  4. 获取基本身份验证凭据(用户ID和密码)。
  5. 获取OAuth2凭据(客户端ID、客户端密钥和令牌URL)。
  6. 确认身份验证用户是ALFRESCO_ADMINISTRATORS组的一部分。

步骤1:上传示例文档

每个上传的文档的文本大小不能超过5MB。有关更多信息,请参阅Amazon Kendra服务配额。您可以上传示例文档或使用每个站点中的现有文档。

如下图所示,我们已将四个文档上传到Alfresco On-Prem私有站点。

我们已将三个文档上传到Alfresco PaaS私有站点。

我们已将五个文档上传到Alfresco PaaS公共站点。

我们已将两个文档上传到Alfresco On-Prem仓库。

awskendra:indexControl特性分配给仓库文件夹中的一个或多个文档。

步骤2:配置Alfresco权限

使用Alfresco权限管理功能为示例用户提供查看上传文档的访问权限。假设您拥有一些示例的Alfresco用户名和电子邮件地址,可以用于在私有站点的文档级别上设置权限。这些用户不用于对站点进行抓取。

在下面的示例中,对于On-Prem私有站点,我们为用户My Dev User1和My Dev User2提供了对示例文档的站点消费者访问权限。对其他上传的文档重复相同的步骤。

在下面的示例中,对于PaaS私有站点,我们为用户Kendra User 3提供了对示例文档的站点消费者访问权限。对其他上传的文档重复相同的步骤。

对于 Alfresco 仓库文档,我们已经为用户 My Dev user1 提供了对示例文档的消费者访问权限。

下表列出了站点或仓库名称、文档名称和权限。

平台 站点或仓库名称 文档名称 用户 ID
On-Prem MyAlfrescoSite ChannelMarketingBudget.xlsx My Manager User3
On-Prem MyAlfrescoSite wellarchitected-sustainability-pillar.pdf My Dev User1, My Dev User2
On-Prem MyAlfrescoSite WorkDocs.docx My Dev User1, My Dev User2, My Manager User3
On-Prem MyAlfrescoSite WorldPopulation.csv My Dev User1, My Dev User2, My Manager User3
PaaS MyAlfrescoCloudSite2 DDoS_White_Paper.pdf Kendra User3
PaaS MyAlfrescoCloudSite2 wellarchitected-framework.pdf Kendra User3
PaaS MyAlfrescoCloudSite2 ML_Training.pptx Kendra User1
PaaS MyAlfrescoCloudPublicSite batch_user.pdf Everyone
PaaS MyAlfrescoCloudPublicSite Amazon Simple Storage Service – User Guide.pdf Everyone
PaaS MyAlfrescoCloudPublicSite AWS Batch – User Guide.pdf Everyone
PaaS MyAlfrescoCloudPublicSite Amazon Detective.docx Everyone
PaaS MyAlfrescoCloudPublicSite Pricing.xlsx Everyone
On-Prem Repo: MyAlfrescoRepoFolder1 Polly-dg.pdf (aspect awskendra:indexControl) My Dev User1
On-Prem Repo: MyAlfrescoRepoFolder1 Transcribe-api.pdf (aspect awskendra:indexControl) My Dev User1

第三步:设置Amazon Kendra索引

您可以创建一个新的Amazon Kendra索引,也可以使用现有索引来索引托管在Alfresco私有站点中的文档。要创建一个新的索引,请完成以下步骤:

  1. 在Amazon Kendra控制台上,创建一个名为Alfresco-Private的索引。
  2. 创建一个新的IAM角色,然后选择下一步
  3. 对于访问控制,请选择
  4. 对于令牌类型,请选择JSON
  5. 保持用户名和组默认。
  6. 选择None以进行用户组扩展,因为我们假设不与AWS IAM身份中心(AWS Single Sign-On的后继产品)集成。
  7. 选择下一步
  8. 为这个示例解决方案选择开发者版
  9. 选择创建以创建一个新的索引。

下面的屏幕截图显示了创建后的Alfresco-Private索引。

  1. 您可以在用户访问控制选项卡上验证访问控制配置。

  1. 重复这些步骤,创建一个名为Alfresco-Public的第二个索引。

第四步:为On-Prem私有站点创建数据源

要为On-Prem私有站点创建数据源,请完成以下步骤:

  1. 在Amazon Kendra控制台上,导航到Alfresco-Private索引。
  2. 在导航窗格中选择数据源
  3. 选择添加数据源

  1. 选择Alfresco连接器的添加连接器

  1. 对于数据源名称,输入Alfresco-OnPrem-Private
  2. 可选地,添加描述。
  3. 保持其余设置为默认值,选择下一步

要连接到Alfresco On-Prem站点,连接器需要访问与On-Prem服务器对应的公共证书。这是先决条件之一。

  1. 使用另一个浏览器选项卡将.pem文件上传到您的帐户中的Amazon Simple Storage Service(Amazon S3)存储桶中。

在下一步中,您将在数据源创建页面中使用此S3存储桶名称。

  1. 返回数据源创建页面。
  2. 对于Source,选择Alfresco服务器
  3. 对于Alfresco仓库URL,输入仓库URL(作为先决条件创建)。
  4. 对于Alfresco用户应用URL,输入与仓库URL相同的值。
  5. 对于SSL证书位置,选择浏览S3,然后选择上传.pem文件的S3存储桶。
  6. 对于身份验证,选择基本身份验证
  7. 对于AWS Secrets Manager秘密,选择创建并添加新秘密

将打开一个弹出窗口以创建AWS Secrets Manager秘密。

  1. 为您的秘密输入名称、用户名和密码,然后选择保存

  1. 对于虚拟私有云(VPC),选择无VPC
  2. 打开身份爬虫。
  3. 对于IAM角色,选择创建新的IAM角色
  4. 选择下一步

您可以配置数据源以同步一个或多个Alfresco站点的内容。对于本文,我们将同步到本地私有站点。

  1. 对于要同步的内容,选择单个Alfresco站点同步,然后选择MyAlfrescoSite
  2. 选择包括评论以获取评论和文档。
  3. 对于同步模式,选择完全同步
  4. 对于频率,选择按需运行(或根据需要选择其他频率选项)。
  5. 选择下一步

  1. 将Alfresco文档字段映射到Amazon Kendra索引字段(可以保留默认值),然后选择下一步

  1. 审阅和创建页面上,验证所有信息,然后选择添加数据源

创建数据源后,数据源页面将显示如下所示。

步骤5:为On-Prem存储库文档创建具有Amazon Kendra特定方面的数据源

类似于之前的步骤,使用Amazon Kendra的特定方面为On-Prem存储库文档创建数据源:

  1. 在Amazon Kendra控制台中,导航到Alfresco-Private索引。
  2. 选择导航窗格中的数据源
  3. 选择添加数据源
  4. 选择Alfresco连接器的添加连接器
  5. 对于数据源名称,输入Alfresco-OnPrem-Aspects
  6. 可选择添加描述。
  7. 保持其余设置为默认,并选择下一步
  8. 对于,选择Alfresco服务器
  9. 对于Alfresco存储库URL,输入存储库URL(作为先决条件创建)。
  10. 对于Alfresco用户应用程序URL,输入与存储库URL相同的值。
  11. 对于SSL证书位置,选择浏览S3,然后选择您上传.pem文件的S3存储桶。
  12. 对于身份验证,选择基本身份验证
  13. 对于AWS Secrets Manager密码,选择之前创建的密码。
  14. 对于虚拟专用云(VPC),选择无VPC
  15. 关闭身份验证爬网器。
  16. 对于IAM角色,选择创建新的IAM角色
  17. 选择下一步

在此范围内,连接器仅检索那些已分配名为awskendra:indexControl的方面的On-Prem服务器存储库文档。

  1. 对于要同步的内容,选择Alfresco方面同步
  2. 对于同步模式,选择完全同步
  3. 对于频率,选择按需运行(或根据需要选择不同的频率选项)。
  4. 选择下一步
  5. 将Alfresco文档字段映射到Amazon Kendra索引字段(可以保持默认设置),然后选择下一步
  6. 审核和创建页面上,验证所有信息,然后选择添加数据源

创建数据源后,数据源页面显示如下屏幕截图所示。

第6步:为PaaS私有站点创建数据源

按照之前的步骤创建PaaS私有站点的数据源:

  1. 在Amazon Kendra控制台中,导航到Alfresco-Private索引。
  2. 选择导航窗格中的数据源
  3. 选择添加数据源
  4. 选择Alfresco连接器的添加连接器
  5. 对于数据源名称,输入Alfresco-Cloud-Private
  6. 可选择添加描述。
  7. 保持其余设置为默认,并选择下一步
  8. 对于,选择Alfresco云
  9. 对于Alfresco存储库URL,输入存储库URL(作为先决条件创建)。
  10. 对于Alfresco用户应用程序URL,输入与存储库URL相同的值。
  11. 对于身份验证,选择基本身份验证
  12. 对于AWS Secrets Manager密码,选择创建并添加新密码
  13. 输入密钥的名称、用户名和密码,然后选择保存
  14. 对于虚拟专用云(VPC),选择无VPC
  15. 关闭身份验证爬网器。
  16. 对于IAM角色,选择创建新的IAM角色
  17. 选择下一步

我们可以配置数据源来同步一个或多个Alfresco站点的内容。对于本文,我们将配置数据源从PaaS私有站点MyAlfrescoCloudSite2同步。

  1. 对于要同步的内容,选择单个Alfresco站点同步并选择MyAlfrescoCloudSite2
  2. 选择包含评论
  3. 对于同步模式,选择完全同步
  4. 对于频率,选择按需运行(或根据需要选择不同的频率选项)。
  5. 选择下一步
  6. 将Alfresco文档字段映射到Amazon Kendra索引字段(您可以保留默认值),然后选择下一步
  7. 回顾和创建页面上,验证所有信息,然后选择添加数据源

数据源创建后,数据源页面将显示如下屏幕截图所示。

第7步:为PaaS公共站点创建数据源

我们按照之前的步骤为PaaS公共站点创建数据源:

  1. 在Amazon Kendra控制台中,导航到Alfresco-Public索引。
  2. 在导航窗格中选择数据源
  3. 选择添加数据源
  4. 为Alfresco连接器选择添加连接器
  5. 对于数据源名称,输入Alfresco-Cloud-Public
  6. 可选地,添加描述。
  7. 保留其余设置为默认值,选择下一步
  8. 对于,选择Alfresco云
  9. 对于Alfresco存储库URL,输入存储库URL(作为先决条件创建)。
  10. 对于Alfresco用户应用程序URL,输入与存储库URL相同的值。
  11. 对于身份验证,选择OAuth2.0身份验证
  12. 对于AWS Secrets Manager密钥,选择创建并添加新密钥
  13. 输入密钥名称、客户端ID、客户端密钥和令牌URL,然后选择保存
  14. 对于虚拟专用云(VPC),选择无VPC
  15. 关闭身份爬虫。
  16. 对于IAM角色,选择创建新的IAM角色
  17. 选择下一步

我们将配置此数据源以同步到PaaS公共站点MyAlfrescoCloudPublicSite

  1. 对于要同步的内容,选择单个Alfresco站点同步并选择MyAlfrescoCloudPublicSite
  2. 可选地,选择包含评论
  3. 对于同步模式,选择完全同步
  4. 对于频率,选择按需运行(或根据需要选择不同的频率选项)。
  5. 选择下一步
  6. 将Alfresco文档字段映射到Amazon Kendra索引字段(您可以保留默认值),然后选择下一步
  7. 回顾和创建页面上,验证所有信息,然后选择添加数据源

数据源创建后,数据源页面将显示如下屏幕截图所示。

第8步:对每个数据源执行同步

转到每个数据源并选择立即同步。一次只完成一个同步。

等待所有数据源的同步完成。当每个数据源的同步完成时,您将看到以下屏幕截图中显示的状态。

您也可以在同步运行历史下查看特定同步的Amazon CloudWatch日志。

第9步:使用访问控制在私有索引中运行测试查询

现在是测试解决方案的时候了。我们首先在私有索引中使用访问控制运行查询:

  1. 在Amazon Kendra控制台上,转到Alfresco-Private索引并选择搜索索引内容

  1. 在搜索框中输入查询。

如下图所示,Amazon Kendra没有返回任何结果。

  1. 选择应用令牌
  2. 输入与My Dev User1用户对应的电子邮件地址,然后选择应用

请注意,Amazon Kendra访问控制是基于与Alfresco用户名关联的电子邮件地址进行工作的。

  1. 再次运行搜索。

根据访问控制设置,搜索结果将显示文档列表(在以下示例中包含wellarchitected-sustainability-pillar.pdf)。

如果您再次运行相同的查询并提供一个没有访问这些文档的电子邮件地址,您将在结果列表中看不到这些文档。

  1. 输入另一个查询,以基于awskendra:indexControl方面搜索文档。
  2. 选择应用令牌,输入与My Dev User1用户对应的电子邮件地址,然后选择应用
  3. 重新运行查询。

步骤10:在没有访问控制的公共索引中运行测试查询。

类似地,我们可以通过在没有访问控制的公共索引中运行查询来测试我们的解决方案:

  1. 在Amazon Kendra控制台中,导航到Alfresco-Public索引并选择搜索索引内容
  2. 运行搜索查询。

由于这个示例的Alfresco公共网站没有设置任何访问控制,因此我们不使用访问令牌。

清理

为了避免未来产生费用,请清理您在解决方案中创建的资源。删除索引中新添加的Alfresco数据源。如果您在测试此解决方案时创建了新的Amazon Kendra索引,请也将它们删除。

结论

通过Amazon Kendra的新Alfresco连接器,组织可以安全地利用存储在其账户中的信息库,使用Amazon Kendra提供的智能搜索功能。

要了解这些可能性以及更多信息,请参阅Amazon Kendra开发人员指南。有关在从Alfresco摄取数据时如何创建、修改或删除元数据和内容的更多信息,请参阅Amazon Kendra中的摄取期间丰富您的文档和丰富内容和元数据以增强Amazon Kendra的搜索体验的自定义文档丰富化。