

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用 AWS DMS 将 Amazon RDS for SQL Server 表导出至 S3 存储桶
<a name="export-amazon-rds-for-sql-server-tables-to-an-s3-bucket-by-using-aws-dms"></a>

*Subhani Shaik，Amazon Web Services*

## Summary
<a name="export-amazon-rds-for-sql-server-tables-to-an-s3-bucket-by-using-aws-dms-summary"></a>

Amazon Relational Database Service (Amazon RDS) for SQL Server 不支持将数据加载到 Amazon Web Services (AWS) 云上的其他数据库引擎链接服务器上。相反，您可以使用 AWS Database Migration Service (AWS DMS) 将 Amazon RDS for SQL Server 表导出到 Amazon Simple Storage Service (Amazon S3) 存储桶，其中的数据可供其他数据库引擎使用。

AWS DMS 可帮助您快速安全地将数据库迁移到 AWS。源数据库可在迁移过程中保持全面运行，从而最大程度地为依赖该数据库的应用程序减少停机时间。AWS DMS 可以在最广泛使用的商用和开源数据库之间迁移数据。

此模式在配置 AWS DMS 端点时使用 AWS Secrets Manager。 服务可帮助您保护访问您的应用程序、服务和 IT 资源所需密钥。您可以使用 Secrets Manager 在数据库凭证、API 密钥和其他密钥的整个生命周期内对其进行轮换、管理和检索。用户和应用程序通过调用 Secrets Manager 来检索机密，从而减少对敏感信息进行硬编码的需要。Secrets Manager 使用 Amazon RDS、Amazon Redshift 和 Amazon DocumentDB 的内置集成提供密钥轮换。此外，该服务还可扩展到其他类型的机密，包括 API 密钥和 OAuth 令牌。Secrets Manager 使您能够使用精细权限控制对机密的访问，并集中审计 AWS Cloud、第三方服务和本地资源的密钥轮换。

## 先决条件和限制
<a name="export-amazon-rds-for-sql-server-tables-to-an-s3-bucket-by-using-aws-dms-prereqs"></a>

**先决条件**
+ 一个有效的 Amazon Web Services account
+ 一个 S3 存储桶
+ 虚拟私有云（VPC）
+ 数据库子网
+ Amazon RDS for SQL Server
+ 一个 AWS Identity and Acess Management (IAM) 角色，该角色具有代表 Amazon RDS 实例对 S3 存储桶的访问（列出、获取和放置对象）。
+ 用于存储 RDS 实例凭证的 Secrets Manager。

## 架构
<a name="export-amazon-rds-for-sql-server-tables-to-an-s3-bucket-by-using-aws-dms-architecture"></a>

**技术堆栈**
+ Amazon RDS for SQL Server
+ AWS DMS
+ Amazon S3
+ AWS Secrets Manager

**目标架构**

下图显示了借助 AWS DMS 将数据从 Amazon RDS 实例导入到 S3 存储桶的架构。

![描述如图所示。](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/images/pattern-img/7ba5756d-44a5-4aa3-97b6-fa3684ae6ce6/images/90f918e1-3ec2-4434-82b8-3ff4ad340fb9.png)


1. 通过源端点连接到源 Amazon RDS 实例的 AWS DMS 迁移任务

1. 从源 Amazon RDS 实例复制数据

1. 通过目标端点连接到目标 S3 存储桶的 AWS DMS 迁移任务

1. 以逗号分隔值 (CSV) 格式将复制的数据导出至 S3 存储桶

## 工具
<a name="export-amazon-rds-for-sql-server-tables-to-an-s3-bucket-by-using-aws-dms-tools"></a>

