📢 转载信息
原文作者:Naimisha Pinna and Josh DeMuth
许多组织需要在不同的云存储系统之间管理文件上传,同时保持安全性和合规性。尽管 Google Drive 提供了用于集成的 API,但组织通常缺乏直接与这些 API 交互所需的技术专家。组织需要一种直观的方式,通过自然语言处理文件上传,而无需了解底层系统或 API 的专业知识。
Amazon Quick Suite 是一个企业 AI 平台,为工作场所的生产力和商业智能提供生成式 AI 驱动的功能。它将 AI 驱动的研究、商业智能和自动化功能带入一个统一的工作空间,可以处理各种任务——从回答问题和生成内容,到分析数据和提供战略见解。为了将能力扩展到基本的 [数据搜索] 之外,Amazon Quick Suite 提供了 操作连接器,这些强大的组件允许与外部企业系统进行交互。通过这些操作连接器,用户可以在 Amazon Quick Suite 界面内执行操作并访问来自各种业务工具的信息。
Amazon Quick Suite 支持外部服务连接器、AWS 服务连接器和自定义连接器。外部服务连接器提供了与常见企业应用的即用型集成,帮助组织快速实现标准功能。然而,对于像集成 Google Drive 或构建上传文件到驱动器的自定义工作流这样的专业需求,Amazon Quick Suite 提供了自定义连接器,它通过简单的对话式命令帮助组织执行复杂任务,并通过连接各种工具(通过 OpenAPI 规范)创建一个统一的工作空间,从而减轻了不断在不同界面之间切换的需要。
这种方法显著降低了组织的[技术入门门槛],同时确保它们保持对安全和访问权限的控制。通过使用 Amazon Quick Suite 自定义连接器,组织可以将文件管理操作转变为授权用户可以通过简单对话式交互来执行的操作。
在本文中,我们演示了如何使用 Amazon API Gateway 和 AWS Lambda 构建一个安全的文件上传解决方案,将 Google Drive 与 Amazon Quick Suite 自定义连接器集成。
解决方案概述
此解决方案解决了组织在跨云存储系统管理文件操作时面临的常见挑战,例如维护安全合规性、管理用户权限以及降低用户的技术门槛。利用 Amazon Quick Suite 的自然语言理解能力和自定义连接器,组织可以将 Google Drive 操作转变为简单的对话式交互,同时支持将文件安全地上传到用户有权访问的文件夹。该解决方案展示了将 Amazon Quick Suite 的[代理式 AI 功能]与企业存储系统相结合,以创建更高效、更用户友好的文件管理体验的强大功能。尽管本文涵盖了上传文件到 Google Drive 的用例,但您可以使用类似的方法将文件上传到其他企业存储系统,例如 Amazon Simple Storage Service (Amazon S3)、Box、Dropbox、SharePoint 等。
以下示例演示了制造商如何使用 Amazon Quick Suite 将文本文件上传到 Google Drive 中的共享驱动器。
下图说明了使用 AWS 服务和集成来提供无缝用户体验的解决方案架构。它展示了关键组件和解决方案的流程。

