他人が公開した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で、周辺環境をコード化しておいたほうが便利かなと思います。

    広告ここから
    広告ここまで
    Home
    Search
    Bookmark