はじめに
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 Gateway | Lambda 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 Gateway | Lambda 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 が必要なケース
- カスタムドメイン必須
api.company.com/v1/usersのような独自ドメイン
- 複雑なAPI管理
- 版数管理(v1, v2, v3…)
- リクエスト/レスポンス変換
- API キー管理
- 高度なセキュリティ要件
- WAF連携必須
- DDoS攻撃対策
- API使用量制限
- 外部公開API
- 第三者開発者向けAPI
- SaaS提供のAPI
Lambda Function URLs が最適なケース
- 社内ツール
- 管理画面
- データ分析ツール
- バッチ処理トリガー
- シンプルなWebhook
- GitHub Webhook
- Slack Bot
- 外部サービス連携
- マイクロサービス間通信
- 内部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という選択肢を検討することで、真のコスト最適化と技術的合理性を実現できます。
本記事の設計例やコード例は、実際のプロジェクトでの採用実績に基づいています。


コメント