Serverless Frameworkは、AWS Lambdaをはじめとするサーバーレス関数を、YAML定義で簡単にデプロイ・運用できるOSSツールです。本記事では、Serverless Frameworkの基本と、Lambdaを楽にデプロイする手順を解説します。
Serverless Frameworkとは
AWS・GCP・Azure等のサーバーレス機能を抽象化し、コードと設定をパッケージ化して一括デプロイできます。serverless.yml1ファイルに関数・トリガー・IAM・API Gatewayまでまとめて記述可能で、CloudFormationやTerraform単体より直感的です。
インストールと初期化
npm i -g serverless
# テンプレートから新規プロジェクト
serverless create --template aws-nodejs-typescript --path my-api
cd my-api
npm install
serverless.yml の例
service: my-api
frameworkVersion: '3'
provider:
name: aws
runtime: nodejs20.x
region: ap-northeast-1
iam:
role:
statements:
- Effect: Allow
Action: ['s3:GetObject']
Resource: 'arn:aws:s3:::my-bucket/*'
functions:
hello:
handler: src/hello.handler
events:
- httpApi:
path: /hello
method: get
plugins:
- serverless-esbuild
関数の実装例
// src/hello.ts
export const handler = async (event: any) => {
return {
statusCode: 200,
body: JSON.stringify({ message: 'Hello Serverless!' }),
};
};
主なコマンド
serverless deploy --stage dev # デプロイ
serverless deploy function -f hello # 関数のみ更新(高速)
serverless invoke -f hello # 関数実行
serverless logs -f hello -t # ログ確認(テール)
serverless remove # スタック削除
環境変数とstage管理
provider:
environment:
NODE_ENV: ${self:custom.stage}
custom:
stage: ${opt:stage, 'dev'}
# デプロイ
serverless deploy --stage prod
便利なプラグイン
- serverless-esbuild:高速ビルド(TypeScript)
- serverless-offline:ローカル実行
- serverless-iam-roles-per-function:関数ごとのIAM分離
- serverless-domain-manager:カスタムドメイン管理
代替ツール
- AWS SAM:AWS公式のサーバーレスフレームワーク
- AWS CDK:TypeScriptなどで書けるIaC、Lambdaも対応
- SST:TypeScriptベースで本格的なサーバーレス開発が可能
まとめ
Serverless Frameworkは「Lambdaを最も手軽にデプロイ・運用できる」定番ツールです。serverless.yml + 関数コードのシンプル構成で、API・トリガー・IAMまでまとめて管理できます。AWS CDK・SST等も検討しつつ、用途に応じて使い分けましょう。