Lambda Function URLsでAPI Gateway料金を削減する技術選択戦略

AWS

はじめに

AWS環境でのコスト最適化において、「機能要件を満たしつつ、いかに無駄なコストを削減するか」は重要な課題です。本記事では、従来API Gatewayが必要と考えられていたユースケースで、Lambda Function URLsを活用することで年間数万円〜数十万円のコスト削減を実現する技術選択について解説します。

従来の常識:「API公開 = API Gateway」の思い込み

多くの開発チームが以下のような思考パターンに陥りがちです:

Lambda関数をHTTPで公開したい
↓
API Gatewayを使うのが当たり前
↓
設定が複雑だけど仕方ない
↓
月額料金も必要経費として受け入れる

しかし、本当にAPI Gatewayが必要でしょうか?

Lambda Function URLsという選択肢

2022年4月6日の革新的アップデート

AWSは2022年4月6日にLambda Function URLsを正式にリリースしました。これにより、API Gatewayを経由せずに、Lambda関数に直接HTTPSエンドポイントを設定できるようになりました。

# 設定はワンクリック
https://abc123def456.lambda-url.us-east-1.on.aws/

機能比較:本当に必要な機能は何か?

機能API GatewayLambda Function URL要件達成
HTTPS通信必須
IAM認証必須
IP制限必須
CORS設定必要
カスタムドメイン不要
API版数管理不要
リクエスト変換不要
レスポンス変換不要

結論: 社内ツールやシンプルなAPIでは、Lambda Function URLsで十分なケースが多い。

コスト削減効果の具体的計算

API Gateway料金体系(東京リージョン)

- REST API: $3.50 / 100万リクエスト
- HTTP API: $1.00 / 100万リクエスト
- Lambda Function URLs: $0(Lambda実行料金のみ)

実際のコスト削減事例

ケース1: 月10万リクエストの社内ツール

API Gateway REST API: $3.50 × 0.1 = $0.35/月 → $4.2/年
Lambda Function URLs: $0/月 → $0/年
年間削減額: $4.2

ケース2: 月500万リクエストの中規模システム

API Gateway REST API: $3.50 × 5 = $17.5/月 → $210/年
Lambda Function URLs: $0/月 → $0/年
年間削減額: $210

ケース3: 月1億リクエストの大規模システム

API Gateway REST API: $3.50 × 100 = $350/月 → $4,200/年
Lambda Function URLs: $0/月 → $0/年
年間削減額: $4,200

設定工数の劇的削減

API Gatewayの設定項目(一般的な設定)

# API Gateway設定例(serverless.yml)
functions:
  api:
    handler: handler.main
    events:
      - http:
          path: /{proxy+}
          method: ANY
          cors: true
          authorizer: aws_iam
          
resources:
  Resources:
    ApiGatewayRestApi:
      Type: AWS::ApiGateway::RestApi
      Properties:
        Name: ${self:service}-api
        Policy: 
          Version: '2012-10-17'
          Statement:
            - Effect: Allow
              Principal: '*'
              Action: execute-api:Invoke
              Resource: '*'
              Condition:
                IpAddress:
                  aws:SourceIp: 
                    - "203.0.113.0/24"
    
    # ステージ設定
    ApiGatewayStage:
      Type: AWS::ApiGateway::Stage
      Properties:
        StageName: prod
        RestApiId: !Ref ApiGatewayRestApi
        
    # WAF設定(必要に応じて)
    # CloudWatch設定
    # カスタムドメイン設定
    # 等々...

設定項目数: 15-20項目、設定時間: 2-4時間

Lambda Function URLsの設定

# AWS CLI(30秒で完了)
aws lambda create-function-url-config \
    --function-name my-function \
    --config AuthType=AWS_IAM

# IAMポリシー設定(5分で完了)
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "lambda:InvokeFunctionUrl",
            "Resource": "arn:aws:lambda:*:*:function:my-function",
            "Condition": {
                "IpAddress": {
                    "aws:SourceIp": ["203.0.113.0/24"]
                }
            }
        }
    ]
}

設定項目数: 3-5項目、設定時間: 15-30分

工数削減効果

項目API GatewayLambda Function URL削減効果
初期設定2-4時間15-30分75-87%削減
テスト確認30-60分5-10分80-90%削減
ドキュメント作成1-2時間15-30分75-85%削減

エンジニア時給5,000円計算で、1プロジェクトあたり15,000円〜30,000円の工数削減

セキュリティは妥協しない

3層セキュリティアーキテクチャ

graph TD
    A[クライアント] --> B[IP制限チェック]
    B --> C[IAM認証]
    C --> D[CORS検証]
    D --> E[Lambda関数実行]
    
    B -.-> F[アクセス拒否]
    C -.-> G[認証エラー]
    D -.-> H[CORS エラー]

