この記事は
Opt Technologies Advent Calendar 2019 の 12日目の記事です。(遅れて投稿)
serverless-cloudform とは
gcchaan/serverless-cloudform は ServerlessFramework(以下SLS) のプラグインです。
利用用途は bright/cloudform で SLS の CloudFormation(以下CFn) テンプレートを定義することです。
メリットには serverless.yml から CFn テンプレートを分離できること、cloudform を利用できることなどがあります。
cloudform とは
cloudform は TypeScript によって CFn テンプレートの定義を可能にするパッケージです。
後発の AWS CDK では 抽象化や diff、deploy コマンドがありますが、cloudform は素直に TypeScript で記述した内容を CFn テンプレートにビルドするのみです。
serverless-framework の利用シーン
私ごとですが今年は簡単なピアボーナスアプリと広告配信サービスを作りました。
両者とも Slack をインターフェースにしているツールなので Lambda がちょうどよかったです。
このようなちょっとした API の開発の際に SLS は便利ですね。もちろん AWS SAM や chalice もよいですが、SLS も AWS の機能アップデートへの追従も早く、プラグインが充実していて、自力での拡張も簡単で気に入っています。
ところで、ちょっとした API の開発では Lambda と連携して S3 や DynamoDB などを使いたくなることも多いです。かつそのリソースも SLS で一緒に管理できると便利な時もあります。もちろん複数サービスから利用されるリソースであるとか、S3 や DB、Cognito は別途 CDK などで独立して管理したいところですが、そこまでしなくてもよい場合では serverless.yml の Resouces に書くかなと思います。
serverless-cloudform では SLS の package 時に ユーザーが定義した ts ファイルを直接 CFn テンプレートとしてマージします。
cloudform を使うことで、シンタックスのミスに気づきにくいようなこともなく、属性や値が型によって安全に記述できますし、ステージによって条件分岐するとか、アプリケーションコードと同じ設定値の変数を使うとか、ファイルを分けることも比較的簡単にできるのでとても便利です。
serverless-cloudform を使った例
詳細の使い方は説明するようなものでもないため割愛します。
代わりにといってはなんですが参考用にサンプルコードを作成しました。
serverless-dynamodb-local にも対応しています!
gcchaan-sandbox/counter-app
いわゆるカウンターです。
gcchaan-sandbox/counter-app
gcchaan-sandbox/lambda-api-serverless
作業中のリポジトリですが、lambda-api を使った CRUD のコードもあります。
gcchaan-sandbox/lambda-api-serverless
おわりに
Serverless の開発を盛り上げたいです!
この記事がどなたかの参考になりましたら幸いです