LoginSignup
3
2

More than 5 years have passed since last update.

AWS lambda から MSSQLのRDSインスタンスに接続する(python)

Last updated at Posted at 2016-08-26

はじめに

SQL ServerのRDSインスタンスにlambdaから接続する方法です。
Webでは情報が欠落してたり、手順が複雑であったりするので、これをもう少し簡単にセットアップできる手順です。

前提条件

lambdaファンクションは、pythonで書きます。
ライブラリには、pymssql を使います。

レシピ

環境作り

1. LinuxのEC2インスタンスを作る

無料利用枠の分でOKです。
私が使ったのは下のインスタンスです。

Amazon Linux AMI 2016.03.3 (HVM), SSD Volume Type - ami-374db956

lambdaのベースはご存知の通り、Amazon Linux です。 EC2上で環境をセットアップして必要なファイルを収集します。

2.  必要なライブラリをインストールする

MSSQLには、つまるところODBCで接続します。
linuxでODBCを利用するために1.で作成したインスタンスに以下のライブラリをインストールします。

  • unixODBC
  • unixODBC-devel
  • freetds
  • freetds-devel
  • pymssql

利用したいpymssqlがfreetdsに依存しています。
freetdsはunixODBCに依存してるので、これらが必要になります。

以下の要領でインストールします。

$> sudo yum install unixODBC, unixODBC-devel, freetds, freetds-devel
$> pip install pymssql

3. pymssql で接続を確認する

インストールが済んだので、一旦接続を確認します。
コンソールで確認する場合の例を示します。

$> python
$> import pymssql
$> server = "hostname of SQL Server(RDS)"
$> user = "your username"
$> password = "your password"
$> dbname = "your dbname"
$> connection = pymssql.connect(server, user, password, dbname)
$> cursor = cunnection.cursor()
$> cursor.execute("select @@VERSION")
$> cursor.fetchone()

接続したRDSのバージョンが表示されればOKです。

必要なファイルを抽出する

lambdaにアップロードするファイルを抽出します。

ディレクトリ 1
/usr/local/lib64/python2.7/site-packages
ファイル
_mssql.so pymssql-2.1.3.egg-info pymssql.so
pymssqlをビルドしたときにできるファイル群です。

ディレクトリ 2
/usr/lib64
ファイル 2
libsybdb.so.5.0.0
[重要] libsybdb.so.5.0.0は、libsybdb.so.5 にリネームします。

これらのファイルとlambdaファンクションをzipに固めて、lambdaにアップすればOKです。

mac os(Sierra)のpymssql インストール(ローカル環境の構築)

brew install homebrew/versions/freetds091
pip install pymssql

ローカルの環境変数をwrapしてくれるので、pytestの時に重宝する。
pytest-env

これで、lambdaからMS SQLServerインスタンスへの接続も怖く無いですねw

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2