使用来自 Amazon RDS 数据库的数据创建 Amazon ML 数据源 - Amazon Machine Learning

我们不再更新 Amazon Machine Learning 服务,也不再接受新用户使用该服务。本文档可供现有用户使用,但我们不会再对其进行更新。有关更多信息,请参阅什么是 Amazon Machine Learning

使用来自 Amazon RDS 数据库的数据创建 Amazon ML 数据源

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

注意

Amazon ML 仅支持 VPC 中的 MySQL 数据库。

在 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

    • 安全组 ID

  • 指定您创建数据源所用数据的 SQL 查询

  • 用于存储查询结果的 S3 输出位置(存储桶)

  • (可选)数据架构文件的位置

此外,您需要确保使用 CreateDataSourceFromRDS 操作创建 Amazon RDS 数据源的 IAM 用户或角色具有 iam:PassRole 权限。有关更多信息,请参阅使用 IAM 控制对 Amazon ML 资源的访问

RDS 数据库实例标识符

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

MySQL 数据库名称

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

数据库用户凭证

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

AWS Data Pipeline 安全信息

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

EC2 实例代入资源角色以将数据从 Amazon RDS 复制到 Amazon S3。创建此资源角色的最简单方法是使用 DataPipelineDefaultResourceRole 模板,并列出 machinelearning.aws.com 作为可信服务。有关模板的更多信息,请参阅 AWS Data Pipeline 开发人员指南中的设置 IAM 角色

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

{ "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 角色

Amazon RDS 安全信息

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

MySQL SQL 查询

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 输出位置

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

注意

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