为 Amazon RDS Custom for SQL Server 创建并连接到数据库实例 - Amazon Relational Database Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

为 Amazon RDS Custom for SQL Server 创建并连接到数据库实例

您可以创建 RDS Custom 数据库实例,然后使用 Amazon Systems Manager 或远程桌面协议 (RDP) 连接该实例。

重要

务必先完成 为 Amazon RDS Custom for SQL Server 设置环境 部分中的任务,然后才能创建或连接到 RDS Custom for SQL Server 数据库实例。

您可以在创建 RDS Custom 数据库实例时标记它们,但不要创建或修改 RDS Custom 自动化所需的 AWSRDSCustom 标签。有关更多信息,请参阅为 RDS Custom for SQL Server 资源添加标签

首次创建 RDS Custom for SQL Server 数据库实例时,您可能会收到以下错误:The service-linked role is in the process of being created.(服务相关角色正在创建过程中)。请稍后重试。如果您这样做,请等待几分钟,然后重新尝试创建数据库实例。

创建 RDS Custom for SQL Server 数据库实例

使用 Amazon Web Services Management Console 或 Amazon CLI 创建 Amazon RDS Custom for SQL Server 数据库实例。该过程与创建 Amazon RDS 数据库实例的过程相似。

有关更多信息,请参阅创建 Amazon RDS 数据库实例

要创建 RDS Custom for SQL Server 数据库实例
  1. 登录 Amazon Web Services Management Console 并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

  2. 在导航窗格中,选择 Databases (数据库)

  3. 选择创建数据库

  4. 选择Standard create (标准创建) 作为数据库创建方法。

  5. Engine options(引擎选项)中,为引擎版本选择 Microsoft SQL Server

  6. 对于 Database management type(数据库管理类型),选择 Amazon RDS Custom

  7. Edition(版本)部分中,选择要使用的数据库引擎版本。

  8. (可选)如果您打算从 CEV 创建数据库实例,请选中 Use custom engine version (CEV) [使用自定义引擎版本(CEV)] 复选框。在下拉列表中选择您的 CEV。

  9. 对于数据库版本,保留默认值版本。

  10. 对于 Templates (模板),选择 Production (生产)。

  11. Settings(设置)部分中,为 DB instance identifier(数据库实例标识符)输入一个唯一的名称。

  12. 要输入主密码,请执行以下操作:

    1. 设置部分中,打开凭证设置

    2. 清除自动生成密码复选框。

    3. 更改 Master username(主用户名)值,并在 Master password(主密码)和 Confirm password(确认密码)中输入相同的密码。

    预设情况下,新的 RDS Custom 数据库实例对主用户使用自动生成的密码。

  13. DB instance size(数据库实例大小)部分中,为 DB instance class(数据库实例类)选择一个值。

    有关支持的类,请参阅 RDS Custom for SQL Server 的数据库实例类支持

  14. 选择 Storage(存储)设置。

  15. 对于 RDS Custom 安全性,执行以下操作:

    1. 对于 IAM instance profile(IAM 实例配置文件),为 RDS Custom for SQL Server 数据库实例选择实例配置文件。

      IAM 实例配置文件必须以 AWSRDSCustom 开头,例如 AWSRDSCustomInstanceProfileForRdsCustomInstance

    2. 对于 Encryption(加密),选择 Enter a key ARN(输入一个密钥 ARN)以列出可用的 Amazon KMS 密钥。然后从列表中选择您的密钥。

      RDS Custom 需要 Amazon KMS 密钥。有关更多信息,请参阅请确保您有对称的加密 Amazon KMS 密钥

  16. 对于其余部分,请指定首选的 RDS Custom 数据库实例设置。有关每项设置的信息,请参阅 数据库实例的设置。以下设置不会显示在控制台中,也不受支持:

    • 处理器功能

    • Storage autoscaling (存储自动扩展)

    • 可用性与持久性

    • Database authentication(数据库身份验证)中的 Password and Kerberos authentication(密码和 Kerberos 身份验证)选项(仅支持 Password authentication(密码身份验证))

    • Additional configuration(其他配置)中的 Database options(数据库选项)组

    • Performance Insights

    • 日志导出

    • 启用自动次要版本升级

    • 删除保护

    Backup retention period(备份保留期)受支持,但您不能选择 0 天

  17. 选择 Create database(创建数据库)。

    View credential details(查看凭证详细信息)按钮显示在 Databases(数据库)页面中。

    要查看 RDS Custom 数据库实例的主用户名和密码,请选择 View credential details(查看凭证详细信息)。

    要以主用户身份连接到数据库实例,请使用显示的用户名和密码。

    重要

    您无法再次查看主用户密码。如果您不记录它,您可能需要更改它。要在 RDS Custom 数据库实例可用后更改主用户密码,请修改数据库实例。有关修改数据库实例的更多信息,请参阅 管理 Amazon RDS Custom for SQL Server 数据库实例

  18. 选择 Databases(数据库)以查看 RDS Custom 数据库实例列表。

  19. 选择您刚创建的 RDS Custom 数据库实例。

    在 RDS 控制台上,将显示新 RDS Custom 数据库实例的详细信息。

    • 数据库实例具有 creating(正在创建)状态,直到 RDS Custom 数据库实例完成创建并可供使用。当状态变为 Available (可用) 时,您可以连接到该数据库实例。根据所分配的实例类和存储的不同,新数据库实例可能需要数分钟时间才能变得可用。

    • Role(角色)具有值 Instance (RDS Custom)(实例 (RDS Custom))。

    • RDS Custom automation mode(RDS Custom 自动化模式)具有值 Full automation(完全自动化)。此设置意味着数据库实例可以提供自动监控和实例恢复。

