Advent CalendarAWS

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

ブックマークや限定記事(予定)など

WP Kyotoサポーター募集中

WordPressやフロントエンドアプリのホスティング、Algolia・AWSなどのサービス利用料を支援する「WP Kyotoサポーター」を募集しています。
月額または年額の有料プランを契約すると、ブックマーク機能などのサポーター限定機能がご利用いただけます。

14日間のトライアルも用意しておりますので、「このサイトよく見るな」という方はぜひご検討ください。

広告ここから
広告ここまで

Related Category posts