亚马逊云科技
创建亚马逊云科技私有仓库(BYOC)
前置准备
由于 BYOC 模式下的资源都部署在您的云账号中,因此在使用之前需要进行一些前置准备工作,以确保顺利进行资源配置和管理:
- 准备专有网络 VPC 和子网
- 了解资源编排和资源栈(可选)
创建亚马逊云科技私有仓库
创建仓库引导
在创建仓库引导页或者左上角仓库列表,单击 新建仓库 ,进入仓库配置页,填写表单进行创建。

| 参数 | 说明 |
|---|---|
| 仓库名称 | 必填项。组织内唯一,最多 32 个字符,只支持包含中文、字母、数字、-、_ |
| 仓库模式 | 必选项。私有仓库(BYOC)。 |
| 云厂商 | 必选项。选择亚马逊云科技。 |
| 地域 | 必选项。选择希望部署数据仓库在哪个地域。由于异地通信网络架构复杂,而且延时较大,建议选择与你的应用系统/客户端相同的地域。目前,SelectDB Cloud 已支持云平台多个地域,并会根据客户需求情况,陆续支持更多地域。 |
| 内核版本 | 必选项。SelectDB Core 的版本,从 2.0 版本开始,支持存算分离,底层采用共享存储,数据存储性价比高,按实际使用量计费,无需预先配置容量空间。 |
| VPC 环境 | 必选项。第一次新建 BYOC 仓库,默认选择新 VPC,后续步骤会引导你选择云环境中的 VPC,完成新建仓库。如果你之前已在 VPC 内创建过 BYOC 仓库,你可以直接选择这个 VPC 并新建仓库。 |
下表列出了目前支持的亚马逊云科技地域和可用区信息:
| 云平台 | 地域名称 | 地域 ID | 可用区 ID |
|---|---|---|---|
| 亚马逊云科技 | 宁夏 | cn-northwest-1 | cnnw1-az1 |
点击 下一步。
亚马逊云前置准备
在正式创建前,参照说明文档完成前置准备:
- 准备专有网络 VPC 和子网
- 了解资源编排和资源栈(可选)
点击已完成进入下一步。

创建 BYOC 仓库 · ① 亚马逊云科技前置准备(IAM 授权 / 准备 VPC 子网 / 了解 CloudFormation 资源编排)
亚马逊云资源配置
SelectDB Cloud 会使用亚马逊云科技的资源编排服务创建一系列资源并完成用户 VPC 内私有仓库的创建工作。
请使用管理员权限进行资源栈创建,或者是联系管理员为你创建这个资源栈,否则可能会遇到因权限不足导致执行模板失败的情况。

创建 BYOC 仓库 · ② 云资源配置(跳转亚马逊云科技 → 打开 CloudFormation 资源栈页面)
填写堆栈名称、选择已创建的 VPC、子网, 勾选 "我确认,AWS CloudFormation 可能创建具有自定义名称的 IAM 资源。",点击创建堆栈,等待部署完成。

CloudFormation 快速创建堆栈 · 填写堆栈名称、选择已建 VPC 与子网(Token 已脱敏,宁夏实拍)

亚马逊云科技 · CloudFormation 堆栈创建中(selectdb-stack- · CREATE_IN_PROGRESS,部署 IAM 角色 / Agent EC2 / PrivateLink / S3)*

亚马逊云科技 · CloudFormation 堆栈创建完成(CREATE_COMPLETE,Agent 等资源就绪)
仓库初始化
系统进行仓库初始化,约需 5-10 分钟。如遇到仓库初始化 30 分钟以上,或其他无法继续的情形,请 联系客服 寻求帮助。

创建 BYOC 仓库 · ③ 仓库初始化:系统自动进行仓库初始化(进度条,约需 5-10 分钟),完成后仓库即可使用
新建集群
在新建集群引导页或者集群概览页,单击 新建集群 ,进入集群配置页。详细操作请参照 新建集群。

