使用 AWS CloudFormation 部署 Amazon RDS for SQL Server
利用 AWS CloudFormation 部署 Amazon RDS for SQL Server
由 Kiranmayee Mulupuru、Harish Bannai 和 Sapna Thakur 于 2024 年 2 月 6 日发表在 AWS CloudFormation,中级 (200),RDS for SQL Server,技术怎么做
永久链接 评论 分享
主要要点
Amazon RDS for SQL Server 简化了 SQL Server 部署的设置、运营和扩展。整合 AWS CloudFormation,使资源的创建、配置和管理变得可重复和安全。本文演示了如何使用 AWS CloudFormation 堆叠创建 Amazon RDS for SQL Server 实例。Amazon Relational Database Service (Amazon RDS) for SQL Server 使在 AWS 云中设置、运营和扩展 SQL Server 部署变得更加容易。它是一个完全管理、高耐久性的数据库,专为企业工作负载设计,让您能专注于应用程序开发。
Amazon RDS 与 AWS CloudFormation 集成,支持创建、配置和管理 Amazon RDS 资源。通过 CloudFormation 模板,您可以以可重复、可预测和安全的方式管理 RDS for SQL Server 实例的生命周期,并支持自动回滚、自动状态管理和跨账户及地区的实例管理。
在本文中,我们将展示如何使用 AWS CloudFormation 堆叠创建 Amazon RDS for SQL Server 实例。
SQL Server 的 CloudFormation 模板
在开始之前,我们将深入了解 AWS CloudFormation 资源属性,特别是针对 Amazon RDS for SQL Server 的。
AWSRDSDBInstance 资源是定义数据库运行的主机属性的地方,例如实例大小。这个资源将创建一个新的 RDS for SQL Server 实例。

