他人が公開したLambdaファンクションをServerless Frameworkで使えるようにする
この記事はServerless(2) Advent Calendar 2016 4日目の記事です。 GitHubとかGist見てると、いい感じのLambdaファンクション用コードが公開されていたりしますよね。で、read […]
目次
この記事は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で、周辺環境をコード化しておいたほうが便利かなと思います。