そこに至るまでの経緯のポエムおよび、Serverlessの使い方の簡単な説明です。Gatewayで設定します。Gatewayを手動で管理するのにはすぐに限界が来て、何かしらの管理ツールを使う必要があるなと調べ始めました。SAM」「Swagger」などの候補が上がってきたのですが、その過程で、「GraphQL」なるキーワードを知ってしまいました。APIに取り組むモチベーションが一気に冷めてしまいました。GCPやAzureも似たようなFunctionやAPIサービスを提供しているのですが、それぞれ仕組みはバラバラで、それらをまとめる万能ツールは難しいのかなとも感じていました。汎用性は無くてもいいので、できるだけ学習コストが低く、簡単に使えるものがいいなぁと思い始めました。試してみるそんな中、CloudFormationなら、その知識はAWS全般にも使えるのでいいかなぁと思い、やってみたのですが、記事に書いたとおり痛い目にあいました。次に「Serverless」を試してみたのですが、使いやすくて結局そのまま使い続けることになりました。Serverlessのメリット必要最小限の記述でよしなに動いてくれます。Gatewayの機能はほぼ網羅しています。Serverlessでカバー仕切れない機能は、CloudFormationで補うことができます。未設定部分はServerlessの方でデフォルトの設定を補ってくれるので、設定は少ない記述で済み分かりやすかったです。serverlessとnpmを使って行います。次に、設定ファイル「serverless.yml」を記述し、プログラムが置かれているディレクトリに置きます。Gatewayでパスが作られ、パスとLambdaの紐づけを行ってくれます。deployとすると更新されます。Gatewayは下記のようになります。ここでは、開発と本番でAPIを分けられるようにしてみます。Gatewayがアップされます。Serverlessには開発・本番等のステージを分ける仕組みが入っていて、YAMLの「stage」で設定します。そのステージ名で全体のAPIが作成されるので、ステージ名で開発・本番でAPIを分けることができるのです。deployコマンド実行時に決めることができます。ステージでLambda関数も変えたかったので、YAML内でステージ名を参照する変数「${self:provider.stage}」を使って名前の切り替えを行っています。これで、パスの変更や、ステージの追加・切り替えがちょっと記述を変えるだけでできてしまいます。これをAWSのGUIでやることを考えるとゾッとします...。Gatewayごと削除することもできます。Gatewayだけでなく、S3やCloudWatch等の、他のLambdaトリガーもServerlessで記述できます。Lambdaを使っていると、関連するAWSリソースをまとめて管理したくなります。Serverlessを使えば、「resources」項目でCloudFormationの記述で、それらのリソースを作成・設定することができます。LambdaのロールをServerlessで作成しておけば、本番にデプロイした時に権限付与を忘れていた、といったようなことが無くなります。Lambdaを削除した時に、合わせてロールも削除してくれるので、用途不明のゴミロールが残るといったことも無くなるのでとても便利です。最初ツールを探し始めた時は、覚えるのが大変だなぁと気が重かったのですが、シンプルなツールが見つかってよかったです。GraphQLもServerlessで書けるみたいなので、GraphQLが流行ってくるようならいつか試してみたいですね。LambdaのオーソラーザーまわりのServerlessの設定で、いくつかハマったので別記事に書きました。(1)スターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。