具体的なセキュリティ設定

1. IP制限(IAMポリシー)

{
    "Condition": {
        "IpAddress": {
            "aws:SourceIp": [
                "社内ネットワークCIDR",
                "開発者自宅IP",
                "VPNサーバーIP"
            ]
        }
    }
}

2. IAM認証

# 署名付きリクエストが必要
Authorization: AWS4-HMAC-SHA256 Credential=...

3. CORS制限

# 許可されたオリジンのみ
Access-Control-Allow-Origin: https://internal-tool.company.com

運用・監視も十分に対応

CloudWatch統合

# 自動的に以下が提供される
- /aws/lambda/function-name(実行ログ)
- Lambda関数メトリクス(実行回数、エラー率、実行時間)
- CloudTrail(API呼び出し履歴)

アラート設定例

# CloudWatchアラーム
FunctionErrorRate:
  Type: AWS::CloudWatch::Alarm
  Properties:
    AlarmName: LambdaFunctionErrorRate
    MetricName: Errors
    Namespace: AWS/Lambda
    Statistic: Sum
    Period: 300
    EvaluationPeriods: 2
    Threshold: 5
    ComparisonOperator: GreaterThanThreshold

いつAPI Gatewayを選ぶべきか

API Gateway が必要なケース

  1. カスタムドメイン必須
    • api.company.com/v1/users のような独自ドメイン
  2. 複雑なAPI管理
    • 版数管理(v1, v2, v3…)
    • リクエスト/レスポンス変換
    • API キー管理
  3. 高度なセキュリティ要件
    • WAF連携必須
    • DDoS攻撃対策
    • API使用量制限
  4. 外部公開API
    • 第三者開発者向けAPI
    • SaaS提供のAPI

Lambda Function URLs が最適なケース

  1. 社内ツール
    • 管理画面
    • データ分析ツール
    • バッチ処理トリガー
  2. シンプルなWebhook
    • GitHub Webhook
    • Slack Bot
    • 外部サービス連携
  3. マイクロサービス間通信
    • 内部API
    • サービス間連携

実装事例:ファイル分析システム

システム構成

HTML Tool → Lambda Function URL → Lambda
                ↓
           S3 File Storage
                ↓
          Bedrock Claude API
                ↓
           S3 Report Storage

コスト比較(月1万リクエスト想定)

■ API Gateway使用の場合
- API Gateway: $0.35/月
- Lambda実行: $2.00/月
- その他AWS: $5.00/月
合計: $7.35/月

■ Lambda Function URL使用の場合
- Lambda Function URL: $0/月
- Lambda実行: $2.00/月
- その他AWS: $5.00/月
合計: $5.00/月

年間削減額: ($7.35 - $5.00) × 12 = $28.2

設定時間比較

■ API Gateway: 3時間
- API Gateway設定: 2時間
- IAM設定: 30分
- テスト: 30分

■ Lambda Function URL: 45分
- Function URL作成: 15分
- IAM設定: 15分
- テスト: 15分

工数削減: 2時間15分(75%削減)

お客様への価値提案

コンサルティングでの説明例

【提案】Lambda Function URLsによるコスト最適化

■ 現状の課題
- API Gateway料金: 年間$XXX
- 設定の複雑性による工数増加
- 不要な機能への課金

■ 改善案
- Lambda Function URLsへの移行
- 同等のセキュリティレベル維持
- 設定工数75%削減

■ 効果
- 年間コスト削減: $XXX
- 工数削減: XX人日
- システム簡素化による保守性向上

まとめ

Lambda Function URLsを活用することで:

📊 定量的効果

  • 年間料金削減: 数千円〜数十万円
  • 設定工数削減: 75-87%
  • テスト時間削減: 80-90%

🔒 セキュリティ効果

  • 3層防御: IP制限 + IAM認証 + CORS
  • 監査対応: CloudTrail + CloudWatch Logs
  • AWS標準: 企業レベルのセキュリティ

🚀 運用効果

  • 設定簡素化: 管理項目の大幅削減
  • デバッグ容易: シンプルなアーキテクチャ
  • 可用性向上: AWS管理サービスの恩恵

技術選択は要件と照らし合わせた合理的判断であるべきです。 API Gatewayは素晴らしいサービスですが、すべてのケースで必要とは限りません。Lambda Function URLsという選択肢を検討することで、真のコスト最適化と技術的合理性を実現できます。


本記事の設計例やコード例は、実際のプロジェクトでの採用実績に基づいています。

コメント

タイトルとURLをコピーしました