Alteryxから踏み台インスタンス経由でRDS上のMySQLに接続する

Alteryxから踏み台インスタンス経由でRDSに接続する方法をご紹介します
2019.04.10

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

Alteryxは様々なデータベースに接続できますが、

「セキュリティの都合上踏み台サーバーの向こうにDBがある」 「どうやってAlteryxから接続させるのかわからない…」 「ODBC接続しようとしたらCan't Connect to MySQL serverエラーが出た…」

というようなケースもあるかと思います。そうなんです、踏み台インスタンス経由でRDSへ接続するにはちょっぴり工夫が必要なんです。

本エントリでは、そんなbastion(踏み台)インスタンスを通してのデータベース接続が求められる環境下で、Alteryxを使って接続する方法をご紹介します。

もくじ

必要なツール・事前準備

本エントリで用いるツール及びバージョンは以下の通りです。

  • Alteryx Designer 2019.1
  • Tera Term Version 4.102

また、本エントリで検証を行うためのAWS環境及び情報は以下の通りです。

  • bastion(踏み台インスタンス)となるEC2のグローバルIPアドレス もしくは ホスト名
  • bastion(踏み台インスタンス)となるEC2のユーザー名(Amazon Linuxの場合は ec2-user
  • bastion(踏み台インスタンス)となるEC2の秘密鍵
  • 接続先RDSのエンドポイント
  • 接続先RDSのパスワード

実施したい操作は、

  • Alteryx Desingerがインストールされた環境からポートフォワーディングできるように設定
  • MySQLへODBC接続

上記の2本立てです。順を追って実施していきましょう!

ポートフォワーディング

EC2へSSH接続する

まずは踏み台インスタンスとなるEC2へSSH接続します。2019年4月現在、AlteryxはWindows環境でのみ使用可能ですのでWindows OSで使用可能なSSHのクライアントソフトが必要となります。今回はTera Termを使用します。

Tera Termを起動すると、接続先についての設定画面が出ますので以下の通り入力します。

  • [ホスト]:EC2インスタンスのパブリックIPアドレス、もしくはDNS
  • [TCPポート]:EC2インスタンスのポート

はじめて接続するEC2インスタンスでは以下のような警告がでます。[続行]でEC2インスタンスに接続します。

接続が完了すると、以下のような認証画面が表示されます。

  • [ユーザ名]:EC2インスタンスのユーザー名(Amazon Linuxの場合は ec2-user
  • [パスフレーズ]: デフォルトのキーを使用している場合は空欄
  • [RSA/DSA/ECDSA/ED25519鍵を使う]:チェックしてEC2の秘密鍵をフォルダから選択

接続が完了すると以下のような画面が出ます。これでEC2へSSH接続できました!

SSH転送

踏み台インスタンス(EC2)へSSH接続できましたので、今度はEC2を経由してRDSへ接続するためのポートフォワーディングの設定を行います。Tera Termではメニューバーの[設定][SSH転送]から設定可能です。

以下の通り入力します。

  • [ローカルのポート]: 3306(MySQLの場合)
  • [リモート側ホスト]: RDSのエンドポイント
  • [ポート]: 3306(MySQLの場合)

以下の画面が表示され、[OK]を押すとSSH転送の設定は完了です。

RDSへの接続をテスト

ここまでの設定でRDS上のMySQLへ接続可能な状態となりました。念の為本当に接続できるかどうか確認してみましょう。以下のmysqlコマンドをTera Termで入力します。

mysql -u <RDSユーザー名> -p -h <RDSエンドポイント>

RDSのパスワードを入力し、接続に成功すると以下のような黄色のメッセージが出ます。なんとなく達成感がありますね。

MySQLのODBC接続設定を追加

AlteryxからMySQLに接続するにはODBCを利用します。

[追加]からMySQLのドライバを選択します。今回はMySQL ODBC 8.0 Unicode Driverを使用していますが、格納されているデータの文字コードに合わせて適切なドライバを選択してください。MySQL Connectorが立ち上がったら以下の通りに入力します。

  • [Data Source Name]:任意の名前を設定
  • [TCP/IP Server]localhostを指定し、MySQLのポート番号3306を入力
  • [User]:RDSのマスターユーザー名
  • [Password]:RDSのパスワード
  • [Database]:DB名

これで準備完了です!

Alteryx Designerで接続

ここまでくればAlteryx Designerから接続可能な状態です。方法は以下エントリで紹介されている、踏み台インスタンスを経由しないMySQLへの接続と同様です。

Input Data Tool(データ入力ツール)

Input Data Tool(データ入力ツール)の場合は、[Other Databases][ODBC]を選択します。

前項で設定したODBCをドロップダウンリストより選択します。

Visual Query Builderが立ち上がりますので、接続したいDBを指定します。

ワークフローを実行すると、MySQLへ接続できました!

Connect In-DB Tool(In-DB接続ツール)

Connect In-DB Tool(In-DB接続ツール)の場合、[Manage Connections]から設定します。

[Data Source]のドロップダウンリストからMySQLを選択し、[Connections]のNewボタンをクリックします。

[Connection String]New Database Connectionを選択します。

Input Dara Toolと同様ODBC Connectionウィンドウが立ち上がるので、ドロップダウンリストからMySQLのODBCを選択します。

[Connection Name]に任意の名前を入力し、[OK]をクリックします。

Input Dara Toolと同様Visual Query Builderが立ち上がりますので、接続したいDBを指定します。

ワークフローを実行すると、MySQLに接続できました!

さいごに

踏み台インスタンスへのポートフォワーディングを利用してAlteryx DesignerからRDSへ接続する方法のご紹介でした。Can't Connect to MySQL erverエラーに悩まされた時や、似た構成のRDSへの接続が必要になった時にご紹介した方法を思い出していただけると幸いです。

余談ですが、本エントリを書くにあたってそもそもEC2とRDSの作成から手こずり、社内のAWSプロフェッショナルに手取り足取り優しく教えてもらいました。助けを求めれば答えてくれる救世主がたくさんいる弊社にご興味のある方、ご応募お待ちしております!

参考資料

Alteryxの導入なら、クラスメソッドにおまかせください

日本初のAlteryxビジネスパートナーであるクラスメソッドが、Alteryxの導入から活用方法までサポートします。14日間の無料トライアルも実施中ですので、お気軽にご相談ください。

alteryx_960x400