2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Opt TechnologiesAdvent Calendar 2019

Day 12

serverless-cloudform の紹介

Last updated at Posted at 2019-12-15

この記事は

Opt Technologies Advent Calendar 2019 の 12日目の記事です。(遅れて投稿)

serverless-cloudform とは

gcchaan/serverless-cloudformServerlessFramework(以下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 の開発を盛り上げたいです!
この記事がどなたかの参考になりましたら幸いです

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?