该架构由以下关键组件组成:
- 聊天机器人用户界面是使用 Amazon Quick Suite 聊天代理构建的。
- 用户身份验证由 AWS IAM Identity Center 处理,授权由 Amazon Quick Suite 和 Amazon Cognito 处理。
- 基于用户的自然语言查询,使用 Amazon Quick Suite 操作连接器识别相关操作。Amazon Quick Suite 使用配置的第三方 OpenAPI 规范动态确定要执行哪些 API 操作以满足最终用户请求。此外,API 调用使用 Amazon Cognito 授权器进行授权,该授权器使用 Google 联合身份验证进行授权。
- API 使用 API Gateway 和 Lambda 函数实现。
- Lambda 函数包含逻辑,用于检查授权用户是否有权将文件上传到查询中提到的文件夹,并通过使用存储在 AWS Secrets Manager 中的服务帐户凭据来调用 Google 服务,将文件上传到 Google Drive。
在接下来的章节中,我们将探讨构建 Amazon Quick Suite 自定义连接器以上传文件到 Google Drive 的技术方法。有关分步指南,请参阅 GitHub 存储库。
先决条件
验证您具备以下先决条件:
- AWS 账户 – 如果还没有,请创建 AWS 账户。
- 启用了 IAM Identity Center – 有关说明,请参阅启用 IAM Identity Center。
- Amazon Quick Suite 企业版订阅 – 配置和设置操作需要此订阅级别。有关定价信息,请访问 Amazon Quick Suite 定价页面。
配置 Google 环境
在本节中,您将配置和设置 Google Workspace 和 Google Drive。
设置 Google Workspace 账户
在将 Google Drive 功能集成到 Amazon Quick Suite 解决方案之前,您必须首先在 Google Workspace 环境中设置必要的配置。请完成以下步骤:
- 启用 Google Drive 和 Admin SDK API。
- 创建一个服务帐户和一个 JSON 私钥,以便从 Amazon Quick Suite 访问该服务帐户。保存此密钥以完成后续步骤中的配置。
- 添加域级授权。这涉及将服务帐户的客户端 ID 与以下 OAuth 范围相关联,以允许服务帐户访问 Google Drive 中的组织数据:
https://www.googleapis.com/auth/drive.readonlyhttps://www.googleapis.com/auth/drive.metadata.readonlyhttps://www.googleapis.com/auth/admin.directory.group.readonlyhttps://www.googleapis.com/auth/admin.directory.user.readonlyhttps://www.googleapis.com/auth/cloud-platform
在 Google Workspace 中创建用户
为了演示访问控制功能,请在 Google Workspace 管理控制台中创建两个名为 test user1 和 test user2 的测试用户。
配置 Google Drive 中的共享驱动器
配置 Google Drive 中的共享驱动器访问权限:
- 在 Google Drive 中创建一个新的共享驱动器,并记下文件夹 ID,以便在测试此解决方案时使用。
- 设置访问权限:
- 授予
test user1内容管理员角色,以允许完整的文件管理功能。 - 不授予
test user2对共享驱动器的任何访问权限。
- 授予
此设置使得可以验证解决方案是否根据 Google Drive 权限正确执行访问控制。
配置 AWS 环境
在本节中,我们将介绍配置 AWS 设置和资源的步骤。
在 AWS 上配置用户和权限
在 IAM Identity Center 中创建与 Google Workspace 中创建的测试用户相对应的用户:
- 为
test user1创建一个用户。 - 为
test user2创建一个用户。
或者,对于企业部署,请通过您的企业身份提供商 (IdP) 管理用户。配置跨域身份管理系统 (SCIM) 以实现自动化用户配置和生命周期管理。有关更多信息,请参阅如何连接到外部身份提供商。
- 完成电子邮件验证和密码重置过程。
- 在 IAM Identity Center 中创建一个包含上述两个用户的组。
为 Google 服务帐户凭据创建密钥
安全地存储 Google 服务帐户凭据:
- 在 Secrets Manager 中创建一个新密钥:
- 存储为 Google 服务帐户生成的 JSON 私钥。
- 使用适当的密钥命名约定以便快速识别。
- 配置访问控制:
- 使用 AWS Identity and Access Management (IAM) 策略限制对密钥的访问,并且仅授予对执行文件上传的 Lambda 函数的访问权限。
这种安全的凭据管理方法提供了以下功能:
- 保护敏感的 Google 服务帐户凭据
- 使 Lambda 函数能够向 Google Drive API 进行身份验证
- 支持以授权用户的名义进行安全的文件上传
- 遵循 AWS 安全最佳实践来管理应用程序密钥
创建 Amazon Quick Suite 账户
创建和配置 Amazon Quick Suite 帐户:
- 在 AWS 管理控制台中搜索 Amazon Quick Suite 并注册一个新的 Amazon Quick Suite 帐户。
- 提供帐户名称和接收帐户相关通知的电子邮件地址。
- 选择身份验证方法为 IAM Identity Center。此身份验证方法只能使用 Quick Suite 的企业版进行配置。
- 将 IAM Identity Center 中创建的组(包含两个测试用户)添加为 Admin Pro 组。
- 保持所有其他设置不变,然后创建帐户。
- 验证用户访问权限。确认两个用户都可以成功登录到帐户。
配置 Amazon Cognito 以实现身份验证和授权
要配置 Amazon Cognito,请完成以下步骤:
- 在 Amazon Cognito 控制台中,创建一个 Amazon Cognito 用户池:
- 设置一个新的用户池来管理用户身份。
- 配置基本的用户池设置。
- 配置应用程序客户端:
- 在用户池中创建一个应用程序客户端。
- 将 应用程序类型 设置为 机器对机器应用程序。
- 创建一个 Amazon Cognito 域名:
- 使用 托管 UI(经典版) 品牌版本配置域名。
- 记下 Amazon Cognito 域名,以供后续步骤使用。
- 配置 Google OAuth 凭据:
- 在 Google Workspace 中,创建 OAuth 凭据,并将授权的重定向 URI 提供为
<cognito-domain-name>/oauth2/idpresponse。
- 在 Google Workspace 中,创建 OAuth 凭据,并将授权的重定向 URI 提供为
- 将 Google 设置为联合 IdP:
- 使用上一步中 Google OAuth 凭据的客户端 ID 和客户端密钥。
- 将授权范围配置为 profile email openid(授权范围之间用空格分隔)。
- 将电子邮件、姓名和用户名对应的 Amazon Cognito 用户池属性映射到相应的 Google 属性。
- 配置登录页面设置:
- 将 允许的回调 URL 设置为
https://<your-region>.quicksight.aws.amazon.com/sn/oauthcallback。 - 选择 Google 作为 IdP。
- 将 允许的回调 URL 设置为
- 配置 OAuth 2.0:
- 将 授权类型 设置为 授权码授权。
- 将 OpenID Connect 范围 设置为 Email、OpenID 和 Profile。
确保所有 URI 和回调 URL 格式正确,并与您的应用程序的配置相匹配。
配置 Lambda 函数
在本节中,我们将介绍配置 Lambda 函数的步骤,该函数包含验证用户权限、与 Google Drive API 交互以及将文件上传到指定文件夹的逻辑。
- 部署 Lambda 函数:
- 使用 lambda_function.py 文件中提供的代码。
- 包含 requirements.txt 文件中列出的所有必要依赖项。
- 配置环境变量:
COGNITO_USER_POOL_ID– 您 Amazon Cognito 配置中的用户池 ID。REGION_NAME– 您的 AWS 区域。SECRET_NAME– 存储在 Secrets Manager 中的 Google 服务帐户凭据的 Amazon 资源名称 (ARN)。
- 为 Lambda 函数设置执行 IAM 角色权限,以访问 Secrets Manager 和 Amazon Cognito。定义 IAM 策略的步骤可以在 GitHub 存储库中找到。
配置 API Gateway
完成以下步骤以配置 API 资源:
- 创建 REST API:
- 使用
api-gateway-spec.yaml文件中定义的 OpenAPI 架构,该文件可以在 GitHub 存储库中找到。 - 在架构中,提供您的区域和 Lambda 函数 ARN。
- 使用
- 为 API 创建一个新的阶段,并根据您的环境配置适当的阶段设置。
- 配置 Amazon Cognito 授权器:
- 链接到先前创建的 Amazon Cognito 用户池。
- 设置授权范围:
openid、email、profile和aws.cognito.signin.user.admin。
- 允许 API Gateway 从函数的 资源策略调用 Lambda 函数:
- 在 Lambda 控制台上,修改资源策略并授予对 POST 方法的 API Gateway 源 ARN 的调用权限。
- 部署 API:
- 部署到您创建的阶段。
- 记下 API 端点 URL,以供在 Amazon Quick Suite 配置中使用。
创建 Amazon Quick Suite 自定义操作连接器
在这一步中,我们在 Amazon Quick Suite 中创建自定义操作连接器:
- 在 GitHub 存储库中找到
openapischema.json文件,并替换以下占位符值:<your-api-gateway-url-with-stage><your-cognito-domain-name><your-region><your-user-pool-id><your-cognito-app-client-id>
- 使用前面创建的
test user1登录 Quick Suite 帐户。 - 导航到 Amazon Quick Suite 帐户中的集成部分,并使用 OpenAPI 规范自定义连接器类型创建一个新的操作。
- 上传修改后的 OpenAPI 架构文件,命名为
openapischema.json。
- 上传修改后的 OpenAPI 架构文件,命名为
- 以 用户身份验证 作为身份验证方法创建集成,并填写其他字段:
- 基本 URL – 使用您的 API Gateway 端点。请确保在末尾包含阶段名称。
- 客户端 ID – 使用您的 Cognito 应用程序客户端的客户端 ID。
- 客户端密钥 – 使用您的 Cognito 应用程序客户端的客户端密钥。
- 令牌 URL –
<your-cognito-domain-name>/oauth2/token - 授权 URL –
<your-cognito-domain-name>/oauth2/authorize - 重定向 URL –
https://<your-region>.quicksight.aws.amazon.com/sn/oauthcallback
- 共享集成 – 将创建的集成与 IAM Identity Center 中添加了两个测试用户的组共享。
用户现在可以通过自然语言交互将文件上传到 Google Drive。
创建 Amazon Quick Suite 聊天代理以下载文件到 Google Drive:
有两种方式可以与聊天代理交互
- Quick Suite 有一个名为 My Assistant 的默认聊天代理,可用于添加在上一步中配置的操作。
- 创建自定义聊天代理
- 从左侧导航窗格中选择 Chat agents。
- 通过提供 名称 和 代理身份 来创建一个新的聊天代理。
- 在 Actions 下,链接在上述步骤中创建的操作连接器并启动代理。
- 一旦代理成功启动,通过搜索用户的电子邮件地址与
test user2共享代理,并向聊天代理提供查看者权限。
测试解决方案
现在您已准备好使用适当的权限测试文件上传功能。
场景 1:以共享驱动器的内容管理员或贡献者身份测试
- 以
test user1的身份登录 Quick Suite 帐户。 - 从左侧导航窗格中选择聊天代理。选择作为上一步一部分创建的代理。
- 在聊天窗口中输入以下提示:“上传一个文件,文件名是‘testfile1.txt’,文件内容是‘This is a sample text file I am uploading to shared drive’,文件夹 ID 是 <您在 Google Drive 中创建共享驱动器时记下的共享驱动器文件夹 ID>”。

