セッションクリーンアップ
メソッド
RESTメソッドを採用しています。
HTTPメソッド
POST: 期限切れセッションクリーンアップ
命名規則
クエリパラメータとノードの命名を統一し、可読性を向上させるため、リクエスト時のURIとJSON内のノードにはsnake_caseを使用します。
リクエストとレスポンス
ヘッダー
メタ情報はレスポンスボディではなく、HTTPヘッダーに設定されます。
リクエストヘッダー
X-API-KeyContent-TypeAccept
レスポンスヘッダー
Content-Type
セッションクリーンアップ
URI
リクエストボディ
リクエストボディは不要です。
レスポンス
レスポンスはJSONです。
レスポンスフィールド
| 名前 | 型 | 説明 |
|---|---|---|
| message | string | 成功メッセージ |
| cleanedCount | number | クリーンアップされたセッション数 |
認証
このエンドポイントはAPIキー認証を使用します(Bearerトークンではありません)。
例外処理
例外処理のステータスコードは以下の通りです。
| 説明 | ステータスコード | ステータス名 |
|---|---|---|
| APIキーがないか無効 | 401 | Unauthorized |
| 内部サーバーエラー | 500 | Internal Server Error |
処理フロー
- リクエストヘッダーからX-API-Keyを抽出
- タイミングセーフな比較を使用してAPIキーを検証
- 期限切れセッションレコードをクエリして削除
- クリーンアップされたセッション数を返す
セキュリティ
- APIキーが必要(ユーザートークンではない)
- タイミングセーフな比較によりタイミング攻撃を防止
- AWS EventBridgeのスケジュール実行を想定
- 不正アクセス試行をログに記録
使用方法
このエンドポイントはスケジュールサービスから呼び出される必要があります(例:AWS EventBridge cronジョブ)。ユーザーアクセスを想定していません。
設定例
環境変数:
AWS EventBridgeスケジュール:
Rate: cron(0 0 * * ? *) # Daily at midnight UTC
Target: API Gateway -> /v1/auth/cleanup_sessions
Headers: X-API-Key: ${SESSION_CLEANUP_API_KEY}
詳細フローチャート
flowchart TD
Start([POST /auth/cleanup_sessions]) --> ValidateKey[X-API-Key検証<br/>timing-safe比較]
ValidateKey --> KeyValid{有効?}
KeyValid -->|NG| Err401[401 Unauthorized]
KeyValid -->|OK| QueryExpired[期限切れセッション検索]
QueryExpired --> DeleteExpired[期限切れセッション削除]
DeleteExpired --> CountDeleted[削除数カウント]
CountDeleted --> Success[200 OK<br/>cleaned count]