**Amazon Web Services**
+ [AWS Database Migration Service (AWS DMS)](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html) 可帮助您将数据存储迁移到 Amazon Web Services Cloud，或者在云和本地设置的组合之间迁移。
+ [AWS Identity and Access Management (AWS IAM) ](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html)通过控制验证和授权使用您 AWS 资源的用户，帮助您安全地管理对您 AWS 资源的访问。
+ [Amazon Relational Database Service (Amazon RDS)](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html) 可帮助您在 Amazon Web Services Cloud 中设置、操作和扩展关系数据库。
+ [Amazon Simple Storage Service(Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) 是一项基于云的对象存储服务，可帮助您存储、保护和检索任意数量的数据。
+ [AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html) 帮助您将代码中的硬编码凭证（包括密码）替换为对 Secrets Manager 的 API 调用，以便以编程方式检索密钥。

**其他服务**
+ [Microsoft SQL Server Management Studio (SSMS)](https://learn.microsoft.com/en-us/sql/ssms/download-sql-server-management-studio-ssms?view=sql-server-ver16) 是一款用于管理 SQL Server 的工具，包括访问、配置和管理 SQL Server 组件。

## 操作说明
<a name="export-amazon-rds-for-sql-server-tables-to-an-s3-bucket-by-using-aws-dms-epics"></a>

### 配置 Amazon RDS for SQL Server 实例
<a name="configure-the-amazon-rds-for-sql-server-instance"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 创建 Amazon RDS for SQL Server 实例。 | [See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/export-amazon-rds-for-sql-server-tables-to-an-s3-bucket-by-using-aws-dms.html) | 数据库管理员、工程师 DevOps  | 
| 设置实例的凭证。 | [See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/export-amazon-rds-for-sql-server-tables-to-an-s3-bucket-by-using-aws-dms.html) | 数据库管理员、工程师 DevOps  | 
| 配置实例类别、存储、自动扩缩以及可用性。 | [See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/export-amazon-rds-for-sql-server-tables-to-an-s3-bucket-by-using-aws-dms.html) | 数据库管理员、工程师 DevOps  | 
| 指定虚拟私有云（VPC）、子网组、公共访问和安全组。 | 根据需要选择 **VPC**、**数据库子网组**和 **VPC 安全组**创建 Amazon RDS 实例。遵循最佳实践，例如：[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/export-amazon-rds-for-sql-server-tables-to-an-s3-bucket-by-using-aws-dms.html) | 数据库管理员、工程师 DevOps  | 
| 配置监控、备份和维护。 | [See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/export-amazon-rds-for-sql-server-tables-to-an-s3-bucket-by-using-aws-dms.html) | 数据库管理员、工程师 DevOps  | 

### 设置数据库和示例数据
<a name="set-up-the-database-and-example-data"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 创建表和加载示例数据。 | 在新数据库中创建一个表。使用*其他信息*部分中的示例代码将数据加载到表中。 | 数据库管理员、工程师 DevOps  | 

### 设置凭证
<a name="set-up-credentials"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 创建密钥。 | [See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/export-amazon-rds-for-sql-server-tables-to-an-s3-bucket-by-using-aws-dms.html)此密钥将用于 AWS DMS 源端点。 | 数据库管理员、工程师 DevOps  | 

### 在数据库和 S3 存储桶间设置访问权限
<a name="set-up-access-between-the-database-and-the-s3-bucket"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 创建 IAM 角色以便访问 Amazon RDS | [See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/export-amazon-rds-for-sql-server-tables-to-an-s3-bucket-by-using-aws-dms.html) | 数据库管理员、工程师 DevOps  | 

### 创建 S3 存储桶
<a name="create-the-s3-bucket"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 创建 S3 存储桶。 | 要保存来自 Amazon RDS for SQL Server 的数据，请在控制台上选择 **S3**，然后选择**创建存储桶**。确保 S3 存储桶不可公开访问。 | 数据库管理员、工程师 DevOps  | 

### 在 AWS DMS 和 S3 存储桶间设置访问权限
<a name="set-up-access-between-aws-dms-and-the-s3-bucket"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 创建一个用于访问 Athena 和 Amazon S3 的 IAM 角色 | 创建一个 IAM 角色，允许 AWS DMS 列出、获取与放置 S3 存储桶中的对象。 | 数据库管理员、工程师 DevOps  | 

### 配置 AWS DMS
<a name="configure-aws-dms"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 为源创建 AWS DMS 端点。 | [See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/export-amazon-rds-for-sql-server-tables-to-an-s3-bucket-by-using-aws-dms.html) | 数据库管理员、工程师 DevOps  | 
| 为目标创建 AWS DMS 端点。 | 创建**目标端点**，选择 Amazon S3 作为**目标引擎**。<br />提供您之前创建的 IAM 角色的 S3 存储桶名称和文件夹名称。 | 数据库管理员、工程师 DevOps  | 
| 创建 AWS DMS 复制实例。 | 在同一个 VPC、子网和安全组中，创建 AWS DMS 复制实例。有关数据库实例类选项的详细信息，请参阅 [AWS 文档](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_ReplicationInstance.Types.html#CHAP_ReplicationInstance.Types.Deciding)。 | 数据库管理员、工程师 DevOps  | 
| 启动 AWS DMS 迁移任务。 | 要将数据从 Amazon RDS for SQL Server 导出至 S3 存储桶，请创建数据库迁移任务。对于迁移类型，请选择**迁移现有数据**。选择您创建的 AWS DMS 端点和复制实例。 | 数据库管理员、工程师 DevOps  | 

### 将数据导出至 S3 存储桶
<a name="export-the-data-to-the-s3-bucket"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 运行数据库迁移任务。 | 若要导出 SQL Server 表数据，请启动数据库迁移任务。该任务将以 CSV 格式将数据从 Amazon RDS for SQL Server 导出至 S3 存储桶。 | 数据库管理员、工程师 DevOps  | 

### 清理 资源
<a name="clean-up-resources"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 删除资源。 | 为了避免产生额外费用，请使用控制台按以下顺序删除资源：[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/export-amazon-rds-for-sql-server-tables-to-an-s3-bucket-by-using-aws-dms.html) | 数据库管理员、工程师 DevOps  | 

## 相关资源
<a name="export-amazon-rds-for-sql-server-tables-to-an-s3-bucket-by-using-aws-dms-resources"></a>
+ [AWS DMS](https://aws.amazon.com/dms/)
+ [Amazon S3](https://aws.amazon.com/s3/)
+ [Amazon RDS for SQL Server](https://aws.amazon.com/rds/sqlserver/)
+ [Amazon S3 集成](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/oracle-s3-integration.html)

## 附加信息
<a name="export-amazon-rds-for-sql-server-tables-to-an-s3-bucket-by-using-aws-dms-additional"></a>

若要创建数据库和表并加载示例数据，请使用以下代码。

```
--Step1: Database creation in RDS SQL Server
CREATE DATABASE [Test_DB]
 ON  PRIMARY
( NAME = N'Test_DB', FILENAME = N'D:\rdsdbdata\DATA\Test_DB.mdf' , SIZE = 5120KB , FILEGROWTH = 10%)
 LOG ON
( NAME = N'Test_DB_log', FILENAME = N'D:\rdsdbdata\DATA\Test_DB_log.ldf' , SIZE = 1024KB , FILEGROWTH = 10%)
GO

--Step2: Create Table
USE Test_DB
GO
Create Table Test_Table(ID int, Company Varchar(30), Location Varchar(20))

--Step3: Load sample data.
USE Test_DB
GO
Insert into Test_Table values(1,'AnyCompany','India')
Insert into Test_Table values(2,'AnyCompany','USA')
Insert into Test_Table values(3,'AnyCompany','UK')
Insert into Test_Table values(4,'AnyCompany','Hyderabad')
Insert into Test_Table values(5,'AnyCompany','Banglore')
```