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

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

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

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

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

オリジンサーバーが利用できないか、受信リクエストを処理できない場合は、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 (キャパシティー超過) エラーが発生しないようにします。

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

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 サービスクォータ」を参照することもできます。