Amazon AuroraでAmazon Machine LearningのDatasourceを作ってみた

Amazon Machine Learning

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

前回、RDS for MySQLを使ってAmazon Machine Learning(Amazon ML)のDatasourceを作成する手順を試してみました。そしてAmazon MLのFAQでは「c)MySQL エンジンで稼働しているデータベース1」に対応と書かれているわけです。更にAuroraはMySQL互換なわけでして、それならもしかしたらAuroraをAmazon MLのDatasourceに出来るかも!ということで試してみました。結論から言うとAuroraでも正常にDatasourceを作成することが出来ました!!

前提

まずは前提の確認です。Auroraは作成済みで、前回のRDS for MySQLの場合と同じくtest_dbbankingテーブルが存在している前提です。bankingテーブルはAmazon MLのチュートリアルに載っているbanking.csvに対応しています。また、リージョンはAmazon MLが利用可能なバージニアを利用しています。

項目
リージョン バージニア(us-east-1)
RDSのEngine Aurora
RDSのInstanceIdentifier test-aurora
Auroraのデータベース test_db
Auroraのテーブル banking

bankingテーブルのDDLやbanking.csvのインポート方法はRDS for MySQLの記事をご参照下さい。

事前準備

RDS for MySQLと同じく以下の準備が必要になります。手順についてはRDS for MySQLの記事をご参照下さい。

  • AuroraのセキュリティグループをData Pipelineによって起動されるEC2インスタンスからアクセス可能にしておく
  • Data Pipelineの初回のセットアップ(IAM Roleの準備)
  • S3バケットの作成
  • Amazon ML用のIAM Roleの作成
  • bankingテーブルに対応するData Schemaの作成

RDS for MySQLとの差分

一通り試した範囲ではRDS for MySQLとAuroraの手順に差分はありませんでした。

一点だけ補足する点があるとすればAuroraの場合はCluster Endpointが存在しますが、Data Pipelineからアクセスする際はInstance Endpointを利用します。これはCreateDataSourceFromRDS APIの仕様としてInstanceIdentifierを指定する形になっているためです。恐らくですがInstanceIdentifierを使って内部でDescribeDBInstances APIを実行しInstance Endpointを取得してData PipelineのConnection Stringを指定しているためであると予想しています。

なお、実際にAuroraのDB Cluster IdentifierをCreateDataSourceFromRDS APIのInstanceIdentifierに指定してみたところDatasourceの作成に失敗しました。そのためRDS for MySQLと同様にDB Cluster IdentifierではなくDB Instance Identifierを指定して下さい。

rds-for-aurora-with-amazon-machine-learning1

まとめ

ということでAmazon MLはDatasourceとしてRDS for MySQLだけでなくAuroraも利用可能です。RDS for MySQLからAuroraに移行してもAmazon MLのDatasourceとして利用できるので安心して移行できますね!