入門!はじめてのServerless Framework(LambdaからSlackへ定期実行編)

AWS運用自動化サービス「Cloud Automator」

こんにちは。新卒1年目、OJT中の小林です。

サーバーワークスの新卒は、1年間はOJTによる実地研修を行なっており、私も現在マネージドサービス課で元気に修行中です。

先日、研修で、巷で有名なServerless Frameworkをはじめて使い、AWSのLambdaのデプロイをしてみちゃいました。

ですので、修行の一環として、また備忘録も兼ねて、僭越ながらご紹介したいと思います。

ちなみに、Serverless Frameworkの使い方は、新卒2年目の先輩に教えていただきました。尊敬します。

 

今回やったこと

 

今回作ったのは、サーバーワークスの社内で定期開催されるLT大会(いわゆる社内勉強会)のリモート配信先のURLを記載したメッセージをSlackに送信するBotです。

LT大会は毎週水曜日と金曜日の18:30に行われるため、その30分前の18:00に特定のチャンネル(#lt-championship)に送信されるようにしました。

 

Serverless Frameworkを作る手順

まずは、Serverless Frameworkの作成。ランタイムはpython3系で行います。slsとしていますが、serverlessでも動作します。

 

必要な外部ライブラリもアップロードしちゃいます。私の場合は、requestsのライブラリをアップロードしました。

 

早速handler.pyのファイルにコードを書いちゃいます。今回はできるだけコードを変更しないようにするため、認証情報は環境変数(environment variable)としました。具体的にはtokenとchannelです。

 

次は、serverless.ymlのファイルを編集します。前述したように、tokenとchannelは環境変数としてこちらのファイルで情報を持たせます。

また、今回は定期的にメッセージを送信させるため、CloudWatchEventsを使用します。

 

ちなみに、CloudWatchEventsの設定の際、私は最初schedule: cron(0 18 ? * WED,FRI *)としてしまったがために、飛んでこないなーこないなーと待ちぼうけを食らいました。CloudWatchEventsはJSTではなく、UTCですね。

 

そしてデプロイ

デプロイは以下のコマンドを実行するだけ。

メチャ簡単。

本当にできているのか。マネコンよりLambdaを確認。

出来た。

ログも確認。

 

出来た。

Slackも確認。

 

出来た。感動ですね。

 

おわりに

はじめてのServerless Framework。

簡単なプログラムながら、AWSのマネコンからではなく、CLIを使ってLambdaがデプロイできるなんて。

しかしながら、

東京リージョンにデプロイするはずがバージニア北部リージョンにデプロイしていたり、

関数を使わずコードを書いていたら、一行がひたすら長いブサイクなコードを記述していたり、

ツメが甘い私は、まだまだ改善の余地ありです。

 

ただ、Serverless Framework楽しいですね。

AWS運用自動化サービス「Cloud Automator」