CloudFrontで5xxエラーが連発する場合の原因と対策まとめ
Amazon CloudFront を利用していると、502 Bad Gateway
や 504 Gateway Timeout
を中心とした 5xxエラー が連発するケースがあります。
これらのエラーは、オリジンサーバーの問題だけでなく、CloudFrontやその周辺構成にも原因があることがあります。
本記事では、原因の特定ポイントとCloudFront側でできる制御・軽減策をまとめます。
🔍 まず確認すべきポイント
チェック項目 | 内容 |
---|---|
オリジンの種類 | S3 / ALB / API Gateway / EC2など |
オリジンの応答状況 | CloudFrontを経由せずにオリジンへ直接アクセスしてステータス確認 |
エラー傾向の調査 | 時間帯、リージョン、User-Agentなどに偏りがないか |
CloudFrontログ |
sc-status , x-edge-result-type , cs-uri-stem などを調査 |
🛠 CloudFront側での制御策
1. キャッシュポリシーの最適化
オリジンに頻繁にアクセスしないよう、キャッシュを活用して5xxを抑制。
{
"DefaultTTL": 60,
"MaxTTL": 300,
"MinTTL": 10
}
- APIや動的コンテンツでもTTLを短く設定してキャッシュを使う
- クエリ文字列やCookieをキャッシュキーに含めるか見直す
2. オリジングループの活用(フェイルオーバー)
CloudFrontのオリジングループを使えば、オリジンが5xxを返した際に代替オリジンに切り替えることが可能。
例:
- メイン:ALB
- フェイルオーバー:S3の静的エラーページ
3. カスタムエラーレスポンス
CloudFront上で5xxエラー発生時に、即座にキャッシュ済みのエラーページを返すことでUXを改善。
{
"HTTP Error Code": 502,
"Response Page Path": "/custom_502.html",
"TTL": 30
}
4. タイムアウト/KeepAliveの見直し
504
などが出る場合、CloudFront⇔オリジン間のタイムアウトが影響していることが多い。
- ALB: Idle Timeout を 60秒以上に
- EC2/Nginx: KeepAlive を有効にし、タイムアウトも適切に調整
5. Lambda@Edge / CloudFront Functions によるリクエスト制御
- 明らかに攻撃的・異常なパターンのリクエストをブロック
- User-Agentが
CFNetwork
,sqlmap
,curl
などのパターンを検知して遮断
if (request.headers['user-agent'] && request.headers['user-agent'].value.includes('sqlmap')) {
return {
statusCode: 403,
statusDescription: 'Forbidden',
body: 'Blocked by Lambda@Edge'
};
}
6. AWS WAFの導入でBotやDDoSの制御
- Rate-based rule(単位時間あたりのアクセス数制御)
- CAPTCHA / Challenge
- Geo Match(地理的制御)
- Bot Control(マネージドルール)
📊 監視強化ポイント
- CloudWatch:
5xxErrorRate
,TotalErrorRate
- CloudFront Access Log → Athena or QuickSight で可視化
- Lambda@Edge + CloudWatch Logs による詳細追跡
✅ まとめ
対策 | 効果 |
---|---|
キャッシュ制御 | オリジン負荷低減・エラー回避 |
フェイルオーバー構成 | サービス継続性向上 |
エラーレスポンス設定 | UX改善、再試行負荷抑制 |
Lambda@Edge / WAF | 攻撃・Botからの防御 |
オリジンの調整 | タイムアウト・接続安定化 |
📎 補足:CloudFrontログ分析例(Athena)
SELECT
date,
time,
sc_status,
cs_method,
cs_uri_stem,
c_ip,
cs_user_agent
FROM cloudfront_logs
WHERE sc_status LIKE '5%'
ORDER BY date DESC, time DESC
LIMIT 100;
🔗 関連ドキュメント
執筆者: 檜垣慶太
CloudFrontの5xx対策で困っている方の参考になれば幸いです!