AWS
AWS構成事例カタログ
サーバーレスサーバーレスLambda

サーバーレス構成(API GW + Lambda + DynamoDB)

インフラ管理ゼロのフルサーバーレスWeb/API

可用性 (SLA目標)

99.95% 前後(各マネージドサービスのSLA)

RTO(目標復旧時間)

ほぼ即時(マネージドサービスが自動回復)

RPO(目標復旧時点)

ほぼ 0(DynamoDBは3AZへ同期書き込み)

概算コスト

月 0〜30,000 円(完全従量・アイドル時ほぼ0円)

構成概要

可用性レベル
サーバーレス
コンピューティング
Lambda
想定システム規模
小〜中規模(API・イベント駆動型)
コスト感
¥¥¥低コスト

使用AWSサービス

  • Amazon CloudFront
  • API Gateway
  • AWS Lambda
  • Amazon DynamoDB
  • Amazon Cognito
  • Amazon S3

概要

CloudFront で静的コンテンツを配信し、API Gateway + Lambda でAPIを処理、DynamoDB でデータを永続化するフルサーバーレス構成です。サーバー管理が完全に不要で、リクエスト数に応じた従量課金のためアイドル時のコストはほぼゼロ。マルチAZ冗長やスケーリングはマネージドサービス側が自動で担います。

設計のポイント

  • サーバー・OSの管理が一切不要。運用負荷を最小化
  • 従量課金で、トラフィックが無ければほぼ無料
  • 急なスパイクにも自動スケール(事前のキャパシティ設計が不要)
  • DynamoDBはマルチAZが標準で、可用性設計が組み込み済み

システム構成図

AWS Cloud(マネージドサービス / マルチAZ自動対応)静的配信API認証ユーザーCloudFrontS3(静的ファイル)API GatewayLambda(ビジネスロジック)DynamoDBCognito(認証)

周辺・運用機能(クロスカッティング / 全体に適用)

監視・運用

CloudWatchCloudWatchCloudTrailCloudTrailEventBridgeEventBridge

セキュリティ・統制

IAMIAMGuardDutyGuardDutyKMSKMSSecrets ManagerSecrets Manager

CI/CD・開発

CodePipelineCodePipelineCodeBuildCodeBuild

配信・保護

WAFWAFShieldShield
リージョンVPCプライベートパブリック概念図 / アイコン: AWS Architecture Icons

コピーしてすぐ使える IaC

サーバーレス構成(API GW + Lambda + DynamoDB)を再現するためのスターターIaCです。事例固有のIP制限、監査、バックアップ、Secret参照は環境に合わせて追加してください。

typescript
import * as cdk from "aws-cdk-lib";
import { Construct } from "constructs";
import * as lambda from "aws-cdk-lib/aws-lambda";
import * as apigw from "aws-cdk-lib/aws-apigateway";
import * as dynamodb from "aws-cdk-lib/aws-dynamodb";

export class ServerlessApigwLambdaDynamodbStack extends cdk.Stack {
  constructor(scope: Construct, id: string, props?: cdk.StackProps) {
    super(scope, id, props);

    const table = new dynamodb.Table(this, "Table", {
      partitionKey: { name: "pk", type: dynamodb.AttributeType.STRING },
      sortKey: { name: "sk", type: dynamodb.AttributeType.STRING },
      billingMode: dynamodb.BillingMode.PAY_PER_REQUEST,
      encryption: dynamodb.TableEncryption.AWS_MANAGED,
    });

    const handler = new lambda.Function(this, "Handler", {
      runtime: lambda.Runtime.NODEJS_20_X,
      handler: "index.handler",
      code: lambda.Code.fromInline("exports.handler = async () => ({ statusCode: 200, body: 'ok' });"),
      environment: { TABLE_NAME: table.tableName },
    });

    table.grantReadWriteData(handler);
    new apigw.LambdaRestApi(this, "Api", { handler });
  }
}

この構成を選ぶ理由

サーバーレス構成(API GW + Lambda + DynamoDB)は、小〜中規模(API・イベント駆動型)を想定し、運用負荷の低減とイベント駆動の伸縮性を重視する場合に選びやすい構成です。

選定フロー

1

業務要件を確認する

サーバーレスで求められる可用性、RTO/RPO、データ分類を確認する。

要件に合う → 候補として採用不足がある → 上位の冗長化/統制構成を検討
2

運用体制を確認する

チームが AWS Native の運用、監視、権限管理を継続できるかを確認する。

運用可能 → 詳細設計へ負荷が高い → よりマネージドな代替案へ
3

コストと拡張性を比較する

月 0〜30,000 円(完全従量・アイドル時ほぼ0円)を許容し、将来のスケールやDR要件に対応できるかを判断する。

許容できる → 本構成を採用過剰/不足 → 代替案を比較

代替案との比較

候補コスト運用保守負荷スケーラビリティ選定すべきケース
最小構成
低い単純だが手動復旧が多い限定的PoC、検証、小規模な開始段階
サーバーレス構成(API GW + Lambda + DynamoDB)採用
低いAWS標準運用で管理可能需要に応じて高く伸縮イベント駆動型のAPIバックエンド
上位冗長化構成
高い設計・監視・訓練が増える高い厳格なSLA、DR、監査要件がある場合

採用時のトレードオフ

!

設計前提の確認が必要

RTO/RPO、可用性、コストは実際の設定・運用・負荷条件に依存します。
i

コストと運用負荷のバランス

Lambdaのコールドスタートで初回レイテンシが出ることがある

メリット

  • サーバー管理・OSパッチが完全に不要
  • リクエスト従量課金で、アイドル時のコストがほぼゼロ
  • DynamoDBのマルチAZが標準で提供される
  • スパイクトラフィックへ自動でスケール

デメリット

  • Lambdaのコールドスタートで初回レイテンシが出ることがある
  • 複雑なJOINなどRDB前提の処理には不向き
  • DynamoDBはアクセスパターン起点の設計が必要(RDBと思想が異なる)
  • Lambdaの実行時間は最大15分の制約がある

主なユースケース

  • イベント駆動型のAPIバックエンド
  • SPA(React / Vue 等)のバックエンドAPI
  • IoTデータ収集・処理パイプライン
LambdaAPI GatewayDynamoDBサーバーレスCloudFront