BYOC 仓库创建完成 · 集群概览(initial_cluster 运行中 · 4 vCPU / 200 GB 缓存)
开放公网连接和访问
仓库创建完成后,如果需要在公网连接仓库、访问 WebUI 等,需要在亚马逊云科技控制台设置安全组。正如我们前面提到的,我们支持两种类型的 AWS 子网。如果你选择的是私有子网,那么我们即认为你们公司的网络与部署 SelectDB 的 VPC 网络是互通的,因此在设置安全组后,可通过 http://FE_MASTER_IP:8088 直接访问 WebUI 界面。如果你选择的是公网子网,可通过 SelectDB 控制台界面的按钮直接连接 WebUI。
设置安全组
进入 SelectB Cloud,点击连接,复制 Master IP。
进入 亚马逊云科技EC2 控制台,搜索上面的 IP。
点击进入实例并确认 VPC 无误。
进入 亚马逊云科技实例控制台 ,点击左侧的网络与安全 > 安全组,点击创建安全组。
输入安全组名称、描述,选择VPC
添加入站规则:类型选择自定义 TCP,端口输入8080、8088、9030,源选择自定义,输入要连接 SelectDB 仓库的公网 IP,建议设置最小化范围(避免对 0.0.0.0/0 全开)。
点击创建安全组。
进入 EC2 控制台 ,输入主 IP 的实例详情。
搜索安全组。点击添加安全组。点击保存。
返回 SelectDB Cloud 连接页面,点击 Master IP 公网刷新图标。
此时,即可访问 WebUI ,通过公网连接仓库。
仓库使用
仓库的使用操作,以及如果需要删除仓库,请参考文档 仓库使用。
亚马逊云科技前置准备
本文主要介绍创建 BYOC 类型仓库涉及的亚马逊云科技相关操作,包括 准备专有网络 VPC 和子网、了解资源编排和资源栈 等。
准备专有网络 VPC 和子网
提示:
- 如果已有符合地域和可用区要求的 VPC 和子网,并期望将 BYOC 仓库部署在此 VPC 内,可以跳过下面创建专有网络 VPC 和子网步骤。
- 当前支持的地域和子网可用区为:
| 云平台 | 地域名称 | 地域 ID | 可用区 ID |
|---|---|---|---|
| 亚马逊云科技 | 宁夏 | cn-northwest-1 | cnnw1-az1 |
创建 BYOC 类型仓库前,如果没有符合要求的已有 VPC 和子网,则需要提前创建专有网络 VPC 和子网,以下是具体操作。
子网要求
由于 SelectDB 服务的部署和管理需要通过互联网访问 AWS 的 EC2 ELB 服务(以及未来的其他服务),因此我们目前支持两种类型的子网:
1. 具有外网访问能力的私有子网(推荐)
子网路由表中包含有 0.0.0.0/0 到 NAT 公网网关的路由。建议使用该类型子网,在这种情况下,所有创建出的机器都将通过共享 NAT 公网网关的公共 IP 地址访问外部网络,这样更安全。不过需要注意的是,如果你选择了私有子网,我们即假定你们公司内网和该 VPC 网络是互通的,否则将无法顺利访问 WebUI。
2. 公网子网(不推荐)
子网路由表中包含有 0.0.0.0/0 到 IGW 互联网网关的路由。不建议使用该类型子网,在这种情况下,我们将会给 SelectDB 后续所有创建出的机器自动分配一个公网 IP。
当使用 CloudFormation 创建资源栈时,请确保 IGW 或 NAT 状态正常,以及路由表配置正确。对于不满足上述两个条件的子网,我们将在 CloudFormation 构建期间直接报告错误并阻止后续执行。
以下为亚马逊云科技提供的经典网络架构图。子网4为具有外网访问能力的私有子网,子网1和子网2为公网子网,这三个子网均能访问外网符合要求,而子网3无法访问外网不符合要求。

亚马逊云科技经典网络架构 · 子网外网访问能力(公网子网经 IGW、私有子网经 NAT,推荐私有子网部署)
创建 VPC
打开亚马逊云科技 VPC 控制台,切换到期望部署 BYOC 仓库的地域。
点击 创建 VPC ,进入 VPC 创建页面。