当系统提示授权时,登录 Google 帐户。

成功授权后,验证您输入的信息并根据需要进行修改。

操作完成后,您将看到一条成功消息以及上传到 Google Drive 的文件链接。

复制链接并将其粘贴到新的浏览器标签页中,即可查看已上传的文件。

场景 2:测试对共享驱动器没有权限的用户
使用 Amazon Quick Suite 帐户以 test user2 的身份访问聊天代理,然后尝试运行相同的提示将文件上传到共享驱动器。由于 test user2 没有访问共享驱动器的权限,您将收到类似于以下屏幕截图中所示的错误消息。

清理
如果您不再需要作为此解决方案部署的资源,并且希望避免产生与这些资源相关的持续成本,请完成以下步骤来清理和删除相关组件:
- 删除 Amazon Quick Suite 相关资源,包括您的 Amazon Quick Suite 帐户。
- 从 Secrets Manager 中删除为此应用程序创建的密钥。
- 删除 Lambda 函数。
- 删除 API Gateway 中部署的 API。
- 删除 Amazon Cognito 中的用户池以及所做的其他配置。
结论
本文演示了组织如何使用 Amazon Quick Suite 操作连接器来构建与 Google Drive 集成的安全直观的文件上传解决方案。通过使用 API Gateway、AWS Lambda、Amazon Cognito 和 Secrets Manager 等 AWS 服务,以及 Amazon Quick Suite 的自然语言功能,企业可以将文件管理任务转变为简单的对话式交互。通过使用此基于 Amazon Quick Suite 的安全文件上传解决方案,用户可以通过自然语言交互来管理他们的 Google Drive 内容。
这种方法的主要优点包括:
- 改善用户体验 – 用户可以使用自然语言提示将文件上传到 Google Drive,而无需了解底层 API 和系统的专业技术知识。
- 增强安全性和合规性 – 该解决方案通过 Google Drive 和 Amazon Cognito 用户池管理的[文件访问权限],仅允许具有必要权限的用户将文件上传到共享驱动器,从而强制执行访问控制。
- 降低运营复杂性 – 自定义操作连接器方法抽象了与第三方云存储服务集成的技术复杂性,因此组织可以专注于向用户提供有价值的功能。
有关分步指南,请参阅 GitHub 存储库。亲自尝试该解决方案,并在评论中分享您的反馈和问题。
关于作者
Naimisha Pinna 是 AWS 的解决方案架构师,负责帮助企业客户踏上云之旅。她拥有奥多明尼加大学计算机科学硕士学位。她的专业领域是人工智能和机器学习。她喜欢绘画和园艺。
Josh Demuth 是一位具有 20 年技术行业经验的 GenAI 解决方案架构师,其中有几年专注于系统集成。他热衷于创建使[异构系统]协同工作的解决方案,并为业务问题寻找创新的方法。AI 和自动化的快速发展使他对地平线上变革性的解决方案感到兴奋。
🚀 想要体验更好更全面的AI调用?
欢迎使用青云聚合API,约为官网价格的十分之一,支持300+全球最新模型,以及全球各种生图生视频模型,无需翻墙高速稳定,文档丰富,小白也可以简单操作。

评论区