在这一部分,我们探讨一些关键属性。
EngineVersion
EngineVersion 是要使用的数据库引擎的版本号。文档 提供了 RDS for SQL Server 支持的版本列表。以下代码示例将引擎版本设置为 SQL Server Enterprise Edition 2019:
yamlEngine sqlservereeEngineVersion 150042367v1
DBInstanceClass
使用 DBInstanceClass 属性 来指定数据库主机的计算和内存容量,例如 dbm6ixlarge。这在部属不同实例类别时特别有用,未来也可以进行独立的实例类别更改。以下代码示例将实例类别设置为 dbm6ixlarge:
yamlDBInstanceClass dbm6ixlarge
DBInstanceIdentifier
DBInstanceIdentifier 是数据库实例的名称。如果不指定名称,AWS CloudFormation 会生成一个唯一的物理 ID 作为名称。
请注意,如果使用此属性指定自定义名称,则无法进行需要替换实例的更新 (使用 AWS CloudFormation)。这可以用作保护机制。如果您尝试更新 CloudFormation 模板却未意识到某一属性需要替换实例,则更新会失败,因为您使用了自定义名称。
AllocatedStorage
初始分配给数据库实例的存储大小以 GiB 为单位。
yamlPrimaryDBInstance Type AWSRDSDBInstance Properties AllocatedStorage 20
StorageType
指定要与 DB 实例相关联的存储类型。默认值为 gp3。
yamlStorageType Type String Description RDS SQL Server 实例的存储类型 Default gp3
EnvType
指定要创建堆叠的环境,例如生产默认或测试。以下代码片段提供了客户启动该堆叠的选项。
yamlEnvType Default prod Type String AllowedValues prod dev
DatabaseVpcId
可以选择性地请求 VPC 的 IPv6 CIDR 块。您可以从亚马逊的 IPv6 地址池中请求一个 IPv6 CIDR 块,或从通过自携 IP 地址 (BYOIP) 配置的 IPv6 地址池中请求一个 IPv6 CIDR 块。以下链接提供有关 EC2 VPC 的更多详细信息。
VPCIDCIDR
向安全组添加入站规则。入站规则允许实例接收来自指定的 IPv4 或 IPv6 CIDR 地址范围的流量,或来自与指定安全组关联的实例。
yamlVPCIDCIDR Type String Description 用于 DB 安全组的 VPC CIDR
Enhanced Monitoring
属性 MonitoringInterval 60 自动启用增强监控,适用于生产环境,粒度为 60 秒,以便您可以查看实时操作系统指标并解决数据库性能问题。
Performance Insights
属性 EnablePerformanceInsights true 自动启用性能洞察,并使用客户管理的 AWS 密钥管理服务 (AWS KMS) 加密密钥配置性能洞察数据加密。在免费层的保留设置默认为 7 天。如需在更长时间内保留性能数据,请指定 124 个月。更多有关保留期的信息,请参见性能洞察的定价和数据保留。性能洞察帮助您快速检测数据库性能问题,并确定何时以及在哪里采取行动。
以下代码示例启用增强监控和性能洞察,并会为增强监控创建监控角色。
yamlMonitoringInterval 60MonitoringRoleArn !GetAtt SampleCloudFormationDBMonitorRoleArnEnablePerformanceInsights true
AWS Secrets Manager
AWS Secrets Manager 帮助您保护对应用程序、服务和 IT 资源的访问。此服务允许您旋转、管理和检索数据库凭据、API 密钥和其他秘密。
以下代码范例会自动在 RDS for SQL Server 实例上创建 AWS 密钥。
yamlMyRDSSecrets Type AWSSecretsManagerSecret Properties Description 这是我的 RDS 实例的密钥 GenerateSecretString SecretStringTemplate {username admin} GenerateStringKey password PasswordLength 16 ExcludeCharacters @/
您可以在后续部分中找到如何检索 AWS 秘密的明文详细资讯。
连接到 RDS for SQL Server DB 实例
参数
使用可选的参数部分来自定义您的模板。以下代码片段示范了如何在每次创建或更新堆叠时输入自定义值。
yamlParameters SqlServerInstanceName NoEcho false Description RDS SQL Server 实例名称 Default SQLServerCFNPrimaryInstance Type String MinLength 1 MaxLength 63 AllowedPattern [azAZ][azAZ09] InboundIpAddr Type String Description 允许访问 RDS SQL Server 实例的 IP 范围。 InstanceType Type String Default dbm6ixlarge Description RDS SQL Server 实例的类型。 StorageType Type String Description RDS SQL Server 实例的存储类型。 Default gp3 AllocatedStorage Type String Description RDS SQL Server 实例的分配存储类型。 Default 20
SQLServerSecurityGroup
SQLServerSecurityGroup 是 参数 的名称,当通过 CloudFormation 启动 RDS for SQL Server 实例时用于创建或映射安全组。以下代码示例在 RDS for SQL Server 实例上创建 SQL Server 安全组,允许在 1433 埠上的流量。
yamlSQLServerSecurityGroup Type AWSEC2SecurityGroup Properties GroupDescription SQL Server 安全组 SecurityGroupIngress IpProtocol tcp FromPort 1433 ToPort 1433 CidrIp !Ref InboundIpAddr
注意:每当堆叠部署时,CloudFormation 模板会生成新的安全组。作为替代方案,您可以指定现有安全组的名称以重用它。为部署 CloudFormation 堆叠的用户授予 描述 VPC 的权限。详情请参见 授予用户在 Amazon EC2 控制台中工作的权限。
解决方案概述
要实施该解决方案,我们需完成以下步骤:
启动 CloudFormation 堆叠, crear RDS for SQL Server 实例。连接到新的 RDS for SQL Server DB 实例。先决条件
在开始之前,您需确保满足以下先决条件:
已配置 VPC 的现有 AWS 帐户必要的 CloudFormation 模板基础知识确保用户具有最小权限以启动 RDS 实例。基本的 SQL Server Management Studio (SSMS) 知识有关更多详细信息,请参见 创建 Amazon RDS DB 实例 和 连接到运行 Microsoft SQL Server 数据库引擎的 DB 实例。
该解决方案涉及创建和使用新的 AWS 资源,因此会在您的帐户上产生费用。请参见 AWS 定价 获取更多信息。
我们强烈建议您在非生产环境中设置此配置,并在将此解决方案应用于生产环境之前进行端到端验证。
创建 CloudFormation 堆叠
要使用 AWS CloudFormation 配置您的资源,请完成以下步骤:
点击启动堆叠。此按钮会自动在您的 AWS 帐户中启动 AWS CloudFormation 服务,使用所提供的模板 启动。点击下一步。在堆叠名称中,输入名称。在此示例中,我们使用名称 SQLCFNTemplate。在 SqlServerInstanceName 中,输入 RDS for SQL Server 实例名称默认为 SQLCFNDBInstance。在 DatabaseUsername 中,输入数据库管理员帐户用户名。在 DatabasePassword 中,输入数据库管理员帐户密码。或者,您可以使用 AWS Secrets Manager 生成随机密码。点击下一步。
在配置堆叠选项页上,为标签指定任何可选的标签。
点击下一步。
再次点击下一步。
在审核页面上,确认所有设置正确。点击创建堆叠。AWS CloudFormation 堆叠的启动大约需要 1 小时。当堆叠创建完成后,导航到堆叠 (SqlCFNTemplate) 并选择资源选项卡以查看作为此 AWS CloudFormation 模板一部分创建的所有资源。连接到 RDS for SQL Server DB 实例
要连接到您的 DB 实例,请完成以下步骤:
在 Windows EC2 实例上,打开 SSMS,然后选择 连接,选择 数据库引擎。您可以参考此链接 获取有关如何从 EC2 实例连接到 RDS 实例的更多详细信息。对于 伺服器名称,您可以从 Amazon RDS 控制台获取,登录和密码详情来自 AWS Secrets Manager 控制台。参考 从 AWS Secrets Manager 检索秘密 获取从 AWS Secrets Manager 检索密钥的步骤。
复制秘密的明文值并在 SQL Server 密码部分提供它。点击 连接。
在连接成功后,您可以看到 RDS 实例,如下图所示。
清理
如果您不再需要此设置并希望避免未来的费用,您可以删除作为此设置一部分创建的资源,例如 RDS for SQL Server 和 Windows EC2 实例。
要删除作为 AWS CloudFormation 堆叠启动的所有其他资源,请完成以下步骤:
在 AWS CloudFormation 控制台上,点击导航窗格中的 堆叠。选择您创建的堆叠,然后选择 删除。当提示时,选择 删除堆叠。如需更多信息,请参见 在 AWS CloudFormation 控制台中删除堆叠。
cyberghost加速器总结
在本文中,我们解释了如何使用 CloudFormation 模板启动 Amazon RDS for SQL Server。我们执行了对 Windows EC2 实例的 RDP