亚马逊云科技 · 创建 VPC 页面(选「仅 VPC」,准备填写名称与 IPv4 CIDR;CIDR 须在 /16~/28 之间)
选择 仅 VPC ,输入名称、选择 IPv4 CIDR,点击 创建 VPC ,完成创建。

亚马逊云科技 · 创建 VPC · 填好名称与 IPv4 CIDR(如 10.0.0.0/16)后点「创建 VPC」
创建子网
点击左侧 子网 > 创建子网 ,进入子网创建页面。
我们建议创建两个子网(注意,子网可用区id需要保持一致),一个作为公共子网,一个作为私有子网,最终我们将在私有子网上部署 SelectDB 服务。
注意: 当前支持的地域和子网可用区如下:
| 云平台 | 地域名称 | 地域 ID | 可用区 ID |
|---|---|---|---|
| 亚马逊云科技 | 宁夏 | cn-northwest-1 | cnnw1-az1 |

亚马逊云科技 · 创建子网(子网名称 / 可用区 cnnw1-az1 / 子网 IPv4 CIDR;建议公网、私网各建一个且可用区一致)
创建 IGW 和 NAT 并配置路由表
创建一个 IGW 互联网网关并关联到 VPC

亚马逊云科技 · 创建互联网网关 IGW(填写名称标签后点「创建互联网网关」)

亚马逊云科技 · 将互联网网关附加到 VPC(选择目标 VPC 后点「连接互联网网关」)
在公网子网的路由表中添加到 IGW 的路由

亚马逊云科技 · 在公网子网的路由表中添加 0.0.0.0/0 → 互联网网关 IGW 的路由
在公网子网中创建一个 NAT 网关

亚马逊云科技 · 在公网子网创建 NAT 网关(连接类型选「公有」、分配弹性 IP)
为私有子网新建一个路由表,并添加到 NAT 的路由

亚马逊云科技 · 为私有子网新建路由表(填名称、选所属 VPC)

亚马逊云科技 · 在私有子网的新路由表中添加 0.0.0.0/0 → NAT 网关的路由
将新的路由表关联到私有子网

亚马逊云科技 · 将新路由表关联到私有子网(勾选私有子网 → 保存关联)
最终的网络拓扑应该如下所示

