はじめに

Lambda統合したAPI Gatewayの実行時に発生しうるエラーコードについて、実際に確認したものを備忘として記載します

エラーコード別の切り分け概要

ステータスコード 分類 主な原因
401 / 403 認証・認可エラー トークン不備、IAM設定不備
400 / 404 リクエストエラー クライアント仕様不備
500 内部エラー Lambda設定・実装不備
502 接続エラー バックエンド接続不可
503 サービスエラー 高負荷・AWS障害
504 タイムアウト Lambda実行時間超過

401 / 403 認証・認可エラー

判断基準

想定される原因

確認ポイント


アラート内容例と対応

例1:認証情報不備(401)

ログ:Session expired or invalid 対応 - 認証情報が無効、または期限切れ - Lambda 環境変数および Secret Manager の値を確認


例2:認証トークン不備(403)

ログ:The security token included in the request is invalid 対応 - トークン値が不正 - Lambda 環境変数と Secret Manager の設定値を確認


例3:IAM ロール権限不足(403)

ログ:An error occurred (AccessDeniedException) when calling the XXXXX operation 対応 - Lambda に付与されている IAM ロールの権限が不足しているため必要なアクションがポリシーに含まれているか確認


例4:リソースポリシーによる拒否(403)

ログ:An explicit deny in a resource-based policy 対応 - API Gateway のリソースポリシーで IP 制限されているため 設定されている IP と実際のアクセス元 IP を確認


400 / 404 リクエストエラー

判断基準

想定される原因

対応


500 内部エラー

判断基準

想定される原因

アラート例

パラメータ不正(500)

ログ:Invalid length for parameter XXXXX, value: 0, valid min length: 1 対応 - Lambda 内で空文字が代入されているため環境変数・Secret Manager の値を確認


リソース未検出(500)

ログ:Secrets Manager can't find the specified secret 対応 - Secret Manager 名が誤っているためLambda 環境変数の値を確認


502 / 503 / 504 サーバー・タイムアウト系エラー

502 Bad Gateway

503 Service Unavailable

504 Gateway Timeout


障害対応フロー

  1. エラーステータスコードを確認
  2. API Gateway の Access Log / Execution Log を確認
  3. Lambda の CloudWatch Logs を確認
  4. IAM / リソースポリシー / 環境変数を確認
  5. 必要に応じてエラー発生元へ連絡
  6. 原因不明の場合は AWS サポートへ問い合わせ

併せて記憶しておきたいこと

4xx error、5xx errorをcloud watchアラートで検出したい場合は以下を利用します 名前空間:AWS/ApiGateway メトリクス名:4XXError/5XXError

また、Lambdaと統合している場合、APIアクセスログだけでなくLambdaのログにもエラーの詳細が出力されていることも考えられるためそちらも併せて確認します

おわり