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) にエクスポートしておく必要があります。API を使用して Amazon ML がエクスポートを実行するように設定することができます。(RDS は API に限定されており、コンソールからは利用できません)。

Amazon ML が Amazon RDS で MySQL データベースに接続し、ユーザーに代わってデータを読み込むためには、以下を提供する必要があります。

  • RDS DB インスタンス識別子

  • MySQL データベース名

  • データパイプラインの作成、アクティブ化、および実行に使用される AWS Identity and Access Management (IAM) ロール

  • データベースユーザー認証情報

    • [User name] (ユーザー名)

    • [パスワード]

  • AWS Data Pipeline セキュリティ情報

    • IAM リソースロール

    • IAM サービスロール

  • Amazon RDS セキュリティ情報

    • サブネット ID

    • セキュリティグループ ID

  • データソースの作成に使用するデータを指定する SQL クエリ

  • クエリの結果を格納するために使用される S3 出力の場所 (バケット)

  • (オプション) データスキーマファイルの場所

さらに、CreateDataSourceFromRDS オペレーションを使用して Amazon RDS データソースを作成する IAM ユーザーまたはロールが iam:PassRole 権限を持っていることを確認する必要があります。詳細については、「IAM による Amazon ML リソースへのアクセスの制御」を参照してください。

RDS データベースインスタンス識別子

RDS DB インスタンス識別子は、Amazon RDS を操作するときに Amazon ML が使用するデータベースインスタンスを識別する固有の名前です。RDS DB インスタンス識別子は、Amazon RDS コンソールで確認できます。

MySQL データベース名

MySQL データベース名は、RDS DB インスタンス内の MySQL データベースの名前を指定します。

データベースユーザー認証情報

RDS DB インスタンスに接続するには、提供する 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 S3 からデータを読み込むための Amazon ML 権限の付与を参照してください。