亚马逊云科技 · VPC 资源地图(最终网络拓扑):公有子网→主路由表→IGW,私有子网→新路由表→NAT
了解资源编排和资源栈(可选)
在您的云账号下通过资源编排服务(CloudFormation)执行资源栈模板时,会对 VPC、EC2、S3 等云资源进行相关操作,因此需要一系列 IAM 权限。
请使用管理员权限进行资源栈创建,或者是联系管理员为你创建这个资源栈,否则可能会遇到因权限不足导致执行模板失败的情况。
资源编排模版说明
SelectDB 提供的资源编排模板运行在您的云账号下,并且模版代码可见、可审计,不会对您的数据与 VPC 内的其他环境进行操作。您可以通过以下链接获取 SelectDB 提供的资源编排模板:
https://selectdb-cloud-online-cn-north-1.s3.cn-north-1.amazonaws.com.cn/public/aws-cn-byoc.yaml
当您通过亚马逊云科技 CloudFormation 执行上述资源模板时,它会自动进行 Agent 的创建与部署。然后 Agent 会与 SelectDB Cloud 建立私有连接,并完成仓库初始化流程。
在完成资源编排脚本执行后,您即可从 SelectDB Cloud 平台进入相应仓库,像使用普通的仓库一样,开始新建用于数据分析的计算集群。
如何查看资源栈信息
您可以通过亚马逊云科技 CloudFormation 控制台,切换到地域,查看由 SelectDB 资源栈模板创建的所有资源信息,并可通过资源名称查看特定资源。
注意 所有资源栈模版创建出来的资源,都属于您的云账号,并只在您的 VPC 内使用,不会外泄。
- 虚拟机
- 名称:SelectDBAgent(EC2)
- 用途:用于部署 Agent,Prometheus,FluentBit 等程序
- 终端节点
- 名称:SelectDBEndpoint(VPC Endpoint)
- 用途:与 SelectDB Manage服务建立私网连接, 从而可以拉取管控指令并且能够单向推送监控、日志
- 存储桶
- 名称:SelectDBBucket(S3 Bucket)
- 用途:用于存储数仓数据
- 安全组
- 名称:SelectDBSecurityGroupForEndpoint,SelectDBSecurityGroup(VPC SecurityGroup)
- 用途:分别绑定在终端节点和 SelectDB 创建出的所有 EC2 实例,并通过安全组规则限定特定端口特定来源的流量出站入站
- 子用户/角色
- 名称:
- SelectDBUser(子用户),SelectDBUserAccessKey(aksk),SelectDBUserPolicy(子用户权限)
- SelectDBControlPlaneRole(管控侧角色),SelectDBControlPlaneRolePolicy(管控侧角色权限),SelectDBDataAccessRole(内核侧角色),SelectDBDataAccessRolePolicy(内核侧角色权限)
- 用途:
- 创建出的子用户具备 Agent 所需的最小权限策略,之后进行的所有管控操作均使用该子用户的身份进行操作
- 创建出的角色将会绑定到 EC2 实例,通过该角色可以获取临时凭据,相较于使用永久 ak/sk 的方式更加安全
- Lambda 函数
- 名称:
- CustomFunction*(Lambda Function 逻辑)
- CustomResourceRole(执行 Lambda Function 的临时角色)
- 用途:Lambda function 被用来实现一些在 CF 模板中不可用但在 Python SDK 中可用的逻辑。针对该模板,主要有以下几个方面:
- 获取小写的 S3 桶名称,因 Amazon S3 不允许使用大写字母命名 S3 桶。
- 获取用户所选择 VPC 和子网的相关信息, 比如 VPC 网段和子网类型。
- 如果 VPC 内没有 S3 网关终端节点,将会自动创建一个新的,从而可以将 S3 存储桶的流量路由到 VPC 内部,而不是通过公共互联网。

