「技術ブログを支える技術」Esa.ioとLambdaを組み合わせてコンテンツ管理するよ
はじめに
今までこのブログはNetlify CMSを使用して記事を更新していました。 記事のコンテンツをesa.ioで管理するべく、Esaのwebhookを利用してGitHubのリポジトリーを更新するLambdaファンクションを自作しましたのでここで公開できればと思います。
きっかけ
今までNetlify CMSを使って記事を更新していたのですが、
-
スマホ対応していない
-
技術ブログなので普段の技術メモの流動性が低い(esaで書いたメモを移すのに億劫)
こんな理由で前からesaを使いたいと思っていました。
esaをgatsbyに組み込めるライブラリもあったのですが、独自的なスキーマになってしまい既存のレイアウトに手を加える必要があるなどの理由で導入をしていませんでした。
なので効率よく変更分をgit commitしてしまえばいい!と思い作ってみました。
内容
まずアーキテクチャ
今まで

現在

図のようにesa.ioを編集するとLambdaファンクションが起動してGitHub Repositoryを更新してくれます。
導入の仕方
詳細は READMEをどうぞ。大抵のことは書いてあるのでわからなかったらTwitterでDMくださいmm
https://github.com/yoshiki-0428/esa-source-lambda

できないこと
-
(今の所)削除機能はありません。draftやwipを利用して表示をコントロールしてください
-
GitHub以外のリポジトリーにはコミットできません。(GitHub v3 APIを使用しているので)
-
Netlify CMSとの同期はできません。データの流れ的に一方通行になります。
メリット
-
esa.ioに書いた技術メモをそのままブログとして投稿できる!!
- 何よりもこれが一番ですね。技術ブログとしてはめちゃくちゃよいかと
-
esa用のGraphQLスキーマに従ったUIを作成しなくて済む
- OSSにあるgatsby-esa-sourceは独自的なスキーマなので今までのUIがそのまま使えない
-
esaのテンプレートを使えば簡単に記事作成できる
- というかesaのメリットをそのまま使えるので良いですってことですね
-
lambdaなら個人使用であれば(ほぼ)無料!!
- AWS Lambda の無料利用枠には、1 か月ごとに 100 万件の無料リクエスト、および 40 万 GB-秒のコンピューティング時間が、それぞれ含まれます。
- つまり無料ですねw
デメリット
「できないこと」でもいいましたが、デメリットはこんな感じかと。
-
同期ができない
-
GitHubリポジトリを使う必要がある
-
AWSアカウントが必要
ただ一度導入してしまえば、それからずっと使えるので悪くない選択だと思っています
まとめ
今回始めてServerless FWを使用してLambdaのファンクションを作成してみましたが、驚くほど簡単ですね。構成管理もできるのでこれからもなにかひらめいたら作っていこうと思います。

この記事も早速esaからです