您可以通过使用 create-db-instance Amazon CLI 命令创建 RDS Custom 数据库实例。

以下选项为必填:

  • --db-instance-identifier

  • --db-instance-class(有关支持的实例类的列表,请参阅 RDS Custom for SQL Server 的数据库实例类支持

  • --enginecustom-sqlserver-eecustom-sqlserver-se、或 custom-sqlserver-web

  • --kms-key-id

  • --custom-iam-instance-profile

以下示例将创建名为 my-custom-instance 的 RDS Custom for SQL Server 数据库实例。备份保留期为 3 天。

注意

要从自定义引擎版本(CEV)创建数据库实例,请为 --engine-version 参数提供现有 CEV 名称。例如 --engine-version 15.00.4249.2.my_cevtest

对于 Linux、macOS 或 Unix:

aws rds create-db-instance \ --engine custom-sqlserver-ee \ --engine-version 15.00.4073.23.v1 \ --db-instance-identifier my-custom-instance \ --db-instance-class db.m5.xlarge \ --allocated-storage 20 \ --db-subnet-group mydbsubnetgroup \ --master-username myuser \ --master-user-password mypassword \ --backup-retention-period 3 \ --no-multi-az \ --port 8200 \ --kms-key-id mykmskey \ --custom-iam-instance-profile AWSRDSCustomInstanceProfileForRdsCustomInstance

对于 Windows:

aws rds create-db-instance ^ --engine custom-sqlserver-ee ^ --engine-version 15.00.4073.23.v1 ^ --db-instance-identifier my-custom-instance ^ --db-instance-class db.m5.xlarge ^ --allocated-storage 20 ^ --db-subnet-group mydbsubnetgroup ^ --master-username myuser ^ --master-user-password mypassword ^ --backup-retention-period 3 ^ --no-multi-az ^ --port 8200 ^ --kms-key-id mykmskey ^ --custom-iam-instance-profile AWSRDSCustomInstanceProfileForRdsCustomInstance
注意

作为安全最佳实践,请指定除此处所示提示以外的密码。

使用 describe-db-instances 命令以获取有关您的实例的详细信息。

aws rds describe-db-instances --db-instance-identifier my-custom-instance

以下部分输出显示了引擎、参数组和其他信息。

{ "DBInstances": [ { "PendingModifiedValues": {}, "Engine": "custom-sqlserver-ee", "MultiAZ": false, "DBSecurityGroups": [], "DBParameterGroups": [ { "DBParameterGroupName": "default.custom-sqlserver-ee-15", "ParameterApplyStatus": "in-sync" } ], "AutomationMode": "full", "DBInstanceIdentifier": "my-custom-instance", "TagList": [] } ] }

RDS Custom 服务相关角色

服务相关角色 为 Amazon RDS Custom 提供针对您的 Amazon Web Services 账户中的资源的访问权限。这样可以让您更轻松地使用 RDS Custom,因为您不必手动添加必要的权限。RDS Custom 定义其服务相关角色的权限,除非另外定义,否则只有 RDS Custom 可以代入该角色。定义的权限包括信任策略和权限策略,以及不能附加到任何其他 IAM 实体的权限策略。

创建 RDS Custom 数据库实例时,将创建并使用 Amazon RDS 和 RDS Custom 服务相关角色(如果它们尚未存在)。有关更多信息,请参阅将服务相关角色用于 Amazon RDS

首次创建 RDS Custom for SQL Server 数据库实例时,您可能会收到以下错误:The service-linked role is in the process of being created.(服务相关角色正在创建过程中)。请稍后重试。如果您这样做,请等待几分钟,然后重新尝试创建数据库实例。

使用 Amazon Systems Manager 连接到 RDS Custom 数据库实例

创建 RDS Custom 数据库实例后,您可以使用 Amazon Systems Manager 会话管理器。会话管理器是一项 Systems Manager 功能,可让您通过基于浏览器的 shell 或通过 Amazon CLI 管理 Amazon EC2 实例。有关更多信息,请参阅 Amazon Systems Manager 会话管理器

使用会话管理器连接到您的数据库实例
  1. 登录 Amazon Web Services Management Console 并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

  2. 在导航窗格中,请选择 Databases(数据库),然后选择要连接到的 RDS Custom 数据库实例。

  3. 选择配置

  4. 请注意您的数据库实例的 Resource ID(资源 ID)值。例如,资源 ID 可能为 db-ABCDEFGHIJKLMNOPQRS0123456

  5. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  6. 在导航窗格中,选择实例

  7. 查找 EC2 实例的名称,然后选择与其关联的实例 ID。例如,实例 ID 可能为 i-abcdefghijklm01234

  8. 选择连接

  9. 选择 Session Manager(会话管理器)。

  10. 选择连接

    系统将为您的会话打开一个窗口。

您可以使用 Amazon CLI 连接到 RDS Custom 数据库实例。此方法需要 Amazon CLI 的会话管理器插件。要了解如何安装插件,请参阅安装 Amazon CLI 的会话管理器插件

要查找 RDS Custom 数据库实例的数据库资源 ID,请使用 describe-db-instances

aws rds describe-db-instances \ --query 'DBInstances[*].[DBInstanceIdentifier,DbiResourceId]' \ --output text

以下示例输出显示了 RDS Custom 实例的资源 ID。前缀为 db-

db-ABCDEFGHIJKLMNOPQRS0123456

要查找数据库实例的 EC2 实例 ID,请使用 aws ec2 describe-instances。以下示例将 db-ABCDEFGHIJKLMNOPQRS0123456 用于资源 ID。

aws ec2 describe-instances \ --filters "Name=tag:Name,Values=db-ABCDEFGHIJKLMNOPQRS0123456" \ --output text \ --query 'Reservations[*].Instances[*].InstanceId'

以下示例输出显示了 EC2 实例 ID。

i-abcdefghijklm01234

使用 aws ssm start-session 命令,以在 --target 参数中提供 EC2 实例 ID。

aws ssm start-session --target "i-abcdefghijklm01234"

成功的连接如下所示。

Starting session with SessionId: yourid-abcdefghijklm1234 [ssm-user@ip-123-45-67-89 bin]$

使用 RDP 连接到 RDS Custom 数据库实例

创建 RDS Custom 数据库实例后,您可以使用 RDP 客户端连接到此实例。该过程与连接到 Amazon EC2 实例的过程相同。有关更多信息,请参阅连接到您的 Windows 实例

要连接到数据库实例,您需要与该实例关联的密钥对。RDS Custom 会为您创建密钥对。密钥对名称使用前缀 do-not-delete-rds-custom-DBInstanceIdentifier。Amazon Secrets Manager 将私有密钥存储为密钥。

完成以下步骤中的任务:

配置您的数据库实例以允许 RDP 连接

要允许 RDP 连接,请配置 VPC 安全组并在主机上设置防火墙规则。

配置您的 VPC 安全组

请确保与您数据库实例关联的 VPC 安全组允许在端口 3389 上进行传输控制协议 (TCP) 的入站连接。要了解如何配置 VPC 安全组,请参阅 配置您的 VPC 安全组

在主机上设置防火墙规则

要允许端口 3389 上的 TCP 入站连接,请在主机上设置防火墙规则。以下示例显示如何执行此操作。

建议使用特定的 -Profile 值:PublicPrivate 或者 Domain。使用 Any 指这三个值。您还可以指定用逗号分隔的一组值。有关设置防火墙规则的更多信息,请参阅 Microsoft 文档中的 Set-NetFirewallRule

使用 Systems Manager 会话管理器设置防火墙规则
  1. 连接到会话管理器,如 使用 Amazon Systems Manager 连接到 RDS Custom 数据库实例 中所示。

  2. 运行以下命令。

    Set-NetFirewallRule -DisplayName "Remote Desktop - User Mode (TCP-In)" -Direction Inbound -LocalAddress Any -Profile Any
使用 Systems Manager CLI 命令设置防火墙规则
  1. 使用以下命令在主机上打开 RDP。

    OPEN_RDP_COMMAND_ID=$(aws ssm send-command --region $AWS_REGION \ --instance-ids $RDS_CUSTOM_INSTANCE_EC2_ID \ --document-name "AWS-RunPowerShellScript" \ --parameters '{"commands":["Set-NetFirewallRule -DisplayName \"Remote Desktop - User Mode (TCP-In)\" -Direction Inbound -LocalAddress Any -Profile Any"]}' \ --comment "Open RDP port" | jq -r ".Command.CommandId")
  2. 使用输出中返回的命令 ID 获取上一个命令的状态。要使用以下查询返回命令 ID,请确保安装了 jq 插件。

    aws ssm list-commands \ --region $AWS_REGION \ --command-id $OPEN_RDP_COMMAND_ID

检索您的私有密钥

使用 Amazon Web Services Management Console 或 Amazon CLI 检索您的私有密钥。

要检索私有密钥
  1. 登录 Amazon Web Services Management Console 并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

  2. 在导航窗格中,请选择 Databases(数据库),然后选择要连接到的 RDS Custom 数据库实例。

  3. 选择配置选项卡。

  4. 请注意您的数据库实例的 DB instance ID(数据库实例 ID),例如 my-custom-instance

  5. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  6. 在导航窗格中,选择实例

  7. 查找 EC2 实例的名称,然后选择与其关联的实例 ID。

    在此示例中,实例 ID 为 i-abcdefghijklm01234

  8. Details(详细信息)中,查找 Key pair name(密钥对名称)。密钥对名称包括数据库标识符。在此示例中,密钥对名称为 do-not-delete-rds-custom-my-custom-instance-0d726c

  9. 在实例摘要中,查找 Public IPv4 DNS(公有 IPv4 DNS)。在本示例中,公有 DNS 可能是 ec2-12-345-678-901.us-east-2.compute.amazonaws.com

  10. 打开位于 https://console.aws.amazon.com/secretsmanager/ 的 Amazon Secrets Manager 控制台。

  11. 选择与密钥对同名的密钥。

  12. 选择 Retrieve secret value (检索密钥值)

要检索私有密钥
  1. 通过调用 aws rds describe-db-instances 命令获取您的 RDS Custom 数据库实例的列表。

    aws rds describe-db-instances \ --query 'DBInstances[*].[DBInstanceIdentifier,DbiResourceId]' \ --output text
  2. 例如,从示例输出中选择数据库实例标识符,例如 do-not-delete-rds-custom-my-custom-instance

  3. 通过调用 aws ec2 describe-instances 命令查找您的数据库实例的 EC2 实例 ID。以下示例使用 EC2 实例名称来描述数据库实例。

    aws ec2 describe-instances \ --filters "Name=tag:Name,Values=do-not-delete-rds-custom-my-custom-instance" \ --output text \ --query 'Reservations[*].Instances[*].InstanceId'

    以下示例输出显示了 EC2 实例 ID。

    i-abcdefghijklm01234
  4. 通过指定 EC2 实例 ID 查找密钥名称,如以下示例所示。

    aws ec2 describe-instances \ --instance-ids i-abcdefghijklm01234 \ --output text \ --query 'Reservations[*].Instances[*].KeyName'

    以下示例输出显示了使用前缀 do-not-delete-rds-custom-DBInstanceIdentifier 的密钥名称。

    do-not-delete-rds-custom-my-custom-instance-0d726c

使用 RDP 实用工具连接到 EC2 实例

有关更多信息,请参阅《适用于 Windows 实例的 Amazon EC2 用户指南》中的使用 RDP 连接到 Windows 实例。此过程假定您创建了包含您的私有密钥的 .pem 文件。