亚马逊AWS官方博客
使用 AWS CloudFormation 自动创建 Amazon Redshift 集群
使用 CloudFormation 模板的好处
利用 AWS CloudFormation 模板,您可以将数百个手工过程压缩为一个文本文件中列出的几个步骤。文件中的声明性代码可以捕获要创建的资源的预期状态,您可以选择自动创建数百项 AWS 资源。此模板将成为基础设施的单一事实来源。
CloudFormation 模板充当加速器。它可以帮助您以安全且可重复的方式跨多个区域和多个账户自动部署技术和基础设施,并且花费的精力和时间最少。
架构概览
下面的架构图和摘要描述了本博文使用的解决方案。
CloudFormation 示例模板预置了架构图中显示的网络基础设施和所有组件。
我将 CloudFormation 模板分成以下三个堆栈:
- CloudFormation 模板,用于设置 VPC、子网、路由表、互联网网关、NAT 网关、Amazon S3 网关终端节点和其他网络组件。
- CloudFormation 模板,用于在 Auto Scaling 组中设置 Amazon Linux 堡垒主机,以连接到 Amazon Redshift 集群。
- CloudFormation 模板,用于设置 Amazon Redshift 集群、CloudWatch 警报、AWS Glue 数据目录,以及 Amazon Redshift Spectrum 和 ETL 作业的 Amazon Redshift IAM 角色。
我使用导出的输出值集成了堆栈。使用三个不同的 CloudFormation 堆栈(而不是一个嵌套堆栈)可以提供更多灵活性。例如,您可以选择在 AWS 区域一次性部署 VPC 和堡垒主机 CloudFormation 堆栈,并多次部署 Amazon Redshift 集群 CloudFormation 堆栈。
最佳实践
这些 CloudFormation 模板构建的架构支持 AWS 高可用性和安全性最佳实践。
VPC CloudFormation 模板可执行以下事项:
- 为高可用性和灾难恢复配置三个可用区。它可以在地理上将这些可用区分布在一个区域内,以便在发生自然灾害时实现最佳隔离和稳定性。
- 为每个可用区预置一个公有子网和一个私有子网。我建议将公有子网用于面向外部的资源,将私有子网用于内部资源,以减少数据泄露的风险。
- 创建并将含默认规则的网络 ACL 关联到私有子网和公有子网。AWS 建议将网络 ACL 用作防火墙,以控制子网级别的入站和出站流量。这些网络 ACL 提供了单独控制,您可以将这些控制自定义为第二层防御。
- 为每个私有子网创建并关联单独的路由表,您可以配置这些路由表来控制 VPC 内外的流量。公有子网共享一个路由表,因为它们都使用同一互联网网关作为与互联网通信的唯一路由。
- 在三个公有子网中的每个子网中创建 NAT 网关,以实现高可用性。与 NAT 实例相比,NAT 网关在部署、可用性和维护方面具有明显优势。NAT 网关允许私有子网中的实例连接到互联网或其他 AWS 服务,即使它们阻止互联网发起与这些实例的连接。
- 创建 Amazon S3 的 VPC 终端节点。在 VPC 的私有子网中运行的 Amazon Redshift 和其他 AWS 资源可以私密连接以访问 S3 存储桶。例如,通过私密、安全且可靠的连接,从 S3 加载数据和从 S3 卸载数据。
Amazon Linux 堡垒主机 CloudFormation 模板可执行以下事项:
- 创建分布在 VPC CloudFormation 模板设置的三个公有子网中的 Auto Scaling 组。Auto Scaling 组使 Amazon Linux 堡垒主机可用在其中一个可用区中。
- 设置弹性 IP 地址,并将其与 Amazon Linux 堡垒主机关联。弹性 IP 地址更容易记忆,并允许 IP 地址来自本地防火墙。如果您的系统终止了一个实例,而 Auto Scaling 组启动了一个新实例,那么现有的弹性 IP 地址将自动与新实例重新关联。这样您就可以随时使用同一受信任的弹性 IP 地址。
- 设置 Amazon EC2 安全组,并与 Amazon Linux 堡垒主机关联。这样您就可以锁定堡垒主机的访问权限,仅允许来自已知 CIDR 范围和端口的入站流量。
- 创建 Amazon CloudWatch Logs 日志组来保存 Amazon Linux 堡垒主机的 Shell 历史记录日志,并设置 CloudWatch 指标来跟踪 SSH 命令计数。通过允许您检查何人何时访问堡垒主机,这有助于进行安全审计。
- 创建 CloudWatch 警报来监控堡垒主机上的 CPU,并在任何内容触发警报时发送 Amazon SNS 通知。
Amazon Redshift 集群模板可执行以下事项:
- 创建跨多个可用区的 Amazon Redshift 集群子网组,以便您可以在不同的可用区创建不同的集群,以便在某个可用区出现故障时最大程度地降低影响。
- 配置数据库审计并将审计日志存储到 S3 存储桶中。它还会限制 Amazon Redshift 日志记录服务的访问权限,并将生命周期规则配置为将超过 14 天的日志存档到 Amazon S3 Glacier。
- 创建具有策略的 IAM 角色,以授予使用 Amazon Redshift Spectrum 所需的最低权限来访问 S3、CloudWatch Logs、AWS Glue 和 Amazon Athena。然后,它会将 IAM 角色与 Amazon Redshift 相关联。
- 创建 EC2 安全组并将其与 Amazon Redshift 集群关联。这样您就可以将 Amazon Redshift 集群的访问权限锁定到已知的 CIDR 范围和端口。
- 使用以下配置创建 Amazon Redshift 集群参数组,并将其与 Amazon Redshift 集群关联。这些参数只提供一般指导。请根据您的需求查看并自定义这些参数。
参数 |
值 | 描述 |
enable_user_activity_logging | TRUE | 该参数可启用用户活动日志。有关更多信息,请参阅数据库审计日志记录。 |
require_ssl | TRUE | 该参数可使 SSL 连接到 Amazon Redshift 集群。 |
wlm_json_configuration | [ { "query_group" : [ ], "query_group_wild_card" : 0, "user_group" : [ ], "user_group_wild_card" : 0, "concurrency_scaling" : "auto", "rules" : [ { "rule_name" : "DiskSpilling", "predicate" : [ { "metric_name" : "query_temp_blocks_to_disk", "operator" : ">", "value" : 100000 } ], "action" : "log", "value" : "" }, { "rule_name" : "RowJoining", "predicate" : [ { "metric_name" : "join_row_count", "operator" : ">", "value" : 1000000000 } ], "action" : "log", "value" : "" } ], "auto_wlm" : true }, { "short_query_queue" : true } ] |
该参数可使用以下配置创建自定义工作负载管理队列 (WLM): 自动 WLM:Amazon Redshift 根据每个工作负载自动管理查询并发性和内存分配。 启用短查询加速 (SQA):Amazon Redshift 在专用空间中执行短时间运行的查询,这样 SQA 查询就不会被迫在队列中等待较长的查询。 为路由到此 WLM 队列的查询启用并发扩展。 创建两条 WLM QMR 规则: 当用于写入中间结果的临时磁盘空间超过 100GB 时记录查询。 当联接步骤中处理的行数超过 10 亿行时记录查询。 您还可以根据需要创建不同的规则,并选择不同的操作(中止、跳过或记录)。 |
max_concurrency_scaling_clusters | 1(或者您选择的值) | 设置启用并发扩展时允许的并发扩展集群最大数量。 |
auto_analyze | TRUE | 如果值为“true”,Amazon Redshift 将持续监控您的数据库并在后台自动执行分析操作。 |
statement_timeout | 43200000 | 终止任何用时超过指定毫秒数的语句。statement_timeout 值是指在 Amazon Redshift 终止查询之前,查询可以运行的最长时间。 |
- 根据安全性最佳实践,配置 Amazon Redshift 集群来监听非默认的 Amazon Redshift 端口。
- 根据 AWS 安全性最佳实践在私有子网中创建 Amazon Redshift 集群。要访问 Amazon Redshift 集群,请使用 Linux 堡垒主机 CloudFormation 模板设置的 Amazon Linux 堡垒主机。
- 除非您针对输入参数 NumberOfNodes 选择 1,否则请创建至少两个节点的集群。AWS 建议每个集群至少使用两个节点进行生产。有关更多信息,请参阅 Amazon Redshift 常见问题的“可用性与持久性”部分。
- 通过使用 Amazon Redshift 托管的 KMS 密钥或用户指定的 KMS 密钥,为 Amazon Redshift 集群启用静态加密。要使用用户指定的 KMS 密钥,但您还没有创建该密钥,请先创建一个 KMS 密钥。有关更多信息,请参阅创建 KMS 密钥。
- 在生产环境下将 Amazon EBS 快照保留期配置为 35 天,在非生产环境下则配置为 8 天。这样您就可以将生产数据库恢复到最近 35 天内的任何时间点,或者将非生产数据库恢复到最近 8 天内的任何时间点。
- 当您使用“删除堆栈”选项删除 Amazon Redshift 集群时,它会自动获取 Amazon Redshift 数据库的最终快照。它可以避免因意外删除 CloudFormation 堆栈而导致的数据丢失。
- 创建 AWS Glue 数据目录作为 AWS 数据湖的元数据存储。
- 针对重要的 CloudWatch 指标(如 PercentageDiskSpaceUsed 和 Amazon Redshift 集群的 CPUUtilization)配置 CloudWatch 警报,并在以下任一情况触发警报时发送 SNS 通知。
- 提供通过之前拍摄的快照恢复 Amazon Redshift 集群的选项。
- 将常见的标签附加到 Amazon Redshift 集群和其他资源。AWS 建议为云基础设施资源分配标签,以管理资源访问控制、成本跟踪、自动化和组织。
先决条件
在设置 CloudFormation 堆栈之前,请注意以下先决条件。
- 您必须拥有 AWS 账户和拥有足够权限的 IAM 用户,才能与 AWS 管理控制台和前面的架构概述部分中列出的服务进行交互。您的 IAM 权限还必须包括创建由 AWS CloudFormation 模板创建的 IAM 角色和策略的权限。
- VPC CloudFormation 堆栈需要三个可用区来设置公有子网和私有子网。请确保选择具有至少三个可用区的 AWS 区域。
- 在计划设置 CloudFormation 堆栈的 AWS 区域,在 EC2 控制台中创建 EC2 密钥对。确保您保存了私有密钥,您只能在此时保存。在设置 Amazon Linux 堡垒主机 CloudFormation 堆栈时,可以将该 EC2 密钥对用作输入参数。
使用 AWS CloudFormation 设置资源
我提供的这些 CloudFormation 模板可作为一般指导。请根据您的需求查看并自定义这些参数。如果您继续这些堆栈部署的某些资源,将会产生费用。
设置 VPC、子网和其他网络组件
此 CloudFormation 模板将创建 VPC、子网、路由表、互联网网关、NAT 网关、Amazon S3 网关终端节点和其他网络组件。按照以下步骤在您的 AWS 账户中创建这些资源。
- 登录到 AWS 管理控制台。
- 在顶部的导航功能区中,选择要在其中创建堆栈的 AWS 区域,然后选择下一步。此 CloudFormation 堆栈需要三个可用区来设置公有子网和私有子网。请选择具有至少三个可用区的 AWS 区域。
- 请选择以下“启动堆栈”按钮。此按钮会在您的 AWS 账户中使用模板自动启动 AWS CloudFormation 服务。系统会需要登录时提示您。您可以根据需要从控制台中查看 CloudFormation 模板。
- CloudFormation 堆栈需要一些参数,如以下屏幕截图所示。
- 堆栈名称:输入有意义的堆栈名称,例如 rsVPC
- ClassB 第二个八进制数:指定 VPC IPv4 CIDR 块的第二个八进制数 (10.XXX.0.0/16)。您可以指定介于 0 到 255 之间的任何数字,例如,指定 33 来创建具有 IPv4 CIDR 块 10.33.0.0/16 的 VPC。要详细了解针对 IPv4 的 VPC 和子网大小调整,请参阅针对 IPv4 的 VPC 和子网大小调整。
- 输入所有参数值后,请选择下一步。
- 在下一个屏幕上,输入所需的任何标签、IAM 角色或任何高级选项,然后选择下一步。
- 在最后一个屏幕上查看详细信息,并选择创建。
创建堆栈需要几分钟的时间。参阅 AWS CloudFormation 资源部分,查看该堆栈设置的不同组件的物理 ID。
然后,您必须设置 Amazon Linux 堡垒主机,以便用于登录 Amazon Redshift 集群。
设置 Amazon Linux 堡垒主机
此 CloudFormation 模板会在 Auto Scaling 组中创建 Amazon Linux 堡垒主机。按照下面的步骤在 VPC 中创建堡垒主机。
- 在顶部的导航功能区中,选择要在其中创建堆栈的 AWS 区域,然后选择下一步。
- 请选择以下“启动堆栈”按钮。此按钮会在您的 AWS 账户中使用要启动的模板自动启动 AWS CloudFormation 服务。
- CloudFormation 堆栈需要一些参数,如以下屏幕截图所示。
- 堆栈名称:输入有意义的堆栈名称,例如 rsBastion。
- 父级 VPC 堆栈:输入您在上一步中设置的 VPC 堆栈的 CloudFormation 堆栈名称。在 CloudFormation 控制台中找到此值,例如 rsVPC。
- 允许的堡垒外部访问 CIDR:以 x.x.x.x/x 格式输入允许的 CIDR 块,以允许对堡垒主机进行外部 SSH 访问。
- 密钥对名称:选择您在“先决条件”部分设置的密钥对名称。
- 堡垒实例类型:为堡垒实例选择 Amazon EC2 实例类型。
- LogsRetentionInDays:指定保留该堡垒主机的 CloudWatch 日志事件的天数。
- SNS 通知电子邮件:输入用于配置 SNS 主题以发送 CloudWatch 警报通知的电子邮件通知列表。
- 堡垒租区:选择您在其中启动堡垒主机的 VPC 租区。
- 启用横幅:选择后,可在通过 SSH 连接至堡垒时显示横幅。
- 堡垒横幅:使用默认设置或提供以下文件所在的 S3 位置:包含登录时主机显示的横幅文本的文件。
- 启用 TCP 转发:选择 True 可启用/禁用 TCP 转发。将该值设置为 true 可启用 TCP 转发(SSH 隧道)。此功能非常有用,但也可能带来安全风险,因此我建议您,若非必要,请保留默认的禁用设置。
- 启用 X11 转发:选择可启用/禁用 X11 转发。将该值设置为 true 可启用通过 SSH 登录 X Windows。X11 转发非常有用,但也可能带来安全风险,因此我建议您,若非必要,请保留默认的(禁用)设置。
- 自定义引导脚本:可选。指定在堡垒主机设置期间运行的自定义引导脚本 S3 位置。
- AMI 覆盖:可选。指定实例的 AWS 区域特定映像。
- 输入所有参数值后,请选择下一步。
- 在下一个屏幕上,输入所需的任何标签、IAM 角色或任何高级选项,然后选择下一步。
- 在最后一个屏幕上查看详细信息,选中我确认,AWS CloudFormation 可能创建 IAM 资源复选框,然后选择创建。
创建堆栈需要几分钟的时间。参阅 AWS CloudFormation 资源部分,查看该堆栈设置的不同组件的物理 ID。
现在,您可以设置 Amazon Redshift 集群了。
设置 Amazon Redshift 集群
此 CloudFormation 模板将会设置 Amazon Redshift 集群、CloudWatch 警报、AWS Glue 数据目录、Amazon Redshift IAM 角色和所需的配置。按照以下步骤在 VPC 中创建这些资源。
- 在屏幕右上角选择您要在其中创建堆栈的 AWS 区域,然后选择下一步。
- 请选择以下“启动堆栈”按钮。此按钮会在您的 AWS 账户中使用模板自动启动 AWS CloudFormation 服务。
- CloudFormation 堆栈需要一些参数,如以下屏幕截图所示:
- 堆栈名称:输入有意义的堆栈名称,例如 rsdb。
- 环境:选择 Amazon Redshift 集群的环境阶段(开发、测试、生产前、生产)。如果您为此参数指定生产选项,则会将快照保留期设置为 35 天,将 enable_user_activity_logging 参数设置为 true,并会针对高 CPU 利用率和高磁盘空间占用创建 CloudWatch 警报。将此参数设置为开发、测试或生产前会将快照保留期设置为 8 天,将 enable_user_activity_logging 参数设置为 false,并仅会针对高磁盘空间占用创建 CloudWatch 警报。
- 父级 VPC 堆栈:提供父级 VPC 堆栈的堆栈名称。 在 CloudFormation 控制台中查找该值。
- 父级堡垒堆栈(可选):提供父级 Amazon Linux 堡垒主机堆栈的堆栈名称。在 CloudFormation 控制台中查找该值。
- Redshift 集群的节点类型:输入您的 Amazon Redshift 集群的节点类型,例如 dc2.large。
- Redshift 集群中的节点数:输入 Amazon Redshift 集群的计算节点数,例如 2。
- Redshift 集群端口:输入 Amazon Redshift 集群的 TCP/IP 端口,例如 8200。
- Redshift 数据库名称:输入数据库名称,例如 rsdev01。
- Redshift 主用户名:输入数据库主用户名,例如 rsadmin。
- Redshift 主用户密码:输入主用户的字母数字密码。密码必须包含 8 到 64 个可打印的 ASCII 字符,不包括以下字符:/、“、\、”、\ 和 @。密码必须包含一个大写字母、一个小写字母和一个数字。例如 Welcome123。
- 启用 Redshift 日志记录并上传 S3:如果您为此参数选择 true,则堆栈将为新创建的 S3 存储桶启用数据库审计。
- 并发集群的数量上限:针对并发性扩展输入介于 1 到 10 之间的任意数字。要配置 10 个以上的并发集群,您必须提交提升 Amazon Redshift 限额表单,申请提升限额。
- 静态加密:如果您为此参数选择 true,则数据库将使用 KMS 密钥加密您的数据。
- KMS 密钥 ID:如果您将此参数留空,集群会使用默认的 Amazon Redshift KMS 加密 Amazon Redshift 数据库。如果您输入用户创建的 KMS 密钥,那么集群会使用用户定义的 KMS 密钥加密 Amazon Redshift 数据库。
- Redshift 快照标识符:仅在您希望通过快照恢复时输入快照标识符。如果是新的集群,请将其留空。
- Redshift 快照的 AWS 账户 ID:输入创建快照所用的 AWS 账号。如果快照来自当前的 AWS 账户,或者如果您不想通过之前拍摄的快照恢复,请将其留空。
- Redshift 维护时段:输入 Amazon Redshift 集群的维护时段。有关更多信息,请参阅 Amazon Redshift 维护时段。例如 周六:05:00-sat:05:30。
- Redshift IAM 角色的 S3 存储桶:输入现有的 S3 存储桶。堆栈会自动创建 IAM 角色,并将其与具有此存储桶的 GET 和 LIST 权限的 Amazon Redshift 集群相关联。
- AWS Glue 数据目录数据库名称:如果您不想创建 AWS Glue 数据目录,请将此字段留空。如果您需要关联的 AWS Glue 数据目录数据库,请为其输入名称,例如 dev-catalog-01。有关提供 AWS Glue 的 AWS 区域列表,请查看区域产品服务地图。
- SNS 通知的电子邮件地址:输入您用于配置 SNS 主题以发送 CloudWatch 警报的电子邮件通知列表。SNS 会向收件人发送订阅确认电子邮件。收件人必须选择此电子邮件中的确认订阅链接来设置通知。
- 唯一易记名称:此标签会指定唯一易记名称,作为 NAME 标签附加到此堆栈管理的所有 AWS 资源。
- 指定用户的电子邮件:此标签会指定与给定 AWS 资源相关联的用户电子邮件地址。堆栈会向此地址发送中断或维护通知。
- 功能层:此标签会指定具体的应用程序版本。
- 项目成本中心:此标签会指定与给定 AWS 资源的项目相关联的成本中心。
- 保密分类器:此标签会指定与资源相关联的数据的保密分类。
- 合规性分类器:此标签会指定 AWS 资源的合规性级别。
- 输入参数值后,请选择下一步。
- 在下一个屏幕上,输入所需的任何标签、IAM 角色或任何高级选项,然后选择下一步。
- 在最后一个屏幕上查看详细信息,选中我确认,AWS CloudFormation 可能创建 IAM 资源复选框,然后选择创建。
创建堆栈需要几分钟的时间。参阅 AWS CloudFormation 资源部分,查看这些堆栈设置的不同组件的物理 ID。
设置完毕后,请登录 Amazon Redshift 集群,然后运行某些基本命令测试该集群。
使用 Amazon Linux 堡垒主机登录 Amazon Redshift 集群
以下说明假设您使用 Linux 计算机和 SSH 客户端连接至堡垒主机。有关如何使用多种客户端建立连接的更多信息,请参阅连接到 Linux 实例。
- 将您在“先决条件”部分保存的 EC2 密钥对的私有密钥移至 SSH 客户端上的以下位置:您在该位置连接至 Amazon Linux 堡垒主机。
- 使用以下命令更改私有密钥的权限,使其无法公开查看。
chmod 400 <private key file name, e.g., bastion-key.pem >
- 在 CloudFormation 控制台中,选择 Amazon Linux 堡垒主机堆栈。选择输出,并记下 SSHCommand 参数值,您在将 SSH 应用于 Amazon Linux 堡垒主机时会用到该参数值。
- 在 SSH 客户端上,将目录更改为您保存 EC2 私有密钥的位置,然后复制并粘贴上一步中的 SSHCommand 值。
- 在 CloudFormation 控制面板上,选择 Amazon Redshift 集群堆栈。选择输出并记下 PSQLCommandLine 参数值,您在使用 psql 客户端登录 Amazon Redshift 数据库时会用到该参数值。
- EC2 Auto Scaling 启动配置已在 Amazon Linux 堡垒主机上设置了 PostgreSQL 二进制文件。在堡垒主机命令提示符处复制并粘贴 PSQLCommandLine 值。
psql -h ClusterEndpointAddress -p AmazonRedshiftClusterPort -U Username -d DatabaseName
看到提示后,输入数据库用户密码。
- 运行某些基本命令,如以下屏幕截图所示:
select current_database();
select current_user;
后续步骤
在使用 Amazon Redshift 集群设置与应用程序相关的数据库对象前,请考虑创建以下内容:
- 应用程序架构
- 拥有在应用程序架构中创建和修改对象的完整权限的用户
- 拥有应用程序架构读取/写入权限的用户
- 拥有应用程序架构只读权限的用户
仅将您使用 Amazon Redshift 集群设置的主用户用于管理 Amazon Redshift 集群。要创建和修改与应用程序相关的数据库对象,请使用拥有应用程序架构完整权限的用户。您的应用程序应该通过读取/写入用户存储、更新、删除和检索数据。所有报告或只读应用程序均应使用只读用户。授予执行操作所需的最低权限是一项数据库安全性最佳实践。
查看 AWS CloudTrail、AWS Config 和 Amazon GuardDuty,并根据 AWS 安全性最佳实践为您的账户配置这些服务。这些服务会共同帮您监控您的 AWS 账户中的活动;评估和审计您的 AWS 资源的配置;监控恶意或未经授权的行为;以及检测您的资源存在的安全威胁。
删除 CloudFormation 堆栈
如果您继续使用本博文中的 CloudFormation 堆栈部署的某些 AWS 资源,将会产生费用。
您可以删除 CloudFormation 堆栈,以删除此堆栈创建的所有 AWS 资源。要清理您的所有堆栈,请使用 CloudFormation 控制台逆序删除您创建的三个堆栈。
要删除堆栈,请执行以下操作:
- 在 CloudFormation 控制台中的堆栈页面上,选择要删除的堆栈。堆栈目前必须处于运行状态。
- 在堆栈详细信息窗格中,选择删除。
- 看到提示后,选择删除堆栈。
堆栈删除操作开始后便无法停止。堆栈将进入 DELETE_IN_PROGRESS 状态。堆栈删除操作完成后,堆栈状态将变成 DELETE_COMPLETE。默认情况下,AWS CloudFormation 控制台不会显示处于 DELETE_COMPLETE 状态的堆栈。要显示已删除的堆栈,您必须按照在 AWS CloudFormation 控制台上查看删除的堆栈中所述,更改堆栈视图筛选条件。
如果删除操作失败,堆栈将进入 DELETE_FAILED 状态。如需解决方案,请参阅堆栈删除失败。
小结
在本博文中,我向您演示了如何自动创建 Amazon Redshift 集群,以及根据 AWS 安全性和高可用性最佳实践使用 AWS CloudFormation 所需的 AWS 基础设施。希望这些示例 CloudFormation 模板对您有帮助,我建议您根据自己的业务需求修改这些模板。
如果您想对本博文发表评论或有问题,请在评论部分留言。
关于作者
Sudhir Gupta 是 Amazon Web Services 的高级合作伙伴解决方案架构师。 他与 AWS 咨询和技术合作伙伴一起工作,提供有关数据仓库和数据湖项目的指导和技术协助,帮助合作伙伴使用 AWS 提高其解决方案的价值。