Amazon Redshiftとデータ連携を行う各種サービスについて整理してみた

2016.07.01

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

AWSでビッグデータ分析環境を整える際、まずはAmazon Redshiftにデータを集約するところを一つの目標にするところから始める事になるかと思いますが、現在ではAWSサービス間の連携も増え、またRedshiftの機能追加・改善も相俟って実に様々な方法が存在しています。

そこで当エントリでは、現時点で様々用意されている『Amazon Redshiftへのデータ投入・連携方法』そして『Amazon Redshiftから連携可能なサービス』の情報について一度整理を行ってみたいと思います。

目次

to Amazon Redshift (Amazon Redshiftへのデータ連携)

まず最初は『Amazon Redshiftへのデータ連携』について。fromがRedshift以外のサービス、toがRedshiftとなるケースです。

awsicon-aws-iot AWS IoT

AWS IoTからAmaozn Redshiftへの直接の連携はありませんが、LambdaやKinesisを仲介する事でAmazon Redshiftへのデータ連携を行う事が可能です。

awsicon-amazon-cloudfront Amazon CloudFront

CloudFront自体、Amazon Redshiftと直接連携する様な機能は有していません。下記エントリの様な形で生成されたログをAmazon Redshiftで閲覧・解析する事は可能ですので、必要に応じて連携を実践してみると良いのではないでしょうか。

awsicon-aws-codecommit AWS CodeCommit

AWS CodeCommitから直接データ連携を行うという機能はありませんが、以下エントリではAWS CodeCommitとAmazon Redshiftを連携させた興味深い内容が展開されています。

aws-icon-cognito Amazon Cognito

Amazon Cognito Streamsを使う事で、Kinesisとの連携が可能となり、Redshiftにデータを流し込む事も可能となります。(3つ目のリンクはサンプルコード)

aws-icon-data-pipeline AWS Data Pipeline

上記の定義を確認して見るとOracle/MySQL/PostgreSQL/SQL Serverに関する記述がある事から、RDS全般Redshiftへのコピーが出来そうです。

また、以下テンプレートを使う事でDynamoDBからRedshiftへのコピーも可能となっています。

aws-icon-dms Amazon Database Migration Service

Amazon Database Migration Service(DMS)ではデータ移行先にAmazon Redshiftを指定する事が可能となっています。

移行元となるデータベースについては以下FAQに記載がまとまっていましたので載せておきます。

サポートされるデータベースソースには、(1) Oracle、(2) SQL Server、(3) MySQL、(4) Amazon Aurora、(5) PostgreSQL が含まれます。Amazon Aurora を除き、すべてのソースはオンプレミス、EC2、および RDS でサポートされます。Amazon Aurora は RDS でのみ利用できます。

aws-icon-dynamodb DynamoDB

DynamoDBからAmazon RedshiftへのデータコピーはAmazon RedshiftのCOPYコマンドで連携がサポートされています。

aws-icon-ec2 Amazon EC2

RedshiftへCOPYする際のデータの配置場所としてはS3が最も利用頻度が高いものとなりますが、他にも幾つか指定する事が可能です。上記DynamoDBもそのうちの1つですが、EC2インスタンス(やSSHアクセスが可能なリモートホスト)等を指定する事も可能になっています。

aws-icon-emr Amazon EMR

DynamoDBと同じように、EMRもCOPYコマンドに対応しています。

aws-icon-kinesis Amazon Kinesis

Amazon Kinesis Firehoseを使う事でKinesis経由でのRedshiftへのデータ連携がとても便利になりました。

また、KCLを使う事でRedshiftとのデータ連携を行う事も可能です。

aws-icon-lambda AWS Lambda

AWS LambdaはRedshiftと直接連携するという訳ではありませんが、ライブラリを活用する事でLambdaに経由されたデータをRedshiftにCOPYするという経路でデータを移動させる事は可能です。(※Lambdaのタイムアウトに収まる形のボリューム感でデータを収める必要があります)

aws-icon-ma Amazon Mobile Analytics

Amazon Mobile Analyticsでは、データをRedshiftに連携するサービスが有効になっています。

aws-icon-rds Amazon RDS

RDSとRedshiftを直接経由してデータ移行する術は提供されていませんが、AWS Data PipelineまたはDMSを使う事で両者間のデータ移動をさせることは可能です。

aws-icon-s3 Amazon S3

S3からのRedshiftへのデータ移行は数あるデータ投入方法の中でも最もメジャーな手法です。詳細は以下。

その他AWSサービス以外

AWSサービス以外のツールやプロダクトからRedshiftへデータを転送・移動させるものについては、fluentdやEmbulk等が有名です。以下にはプロダクトのgithubページのみ記載しておきますが、RedshiftとのAND検索で調べてみると実例は沢山出て来ますので、これらのプロダクトを使ってRedshiftへデータを転送させたいという場合はご検討してみてください。

from Amazon Redshift (Amazon Redshiftからのデータ連携)

次いでこちらは『Amazon Redshiftからのデータ連携』について。fromがRedshift、toがRedshift以外のサービスとなるケースです。

aws-icon-aml Amazon Machine Learning

Amazon Machine Learningでは、Redshiftを学習の際のデータソースとして利用する事が出来ます。

aws-icon-quicksight Amazon QuickSight

こちらのサービスはまだ正式リリースとはなっていませんが、FAQの記載等にはAmazon Redshiftのデータをデータソースとして可視化を作成出来る旨が記載されています。QuickSightの正式リリースがとても楽しみですね!

aws-icon-rds-pgsql Amazon RDS(PostgreSQL)

こちらについては、正確には『データの移動』という訳では無いのですが、PostgreSQLの機能を使ってRedshiftとのデータ連携が行えるという事で挙げてみました。

aws-icon-s3 Amazon S3

S3からRedshiftへデータを投入する場合はCOPYコマンドを使いますが、逆のパターンも可能です。RedshiftからS3にデータを吐き出すには、UNLOADというコマンドを使います。

まとめ

以上、AWSサービスからRedshift/RedshiftからAWSサービスへとデータを連携する際の組み合わせについての情報整理・紹介エントリでした。こうしてみると実に多彩な経路が用意されている形になっていますね。目的や用途に応じてこれらサービスを使い分け、スムーズ且つ効率的なDWHの構築・分析作業の促進に繋げて行きたいですね!こちらからは以上です。