こんにちは! JQです。
前回は『Amazon Redshift編~RubySDKパート②~』ということで、RedshiftをRubySDKから削除しました。
今回は『Amazon Redshift編~RubySDKパート③~』と題して、RubyからRedshiftを操作してみたいと思います。
DBIとdbd-pgのインストール
今回はDBIとdbd-pgを利用してRedshiftに接続をしてみたいと思います。
※Redshiftの作成には以前のレシピを参照下さい。
Postgresqlモジュールのインストール
1. まずDBIとdbd-pgを利用する為に必要な、postgresqlとpostgresql-develをインストールします。
1 2 |
#yum -y install postgresql #yum -y install postgresql-devel |
DBIとdbd-pgのインストール
2. 続いてDBIとdbd-pgのインストールを行います。
1 2 |
#gem install dbi #gem install dbd-pg |
接続情報の取得
3. 次に下記スクリプトを利用してRedshiftの接続情報を取得してみます。
※cluster_identifierを必要に応じて変更して下さい。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
#!/usr/bin/env ruby require 'rubygems' require 'aws-sdk' cluster_identifier = "dev" redshift = AWS:: Redshift.new( :redshift_endpoint => "redshift.ap-northeast-1.amazonaws.com", :access_key_id => 'xxxxxxxxxxxx', :secret_access_key => 'xxxxxxxxxxxxxxx' ) client = redshift.client cluster = client.describe_clusters( :cluster_identifier => cluster_identifier ).clusters[0] dbuser=cluster.master_username dburl="DBI:Pg:dbname=#{cluster.db_name};host=#{cluster.endpoint.address};port=#{cluster.endpoint.port}" puts dbuser puts dburl |
Redshiftに接続
4. それでは3番の取得スクリプトを利用して実際にRedshiftに接続してみましょう!
※cluster_identifier とpasswordは環境に合わせて変更して下さい。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
#!/usr/bin/env ruby require 'rubygems' require 'aws-sdk' require "dbi" cluster_identifier = "dev" redshift = AWS:: Redshift.new( :redshift_endpoint => "redshift.ap-northeast-1.amazonaws.com", :access_key_id => 'xxxxxxxxxxxx', :secret_access_key => 'xxxxxxxxxxxxxxx' ) client = redshift.client cluster = client.describe_clusters( :cluster_identifier => cluster_identifier ).clusters[0] dbuser=cluster.master_username dburl="DBI:Pg:dbname=#{cluster.db_name};host=#{cluster.endpoint.address};port=#{cluster.endpoint.port}" dbpassword = "パスワード" begin db=DBI.connect(dburl,dbuser,dbpassword) row = db.select_one( "SELECT VERSION()" ) puts row[0] rescue DBI::DatabaseError => e puts "rescue" puts "Error code: #{e.err}" puts "Error message: #{e.errstr}" end db.disconnect |
接続が成功すればバージョン情報が表示されると思います!
いかがでしたでしょうか?
次回は『Amazon Redshift編~Unloadパート①~』ということで、RedshiftからS3にデータを出力してみたいと思います。
お楽しみに!
——————————————————————————————————
ナレコムクラウドのFacebookに『いいね!』をクリックして頂くと
最新のお役立ちレシピが配信されます★
┏━━━━━━━━━━━━━┓
┃ナレコムクラウド Facebook┃
┗━━━━━━━━━━━━━┛
——————————————————————————————————