View a markdown version of this page

HTTP 503 ステータスコード (Service Unavailable) - Amazon CloudFront

HTTP 503 ステータスコード (Service Unavailable)

通常、HTTP 503 ステータスコード (Service Unavailable) は、オリジンサーバーのパフォーマンスの問題を示します。まれに、エッジロケーションでリソースが制限されているため、CloudFront が一時的にリクエストを満たせないことを示している場合もあります。

Lambda@Edge または CloudFront Functions を使用している場合、実行エラーまたは Lambda@Edge の制限超過エラーが原因である可能性があります。

オリジン相互 TLS (オリジン mTLS) を使用している場合、問題は、特定の証明書との接続を確立する試行が繰り返し失敗したことが原因である可能性があります。

オリジンサーバーにリクエスト率をサポートする十分な容量がない

オリジンサーバーが利用できないか、受信リクエストを処理できない場合は、HTTP 503 ステータスコード (Service Unavailable) が返されます。この場合、CloudFront はエラーをユーザーに中継します。この問題を解決するには、以下の手順をお試しください。

  • Amazon S3 をオリジンサーバーとして使用している場合:

    • パーティショニングされた Amazon S3 プレフィックスごとに毎秒 3,500 件の PUT/COPY/POST/DELETE リクエストまたは 5,500 件の GET/HEAD リクエストを送信できます。Amazon S3 から 503 Slow Down レスポンスが返された場合は、通常、特定の Amazon S3 プレフィックスに対するリクエストレートが過剰であることを示しています。

      リクエストレートは S3 バケットのプレフィックスごとに適用されるため、オブジェクトは複数のプレフィックスに分散する必要があります。プレフィックスに対するリクエストレートが徐々に増えると、Amazon S3 はスケールアップして各プレフィックスのリクエストを個別に処理します。その結果、バケットが処理する全体的なリクエストレートは、プレフィックス数の倍数になります。

    • 詳細については、Amazon Simple Storage Service ユーザーガイドの「Amazon S3 のパフォーマンスの最適化」を参照してください。

  • Elastic Load Balancing をオリジンサーバーとして使用している場合:

    • バックエンドインスタンスがヘルスチェックに応答できることを確認します。

    • ロードバランサーとバックエンドインスタンスが負荷を処理できることを確認します。

    詳細については、以下を参照してください。

  • カスタムオリジンを使用している場合:

    • アプリケーションログを調べて、オリジンのメモリ、CPU、ディスクサイズなどのリソースが十分であることを確認します。

    • Amazon EC2 をバックエンドとして使用している場合は、受信されるリクエストを満たす適切なリソースがインスタンスタイプにあることを確認します。詳細については、Amazon EC2 ユーザーガイドの「インスタンスタイプ」を参照してください。

  • API Gateway を使用している場合:

    • API Gateway API がレスポンスを受信できない場合、このエラーはバックエンド統合に関連しています。バックエンドサーバーが次の状態である可能性があります。

      • 容量を超えて過負荷状態であり、新しいクライアントリクエストを処理できません。

      • 一時的にメンテナンス中です。

    • このエラーを解決するには、API Gateway アプリケーションログを調べて、バックエンドの容量、統合、その他に問題があるかどうかを確認します。

エッジロケーションのリソースが制限されているために CloudFront でエラーが発生した

このエラーは、CloudFront から次の最も利用可能なエッジロケーションにリクエストをルーティングできず、リクエストを満たすことができないという、まれな状況で発生します。このエラーは CloudFront ディストリビューションで負荷テストを実行するときによく発生します。これを回避するには、「CloudFront の負荷テスト」のガイドラインに従って 503 (キャパシティー超過) エラーが発生しないようにします。

このエラーが本稼働環境で発生した場合は、サポートまでお問い合わせください。

CloudFront が相互 TLS で設定されたオリジンに対してエラーを発生させました

ディストリビューションが相互 TLS (mTLS) を使用してカスタムオリジンに接続する場合、CloudFront はオリジンへの接続を確立できない場合に HTTP 503 ステータスコードを返すことがあります。これは、オリジンが TLS ハンドシェイクを繰り返し完了できなかったり、DNS または接続の問題が原因で到達できない場合に発生する可能性があります。この状態は一時的なものです。オリジンが再び到達可能になると、CloudFront は通常のトラフィックを自動的に再開します。

この問題を解決するには。

  • 正しいクライアント証明書がディストリビューションに関連付けられており、有効期限が切れていないことを確認します。証明書を最近更新した場合は、変更が反映されるまで時間を確保してください。

  • オリジンに到達可能であり、DNS レコードが正しく解決されていることを確認します。

本番環境で適切な証明書を設定しても問題が解決しない場合は、 サポートにお問い合わせください。

Lambda@Edge または CloudFront Functions の実行エラー

Lambda@Edge または CloudFront Functions を使用している場合、HTTP 503 ステータスコードは、関数が実行エラーを返したことを示している可能性があります。

Lambda@Edge エラーを特定して解決する方法の詳細については、「Lambda@Edge 関数をテストおよびデバッグする」を参照してください。

CloudFront Functions のテストの詳細については、「関数をテストする」を参照してください。

Lambda@Edge の制限超過

Lambda@Edge を使用している場合、HTTP 503 ステータスコードは、Lambda がエラーを返したことを示している可能性があります。このエラーは、以下のいずれかが原因である可能性があります。

  • 関数の実行数が、AWS リージョンでの実行をスロットリングするために Lambda が設定したクォータ (同時実行数または呼び出し頻度) の 1 つを超えている。

  • 関数が Lambda 関数のタイムアウトクォータを超過している。

Lambda@Edge のクォータの詳細については、「Lambda@Edge のクォータ」を参照してください。Lambda@Edge エラーを特定して解決する方法の詳細については、「Lambda@Edge 関数をテストおよびデバッグする」を参照してください。「AWS Lambda 開発者ガイド」の「Lambda サービスクォータ」を参照することもできます。