私は時々、
を使って何かしらのスクリプトを個人開発する事があり、その際、毎回の事ながら、
さて AWS Lambda に deployment をするためのツールは何を使おう?
と、困る事がよく有りました。
それで、
何か良いツールチェインは無いものか……
と、毎回探していたんですが最近になって、
と言う良さげなツールを awesome-serverless 経由で見つけたので、 今日はその辺りを紹介したいと思います。
Architect とは?
これは一言で言えば、
AWS のエコシステムに特化した、JAMStack 用の Toolchain
で、もう少し詳細に言うと、
AWS Lambda の Node.js Runtime をベースに、AWS の Middleware に特化した開発補助ツール
と言えます。
そして、この Architect を使うと、
- AWS Lambda + AWS S3 + Amazon DynamoDB + Amazon API Gateway + ...etc
と言ったような構成で開発する時に 面倒な AWS 固有のアレコレを一挙に引き受けてもらえる ので、 本来の開発すべき事柄に集中する事が出来る様になり、それ故に私は今コレを気に入って使っています。
なぜ私は Architect を使うのか
基本的には、
AWS の Serverless 開発で AWS 周りの面倒なことを全部押し付けたい
と言う、ワリと都合の良い理由がメインです。また、その他にも、
- 個人用 Slack のちょっとしたスクリプトを AWS Lamda で……とか
- ちょっとだけサーバ処理が必要なスクリプトを作る……とか
- あるいは、本格的な開発でもガッツリとコストを下げるために……とか
そういった理由でも、 Architect を使っていたりします。
また、上記の理由の他にも、
- コードの配置位置に、程良い制約が有る
- Architect 固有で覚えなければならない事が少ない
- JAMStack を deploy するための便利なコマンド類もキチンと揃っている
と言った様な特長も、私が Architect を気に入っている理由の中に入っています。
Architect が向く事・向かない事
先にも書いた通り、 Architect は AWS の JAMStack へ特化した構成になっていて、 それ故に下記の様な制約も当然発生して来ます:
- AWS Lambda の Node.js 以外の Runtime に対応していない
- Architect がすべての AWS Middleware の面倒を見てくれる訳ではない
- AWS Lambda の Node.js Runtime しばりなので、それ故の制約も当然ある
とは言え AWS Lambda が関わらない部分では他の JavaScript ライブラリと当然の様に組み合わせられるので、 React や Vue と言った様なライブラリを組み合わせる事も可能です。
また Architect が管理する部分以外では既存の AWS 用ライブラリが使えるので、 そう言った意味でもあんまり不自由さは無いんじゃないかな、と個人的には思っています。
Architect の始め方
Architect の Getting Started については、
を閲覧した方が圧倒的に理解が早いのですが、一応ここでも紹介しておくと、 Architect では:
$ cd $WORKDIR
$ npm install @architect/architect
$ cat <<EOF >.arc
> @app
> testapp
>
> @http
> get /
> EOF
$ ARC_LOCAL=1 npx create
という様な手順でボイラープレートが生成し、その後は生成されたボイラープレートに従って、 色々と実装して行くという形になると思います。
ただ注意点として Architect では npx
を利用して各種スクリプトを実行するので、
@architect/architect
を グローバルインストールする必要は有りません 。
と言うか、グローバルにインストールすると他の toolchain と実行ファイル名が被ると思うので、 基本的にはその辺り行わない様にしておいた方が良いです。
以上
と言う事で、今回の話は以上です。
今回書いた様に Architect は AWS Lambda の Node.js Runtime に特化しているで、 他の Runtime 等を扱いたいという場合においては、
と言った辺りを使うと良いかもしれません。
とは言え JAMStack で AWS Lamda を用いるのであれば、 Architect は複雑な事を簡単にしてくれる良いツールだと個人的には思っているので、
一度、_Architect_ を試してみるのも良いんじゃない?
と個人的には思っています。はい。