亚马逊云科技 · CloudFormation 资源栈「资源」标签页:模板创建的 Lambda / IAM 角色 / Agent EC2(SelectDBAgent)/ S3 桶等共 32 项资源
资源栈模板创建的子用户的权限说明
初次执行完资源栈模板后会创建一个子用户,用于后续在您的 VPC 内管控数据仓库相关组件,以下为该子用户权限示例以及说明:
注意 创建出来的子用户隶属于您的云账号,并只在您的 VPC 内使用,不会外泄。
{
"Version": "2012-10-17",
"Statement": [
{
"Condition": {
"StringEquals": {
"aws:ResourceTag/resource-created-by": [
"selectdb"
]
}
},
"Action": [
"ec2:TerminateInstances",
"ec2:StopInstances",
"ec2:StartInstances",
"ec2:RebootInstances",
"ec2:ModifyInstanceAttribute",
"ec2:DescribeSecurityGroups",
"ec2:DescribeSecurityGroupRules",
"ec2:AuthorizeSecurityGroupIngress",
"ec2:AuthorizeSecurityGroupEgress",
"ec2:DeleteSecurityGroup",
"ec2:GetEbsEncryptionByDefault",
"ec2:GetEbsDefaultKmsKeyId"
],
"Resource": [
"arn:aws-cn:ec2:cn-northwest-1:*:*"
],
"Effect": "Allow"
},
{
"Action": [
"ec2:DescribeVpcs",
"ec2:DescribeSubnets",
"ec2:DescribeAccountAttributes",
"ec2:DescribeAddresses",
"ec2:DescribeInternetGateways",
"ec2:DescribeAvailabilityZones",
"ec2:DescribeInstanceTypes",
"ec2:DescribeVolumes",
"ec2:ModifyVolume",
"ec2:DescribeImages",
"ec2:DescribeInstances",
"ec2:RunInstances",
"ec2:CreateSecurityGroup",
"ec2:DescribeTags",
"ec2:CreateTags",
"ec2:DeleteTags",
"compute-optimizer:GetEnrollmentStatus",
"elasticloadbalancing:*"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Condition": {
"StringEquals": {
"aws:ResourceTag/resource-created-by": [
"selectdb"
]
}
},
"Action": [
"s3:*"
],
"Resource": [
"arn:aws-cn:s3:::selectdb-bucket-*/*",
"arn:aws-cn:s3:::selectdb-bucket-*"
],
"Effect": "Allow"
},
{
"Action": [
"sts:GetCallerIdentity",
"sts:AssumeRole",
"iam:CreateInstanceProfile"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Condition": {
"StringEquals": {
"iam:PassedToService": [
"ec2.amazonaws.com.cn"
]
}
},
"Action": [
"iam:PassRole",
"iam:AddRoleToInstanceProfile"
],
"Resource": "arn:aws-cn:iam::*:role/selectdb-*",
"Effect": "Allow"
},
{
"Condition": {
"StringEquals": {
"iam:AWSServiceName": [
"elasticloadbalancing.amazonaws.com"
]
}
},
"Action": [
"iam:CreateServiceLinkedRole"
],
"Resource": "*",
"Effect": "Allow"
}
]
}
具体权限划分如下:
- EC2 & VPC 权限:
- 管理 EC2、安全组
YAML { "Condition": { "StringEquals": { "aws:ResourceTag/resource-created-by": [ "selectdb" ] } }, "Action": [ "ec2:TerminateInstances", "ec2:StopInstances", "ec2:StartInstances", "ec2:RebootInstances", "ec2:ModifyInstanceAttribute", "ec2:DescribeSecurityGroups", "ec2:DescribeSecurityGroupRules", "ec2:AuthorizeSecurityGroupIngress", "ec2:AuthorizeSecurityGroupEgress", "ec2:DeleteSecurityGroup", "ec2:GetEbsEncryptionByDefault", "ec2:GetEbsDefaultKmsKeyId" ], "Resource": [ "arn:aws-cn:ec2:cn-northwest-1:*:*" ], "Effect": "Allow" },- 获取 VPC 相关资源信息
YAML { "Action": [ "ec2:DescribeVpcs", "ec2:DescribeSubnets", "ec2:DescribeAccountAttributes", "ec2:DescribeAddresses", "ec2:DescribeInternetGateways", "ec2:DescribeInstances", "ec2:DescribeAvailabilityZones", "ec2:DescribeInstanceTypes", "ec2:DescribeVolumes", "ec2:ModifyVolume", "ec2:DescribeImages", "ec2:RunInstances", "ec2:CreateSecurityGroup", "ec2:DescribeTags", "ec2:CreateTags", "ec2:DeleteTags", "compute-optimizer:GetEnrollmentStatus", ], "Resource": "*", "Effect": "Allow" },
- 获取 VPC 相关资源信息
- ELB 权限:
- 管理负载均衡器 ELB 资源
YAML elasticloadbalancing:* - S3 权限:
- 管理 S3 存储桶以及对存储桶及其内容进行读写操作(针对特定桶)
YAML { "Condition": { "StringEquals": { "aws:ResourceTag/resource-created-by": [ "selectdb" ] } }, "Action": [ "s3:*" ], "Resource": [ "arn:aws-cn:s3:::selectdb-bucket-*/*", "arn:aws-cn:s3:::selectdb-bucket-*" ], "Effect": "Allow" } - IAM & STS 权限:
- IAM & STS 服务相关
YAML { "Action": [ "sts:GetCallerIdentity", "sts:AssumeRole", "iam:CreateInstanceProfile" ], "Resource": "*", "Effect": "Allow" }, { "Condition": { "StringEquals": { "iam:PassedToService": [ "ec2.amazonaws.com.cn" ] } }, "Action": [ "iam:PassRole", "iam:AddRoleToInstanceProfile" ], "Resource": "arn:aws-cn:iam::*:role/selectdb-*", "Effect": "Allow" }, { "Condition": { "StringEquals": { "iam:AWSServiceName": [ "elasticloadbalancing.amazonaws.com" ] } }, "Action": [ "iam:CreateServiceLinkedRole" ], "Resource": "*", "Effect": "Allow" }