ServerlessFrameworkの使い方|AWS Lambdaを楽にデプロイ

インフラ・クラウド

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等も検討しつつ、用途に応じて使い分けましょう。