SelectDB Cloud
管理指南
亚马逊云科技前置准备

亚马逊云科技前置准备

本文主要介绍创建 BYOC 类型仓库涉及的亚马逊云科技相关操作,包括 准备专有网络 VPC 和子网了解资源编排和资源栈 等。

准备专有网络 VPC 和子网

提示:

  1. 如果已有符合地域和可用区要求的 VPC 和子网,并期望将 BYOC 仓库部署在此 VPC 内,可以跳过下面创建专有网络 VPC 和子网步骤
  2. 当前支持的地域和子网可用区为:
云平台地域名称地域 ID可用区 ID
亚马逊云科技宁夏cn-northwest-1cnnw1-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无法访问外网不符合要求。

创建 VPC

打开亚马逊云科技 VPC (opens in a new tab) 控制台,切换到期望部署 BYOC 仓库的地域。

点击 创建 VPC ,进入 VPC 创建页面。

选择 仅 VPC ,输入名称、选择 IPv4 CDR,点击 创建 VPC ,完成创建。

创建子网

点击左侧 子网 > 创建子网 ,进入子网创建页面。

我们建议创建两个子网(注意,子网可用区id需要保持一致),一个作为公共子网,一个作为私有子网,最终我们将在私有子网上部署 SelectDB 服务。

注意: 当前支持的地域和子网可用区如下:

云平台地域名称地域 ID可用区 ID
亚马逊云科技宁夏cn-northwest-1cnnw1-az1

创建 IGW 和 NAT 并配置路由表

创建一个 IGW 互联网网关并关联到 VPC

在公网子网的路由表中添加到 IGW 的路由

在公网子网中创建一个 NAT 网关

为私有子网新建一个路由表,并添加到 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 (opens in a new tab) 控制台,切换到地域,查看由 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 中可用的逻辑。针对该模板,主要有以下几个方面:
      1. 获取小写的 S3 桶名称,因 Amazon S3 不允许使用大写字母命名 S3 桶。
      2. 获取用户所选择 VPC 和子网的相关信息, 比如 VPC 网段和子网类型。
      3. 如果 VPC 内没有 S3 网关终端节点,将会自动创建一个新的,从而可以将 S3 存储桶的流量路由到 VPC 内部,而不是通过公共互联网。

资源栈模板创建的子用户的权限说明

初次执行完资源栈模板后会创建一个子用户,用于后续在您的 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、安全组

      {
          "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 相关资源信息
      {
          "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"
      },
  • ELB 权限:

    • 管理负载均衡器 ELB 资源
      elasticloadbalancing:*
  • S3 权限:

    • 管理 S3 存储桶以及对存储桶及其内容进行读写操作(针对特定桶)
      {
              "Condition": {
                      "StringEquals": {
                              "aws:ResourceTag/resource-created-by": [
                                      "selectdb"
                              ]
                      }
              },
              "Action": [
                      "s3:*"
              ],
              "Resource": [
                  "arn:aws-cn:s3:::selectdb-bucket-008f3509df2de314e/*",
                  "arn:aws-cn:s3:::selectdb-bucket-008f3509df2de314e"
              ],
              "Effect": "Allow"
      }
  • IAM & STS 权限:

    • IAM & STS 服务相关
       {
          "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"
      }
© 2025 北京飞轮数据科技有限公司 京ICP备2022004029号 | Apache、Apache Doris 以及相关开源项目名称均为 Apache 基金会商标