

我们不再更新 Amazon Machine Learning 服务，也不再接受新用户使用该服务。本文档可供现有用户使用，但我们不会再对其进行更新。有关更多信息，请参阅[什么是 Amazon Machine Learning](https://docs.aws.amazon.com/machine-learning/latest/dg/what-is-amazon-machine-learning.html)。

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

# 使用来自 Amazon RDS 数据库的数据创建 Amazon ML 数据源
<a name="using-amazon-rds-with-amazon-ml"></a>

Amazon ML 允许您从存储在 Amazon Relational Database Service (Amazon RDS) 内 MySQL 数据库中的数据创建数据源对象。执行此操作时，Amazon ML 创建执行您所指定 SQL 查询的 AWS Data Pipeline 对象，并将输出放在您选择的 S3 存储桶上。Amazon ML 使用该数据来创建数据源。

**注意**  
 Amazon ML 仅支持中的 MySQL 数据库 VPCs。

在 Amazon ML 读取您的输入数据之前，您必须将该数据导出到 Amazon Simple Storage Service (Amazon S3)。您可以设置 Amazon ML 使用 API 为您执行导出。（RDS 限制为 API，并且不可从控制台使用。)

 要让 Amazon ML 连接到 Amazon RDS 中您的 MySQL 数据库并代表您读取数据，您需要提供以下内容：
+ RDS 数据库实例标识符 
+ MySQL 数据库名称 
+ 用于创建、激活和执行数据管道的 AWS Identity and Access Management (IAM) 角色 
+  数据库用户凭证：
  +  用户名 
  +  密码 
+  AWS Data Pipeline 安全信息：
  +  IAM 资源角色 
  +  IAM 服务角色 
+ Amazon RDS 安全信息：
  +  子网 ID 
  +  安全组 IDs 
+  指定您创建数据源所用数据的 SQL 查询 
+  用于存储查询结果的 S3 输出位置（存储桶） 
+  （可选）数据架构文件的位置 

[此外，您需要确保使用 RDS 操作创建 Amazon RDS 数据源的 IAM 用户或角色拥有权限。CreateDataSourceFrom](https://docs.aws.amazon.com/machine-learning/latest/APIReference/API_CreateDataSourceFromRDS.html) `iam:PassRole`有关更多信息，请参阅 [使用 IAM 控制对 Amazon ML 资源的访问](controlling-access-to-amazon-ml-resources-by-using-iam.md)。

**Topics**
+ [RDS 数据库实例标识符](#rds-database-instance-identifier)
+ [MySQL 数据库名称](#mysql-database-name)
+ [数据库用户凭证](#database-user-credentials)
+ [AWS Data Pipeline 安全信息](#aws-data-pipeline-security-information)
+ [Amazon RDS 安全信息](#amazon-rds-security-information)
+ [MySQL SQL 查询](#mysql-sql-query)
+ [S3 输出位置](#s3-output-location-1)

## RDS 数据库实例标识符
<a name="rds-database-instance-identifier"></a>

RDS 数据库实例标识符是您提供的唯一名称，用于标识 Amazon ML 在与 Amazon RDS 交互时应使用的数据库实例。您可以在 Amazon RDS 控制台找到 RDS 数据库实例标识符。

## MySQL 数据库名称
<a name="mysql-database-name"></a>

MySQL 数据库名称指定 RDS 数据库实例中 MySQL 数据库的名称。

## 数据库用户凭证
<a name="database-user-credentials"></a>

要连接到 RDS 数据库实例，您必须提供数据库用户的用户名和密码，该用户必须有足够权限执行您提供的 SQL 查询。

## AWS Data Pipeline 安全信息
<a name="aws-data-pipeline-security-information"></a>

要启用安全 AWS Data Pipeline 访问，您必须提供 IAM 资源角色和 IAM 服务角色的名称。

EC2 实例代入资源角色以将数据从 Amazon RDS 复制到 Amazon S3。创建此资源角色的最简单方法是使用 `DataPipelineDefaultResourceRole` 模板，并列出 **machinelearning.aws.com** 作为可信服务。有关模板的更多信息，请参阅 *AWS Data Pipeline 开发人员指南*中的[设置 IAM 角色](https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-iam-roles.html)。

如果您要创建自己的角色，则该角色必须包含以下内容：

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
    {
        "Effect": "Allow",
        "Principal": {
            "Service": "machinelearning.amazonaws.com"
        },
        "Action": "sts:AssumeRole",
        "Condition": {
            "StringEquals": { "aws:SourceAccount": "{{123456789012}}" },
            "ArnLike": { "aws:SourceArn": "arn:aws:machinelearning:us-east-1:{{123456789012}}:datasource/*" }
        }
    }]
}
```

------

AWS Data Pipeline 代入服务角色以监视将数据从 Amazon RDS 复制到 Amazon S3 的进度。创建此资源角色的最简单方法是使用 `DataPipelineDefaultRole` 模板，并列出 `machinelearning.aws.com` 作为可信服务。有关模板的更多信息，请参阅 *AWS Data Pipeline 开发人员指南*中的[设置 IAM 角色](https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-iam-roles.html)。

## Amazon RDS 安全信息
<a name="amazon-rds-security-information"></a>

要启用安全 Amazon RDS 访问，您需要提供 `VPC Subnet ID` 和 `RDS Security Group IDs`。您还需要为 `Subnet ID` 参数所指向的 VPC 子网设置相应的传入规则，并提供具有此权限的安全组的 ID。

## MySQL SQL 查询
<a name="mysql-sql-query"></a>

 `MySQL SQL Query` 参数指定您要在 MySQL 数据库上执行的 SQL SELECT 查询。查询的结果复制到您指定的 S3 输出位置（存储桶）。

**注意**  
 当输入记录处于随机顺序时（乱序），机器学习技术最适合。您可以使用 `rand()` 函数将您的 MySQL SQL 查询结果轻松地乱序。例如，假设原始查询如下：  
 "SELECT col1, col2, … FROM training\_table"  
 您可以如下所示更新查询来添加随机乱序：  
 "SELECT col1, col2, … FROM training\_table ORDER BY rand()"

## S3 输出位置
<a name="s3-output-location-1"></a>

`S3 Output Location` 参数指定 MySQL SQL 查询结果所输出到的“暂存”Amazon S3 位置的名称。

**注意**  
 您需要确保从 Amazon RDS 导出数据后，Amazon ML 有权从此位置读取数据。有关设置这些权限的信息，请参阅“向 Amazon ML 授予权限以从 Amazon S3 读取数据”。