Amazon Machine LearningのDatasourceまとめ

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

Amazon Machine Learning(Amazon ML)のDatasourceの作り方は何通りかありますので、まとめてみたいと思います。

Datasourceの比較

概要に書かれているように、Amazon MLサービスはどのDatasourceを利用した場合でも最終的にS3からデータを読み込むようになっています。そのため、RDSやRedshiftを利用した場合でもモデルを作成する際に利用した元データを後で確認することが可能です。

Datasource S3 RDS Redshift
概要 S3にアップロードしたCSVファイルを利用する Data Pipelineを利用してRDSからS3にコピーしたCSVファイルを利用する RedshiftのunloadコマンドでS3にコピーしたCSVファイルを利用する
Bucket Policy 必要(※1) 不要(※2) 不要(※2)
IAM Role 不要 必要 必要
マネジメントコンソールからの作成 不可
Data Schema(※3) 不要 必要 不要
備考 MySQLとAuroraのみ(※4)

※1: Amazon MLサービスがS3にアクセスするためのBucket Policyが必要になります。なお、マネジメントコンソールから操作する際は操作手順の中で自動的に追加することが可能です。
※2: IAM PolicyでS3へのアクセス権限を付与するため不要になります。Amazon MLサービスがS3にアクセスすることは変わらないため、IAM PoilcyもしくはBucket Policyのどちらかでアクセス可能にしておく必要があります。
※3: DatasourceとなるCSVファイルのスキーマ情報です。マネジメントコンソールから作成する際は画面上で設定できますが、AWS CLI(API)経由の場合はスキーマ情報の指定が必須になります。
※4: 公式ドキュメントではMySQLのみ記述されているため、Auroraについては動作はするようですが保証はされていないようです。

詳細な手順については以下のリンクをご参照下さい。RDSやRedshiftを利用する際は、まずはS3の手順を見てから差分を把握していただければと思います。

まとめ

Amazon MLサービスがDatasourceを作成することになるため、サービスの権限周りの準備が必要になる点は理解しにくい点なのかなと思います(私も最初戸惑いました)。あとData Schemaファイルの作成が面倒なので、Redshiftを利用している場合はまずはマネジメントコンソールで作成するというのが手軽かと思います。バッチ化する際に作成済みのDatasourceからAPI経由でData Schemaを取得できます。そういう意味で、RDSについてもマネジメントコンソールに対応してくれるようになるといいなと思います。