PythonでAWS Lambdaを用いてMySQLを利用する方法

AWS LambdaとPython

この記事では、AWS LambdaとPythonおよびPythonライブラリの一つであるpymysqlについて説明した後、これらのツールの利用方法とAWS Lambda上でpymysqlを利用する方法について紹介していきます。

AWS Lambdaとは

AWS LambdaとはAWSの提供するクラウド上でプログラムの実行を可能にするクラウドコンピューティングサービスです。プログラムを実行するためには、実行するのに必要なソフトウェアやサーバーなどをそろえた実行環境を用意する必要があります。AWS Lambdaを用いれば、プログラムの実行に際してこういった実行環境を用意する必要がなくなりサーバーレスな環境でプログラムの実行を行うことができます。ファイルのアップロードやユーザーが用意したアプリケーションの実行など、様々なイベントが起きたときにAWS Lambda側で用意したコード、Lambda関数を実行するように設定できます。

よくあるAWS Lambdaの利用例としては、画像ファイルがアップロードされた際にリサイズを行うようにLambda関数を設定する、という使い方があります。AWSの提供するサービスの1つであるSimple Storage Serviceに画像をアップロードされたとき、AWS LambdaがLambda関数を用いて画像のリサイズ処理を行い、Webサイトなどに適した画像に変換する仕組みを構成することが出来ます。他にもAWS Lambdaを用いればストリーミングデータの処理やアクセス数の増減の激しいWebアプリケーションやサーバーの監視、バックエンドの処理など、AWS Lambdaを用いて出来ることは多岐にわたります。例えば、普段はアクセス数がそこまでではないものの繁忙期や季節などの外的要因によってアクセスが一時的に集中してしまうようなWebサイト、Webアプリケーションにおいてその時期のみに合わせてサーバーの増強を行うのはかかるコストや手間を考えるとあまり現実的ではありません。AWS Lambdaはアクセスなどのリクエストによって動作するため、こういった激しいアクセス数の増減にも柔軟に対応することが出来ます。こういった場合において自前でサーバーを設置するよりもはるかに低コストで安定した環境を構築できることもAWS Lambdaの大きな強みです。

しかし、AWS Lambdaを用いる上で注意しなければいけない点もあります。先述したように、アクセスによってAWS Lambdaは動作するためアクセス数が予想できない状況ではあらかじめどれくらいのコストがかかるのかを算出しにくい、ということやAWS Lambdaはあくまでもサーバーレスな環境でプログラムを実行するためのツールなのでAWS Lambdaだけではあまり意味を成さない点があります。他には、メモリや処理時間に制限があるため確保できるメモリ容量を超える処理が想定される場合や処理時間が900秒を超えるような処理が実行される場合には利用できません。Javaなどのプログラミング言語をAWS上で用いる場合には、Java Virtual Machineの初期化などに余分に時間がかかることがあるため、高速なレスポンスを求める場合には別のプログラミング言語での実行を考える必要があります。AWS Lambdaはとても有用なツールではありますが、こういった点にも注意した上で導入を検討しなければいけません。

Pythonとpymysql

Pythonとは

Pythonはシンプルかつ効率よく書けることを目指しており、とてもシンプルな文法をしていることと専門性の高いライブラリが豊富に用意されていることが特徴のプログラミング言語です。Pythonには現状数万以上のライブラリが用意されており、数値計算や統計処理、画像処理と音声処理、Web開発、データベ-スなどライブラリを用いることで作りたいプログラムを簡単に作成出来ます。Pythonがよく利用されている例としては、AIなどの機械学習やIoTといったビッグデータを扱う場での利用が顕著です。

pymysqlとは

pymysqlとはMySQLデータベースにアクセスしSQL操作を可能にするデータベースコネクタの1つであり、PythonプログラムがMySQLサーバーと通信できるようにするライブラリです。pymysql以外にも通信を行うための方法やライブラリは存在しますが、pymysqlが一番SQLの書き方や使い方がシンプルで使いやすい、という評価を受けています。

AWS Lambdaとpymysqlを用いてデータベースにアクセス

AWS Lambdaとpymysqlを用いてデータベースにアクセスすることが可能になります。AWS LambdaのAPIを用いてPythonのデフォルトパッケージを作成しPipコマンドを用いて依存関係のインストールを行います。その後、デフォルトパッケージ内で処理を記載したメイン関数のファイルと各種設定用の設定ファイルを用意しておきます。後はAWS Lambdaにアップロードを行うことでpymysqlを経由したMySQLデータベースのインスタンスへの接続が可能になります。

終わりに

ここまでお読みいただきありがとうございます。いかがだったでしょうか。この記事ではAWS Lambdaとpymysqlの双方を用いてAWS上のMySQLインスタンスに接続する方法を紹介させていただきました。データベースの利用方法やシステムの構成によっては非常に強みを持つやり方です。AWSとPython、両方を用いたシステムの構築をお考えの際には、是非ご一考ください。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次の記事

CloudEndureによる災害対策