他人が公開したLambdaファンクションをServerless Frameworkで使えるようにする

この記事はServerless(2) Advent Calendar 2016 4日目の記事です。

GitHubとかGist見てると、いい感じのLambdaファンクション用コードが公開されていたりしますよね。で、readmeとか見ると「IAMはこういうふうに設定してね」とか「API Gatewayはこんな感じでやるといいよ」みたいな手順が載ってたりします。まぁ「そこ手作業かよ」と思っちゃうわけですよね。はい。

ということでServerless Framework使ってないLambdaファンクションをServerless Frameworkでデプロイさせてみます。

今回のターゲット

AWS Lambda function to export Amazon RDS MySQL Query Logs to S3というRDSのMySQLクエリログをS3へ送ってくれるファンクションを使います。pyファイルとreadmeが1つずつの非常にシンプルな構成です。

できたもの

で、作ったのがこれです。
Serverless Framework AWS Lambda function to export Amazon RDS MySQL Query Logs to S3

はい。git submodule使っただけです。

作り方

まずServerless Frameworkでプロジェクトを作ります。

$ serverless create --template YOUR_ENV

gitでコミットしておきましょう。

$ git add .
$ git commit - m "init"

その後Serverless Framework化したいリポジトリをgit submoduleで追加します。

$ git submodule add 

あとはserverless.ymlで利用したいLambdaファンクションのコードを指定してやればOKです。
https://github.com/hideokamoto/rdslogs_to_s3/blob/master/serverless.yml#L72

Serverless Framework化するメリット

直接デプロイではなくあえてServerless Frameworkを介するメリットですが、やはり「Lambda以外のリソースを効率的に作りたい」というのが一番かなと思います。
readme見ながら手作業ですと、もしかするとどこかで入力ミスや作業忘れが出ているかもしれませんし、今回の例で言えば複数のRDSからログを取りたい場合に毎回設定するのは正直面倒です。
であればCloudFormationライクにIAMやS3・API Gatewayなどの設定まで行えるServerless Frameworkで、周辺環境をコード化しておいたほうが便利かなと思います。

Follow me!

Okamoto Hidetaka
デジタルキューブのインフラエンジニア。勉強会に和太鼓の練習から直行することが多く「太鼓の人」とかよばれてます。 思いつきで公式ディレクトリにテーマやプラグインをアップしたりテーマレビューやったりしています。 AWS / WordPress / LinkedOpenData周りで活動していて、APIをどうこうして何か作るというのが多いです。 ひとこと
mautic is open source marketing automation