ALB の 502・503・504 の違い ── エラーコードからターゲット側の原因を切り分ける

目次

概要

Application Load Balancer(ALB)の後ろにある Web アプリにアクセスしたら、502 Bad Gateway・503 Service Unavailable・504 Gateway Timeout のどれかが返ってきた。どれも「サーバー側のエラー」ですが、ALB が自分で返す 5XX は、ALB がターゲットとの間で何に失敗したかを表しています。コードを見分けられれば、調べる場所をすぐに絞れます。

  • 502: ターゲットにつなごうとしたら拒否された(TCP RST)、または応答が壊れていた
  • 503: 振り分け先のターゲットが 1 台も登録されていない
  • 504: ターゲットにつながらないまま接続タイムアウト(10 秒)が過ぎた、またはつながったがアイドルタイムアウトまでに応答が無かった

ややこしいのは、アプリ自身が 502・503・504 を返すこともある点です。ALB はターゲットが返したエラーをそのままクライアントへ中継するので、ブラウザから見ると区別がつきません。どちらが返したかは、CloudWatch の HTTPCode_ELB_5XX_Count と HTTPCode_Target_5XX_Count で見分けます。

この記事では、ALB が 502・503・504 を返す条件と、エラーの出どころの見分け方を整理します。実践では、EC2 1 台の後ろに置いた ALB で、ターゲットの登録解除(503)・アプリの停止(502)・アイドルタイムアウトより遅い応答(504)を順に起こし、そのたびに直して元に戻ることを確かめます。最後に、アプリ自身が返した 503 と ALB が返した 503 が、メトリクスでは別のものとして数えられることを確認します。

ALB が自分で返す 502・503・504 は、ターゲットとの間で何に失敗したかを表す
ALB が自分で返す 502・503・504 は、ターゲットとの間で何に失敗したかを表す
クラウドおさる

猿山のバナナ倉庫の窓口で「今日は渡せませぬ」と言われても、窓口番が言ったのか、奥の倉庫番が言ったのかで、探しに行く場所が変わるのでござる。今日は 502・503・504 を自分の手で起こして、誰が何に困ったのかを見分けるでござるよ。

この記事のメリット

  • ALB が 502・503・504 を返す条件を、ターゲットとの間で起きたこととして説明できるようになる
  • ターゲットがすべて unhealthy でも 503 にはならず、すべてのターゲットに振り分けられる(フェールオープン)ことが分かる
  • HTTPCode_ELB_5XX_Count と HTTPCode_Target_5XX_Count で、エラーを返したのが ALB かアプリかを見分けられるようになる
  • 登録解除・アプリの停止・遅い応答で 503・502・504 を実際に起こし、直して戻るまでを体験できる

執筆者とキャラクター紹介

執筆者:土肥(とひ)

株式会社ジェニュインの代表であり元エンジニア。これまでオンプレミスと AWS 環境のインフラ業務を担当。AWS 認定資格の学習で得た知識を、ハンズオンとともに解説するのが得意。直近では新人の教育も行っており、これから技術を学ぶ方が納得できる解説を心がけています。基礎編・Cloud Practitioner の記事では、解説役としても登場します。

土肥

クラウドおさる

クラウドおさる

はじめましてでござる。弊猿はクラウドおさる。IT インフラが異常に発達した猿山から、雲に乗って地上の AWS を学びに降りてきたのでござる。

クラウドおさる

基礎編や Cloud Practitioner の記事では、とひさんに素朴な疑問をぶつける役でござるな。Security - Specialty などの記事では、要所でワンポイントや注意点をひとこと添えるでござる。

クラウドおさる

猿山にもデータセンターや監視当番があって、地上で起きることはだいたい猿山にも同じ仕組みがあるのでござる。例え話がつい猿山に寄るのは、弊猿の癖でござる。

技術解説

ALB が返す 5XX と、ターゲットが返す 5XX

ALB を通るリクエストのエラーには、出どころが 2 つあります。

出どころどういうときか数えられるメトリクス
ALB 自身ターゲットへの接続や応答の受け取りに失敗したとき、ALB がエラーを作って返すHTTPCode_ELB_5XX_Count(内訳として HTTPCode_ELB_500_Count・HTTPCode_ELB_502_Count・HTTPCode_ELB_503_Count・HTTPCode_ELB_504_Count など)
ターゲット(アプリ)アプリが 5XX を返し、ALB はそれをそのまま中継するHTTPCode_Target_5XX_Count

HTTPCode_ELB_5XX_Count にはターゲットが返したコードは含まれず、HTTPCode_Target_5XX_Count には ALB が返したコードは含まれません。たとえばアプリが自分で 504 を返した場合、HTTPCode_ELB_504_Count は増えず、HTTPCode_Target_5XX_Count が増えます。どちらのメトリクスも、意味のある統計は Sum(合計)です。

アクセスログを有効にしている場合は、elb_status_code(ALB がクライアントに返したコード)と target_status_code(ターゲットが返したコード)を見比べます。elb_status_code が 502 で target_status_code が - なら、ターゲットから応答を受け取れずに ALB が返したエラーです。

503: 振り分け先のターゲットが無い

ALB が 503 を返すのは、ターゲットグループに登録されたターゲットが無いか、登録されたターゲットがすべて unused の状態のときです。unused になるのは、ターゲットが停止・終了している、ターゲットグループがリスナーから使われていない、ALB で有効にしていない AZ にターゲットがある、といった場合です。

注意したいのは、ターゲットがすべて unhealthy になっただけでは 503 にならないことです。ターゲットグループに異常なターゲットしか無い場合、ALB はヘルスステータスにかかわらず、すべてのターゲットにリクエストを振り分けます(フェールオープン)。その結果、ターゲットの状態に応じて 502 や 504 が返ったり、たまたま処理できたリクエストは成功したりします。

ターゲットグループの状態ALB の動き
登録済みのターゲットが 0 台503 を返す
登録済みのターゲットがすべて unused(停止中など)503 を返す
一部が healthyhealthy のターゲットだけに振り分ける
登録済みのターゲットがすべて unhealthyすべてのターゲットに振り分ける(フェールオープン)。503 にはならない

Auto Scaling グループのインスタンスをターゲットにしている場合は、ターゲットグループが Auto Scaling グループに関連付けられているかも確認します。関連付けが外れていると、インスタンスが動いていてもターゲットは登録されません。

クラウドおさる

「全部 unhealthy だから 503」と思い込むと、調べる場所を間違えるのでござる。ALB はターゲットが全滅すると、だめ元で全員に仕事を回すのでござるよ。503 を見たら、まずターゲットグループに誰か登録されているかを確かめるのでござる。

502: ターゲットに拒否された、応答が壊れていた

ALB が 502 を返すのは、ターゲットとのやり取りが異常な形で終わったときです。主な原因は次のとおりです。

原因よくある状況確認するところ
接続しようとしたら、ターゲットが TCP RST を返したアプリのプロセスが止まっていて、ポートが閉じているアプリのプロセス。TargetConnectionErrorCount
接続しようとしたら、ICMP Destination unreachable などの予期しない応答が返ったネットワークの経路の問題ALB のサブネットからターゲットのポートへの通信が許可されているか
リクエストの処理中に、ターゲットが TCP RST / FIN で接続を閉じたアプリのキープアライブのタイムアウトが ALB のアイドルタイムアウトより短いアプリのキープアライブの設定(ALB のアイドルタイムアウトより長くする)
ターゲットの応答の形式が不正、HTTP ヘッダーが無効アプリやミドルウェアの不具合ターゲットでのパケットキャプチャ
登録解除の遅延が過ぎた処理中のリクエストが残っているうちにターゲットを登録解除した登録解除の遅延の長さ
HTTPS のターゲットとの SSL ハンドシェイクに失敗したターゲットの TLS の設定ターゲットが対応する暗号スイート

ターゲットが Lambda 関数の場合は、応答本文が 1 MB を超えた、関数がタイムアウトやエラーで終わった、といったときにも 502 になります。

504: ターゲットが時間内に応えない

ALB が 504 を返すのは、時間切れのときです。

原因よくある状況確認するところ
接続タイムアウト(10 秒)までにターゲットへの接続を確立できなかったターゲットのセキュリティグループが ALB からの通信を許可していないセキュリティグループ、ネットワーク ACL(ターゲットから ALB へのエフェメラルポート 1024〜65535 の戻り)。TargetConnectionErrorCount
接続はできたが、アイドルタイムアウトまでにターゲットが応答しなかったアプリの処理が遅い。DB などの依存先が遅いTargetResponseTime の最大値、ターゲットの CPU 使用率
ターゲットが本文より大きい Content-Length を返したアプリの不具合アプリの応答

ALB のアイドルタイムアウト(接続アイドルタイムアウト)は既定で 60 秒で、1〜4000 秒の範囲で変えられます。応答が遅いからといってすぐにアイドルタイムアウトを延ばすのではなく、まずはターゲットの処理やリソースを見直し、どうしても時間がかかる処理のときだけ延ばすのがよいとされています。

502・503・504 の切り分け:出どころ → 登録の有無 → 拒否か時間切れか
502・503・504 の切り分け:出どころ → 登録の有無 → 拒否か時間切れか
クラウドおさる

503 は「倉庫番がいない」、502 は「倉庫番に門前払いされた」、504 は「倉庫番がいつまでも返事をしない」でござる。誰もいないのか、断られたのか、待たされたのか、と読み替えると覚えやすいのでござるな。

新卒・未経験の方へ
クラウドおさる

AWS を仕事にしたい方へ ── 新卒・未経験から

この記事を書いているのは、AWS の設計・構築を仕事にしている現役エンジニアです。運営元の株式会社ジェニュインでは、新卒・未経験の方も募集しています。異業種や文系からインフラエンジニアになり活躍しているメンバーもいます。

  • ✓システム開発・WEB エンジニア / インフラ構築などの職種で、未経験から応募できます
  • ✓未経験から入社した社員の声を含む社員アンケートを掲載
  • ✓応募フォームから 1 分で応募できます

実践

EC2 1 台(soa-5xx-web)をターゲットにした ALB(soa-5xx-alb)に CloudShell からリクエストを送り、次の順に 3 つのエラーを起こしては直します。

  • ターゲットを登録解除して 503 を起こし、登録し直して戻す
  • アプリを止めて 502 を起こし、起動し直して戻す
  • アイドルタイムアウトを 10 秒に縮め、20 秒かかる /slow で 504 を起こし、60 秒に戻す

最後に、アプリ自身が返す 503(/app-error)を呼び、CloudWatch のメトリクスで ALB が返したエラーとアプリが返したエラーを見比べます。

前提条件

  • リージョン: ap-northeast-1(東京)
  • EC2・Systems Manager・CloudWatch・CloudShell の操作権限を持つ IAM ユーザーまたはロールでコンソールにログイン済みであること

以下のリソースが作成済みであることを前提とします。まだ用意していない場合は、「作り方の参考」の記事の手順で作れます。リソース名は、この記事の名前に読み替えてください。

リソース種別リソース名内容作り方の参考
VPCsoa-5xx-vpcパブリックサブネット soa-5xx-public-1a / soa-5xx-public-1c の 2 つ。0.0.0.0/0 → インターネットゲートウェイAmazon VPC で仮想ネットワークを構築しサブネットを設定する ※AZ を 2 つにする
IAM ロールsoa-5xx-ec2-roleAmazonSSMManagedInstanceCore をアタッチ(Session Manager で接続するため)AWS Systems Manager でインスタンスをリモート管理する
セキュリティグループsoa-5xx-alb-sgALB 用。HTTP 80 をどこからでも許可Elastic Load Balancing でトラフィックを複数のターゲットに分散する
セキュリティグループsoa-5xx-web-sgEC2 用。HTTP 80 を soa-5xx-alb-sg からだけ許可同上
EC2 インスタンスsoa-5xx-webAmazon Linux 2023・t3.micro・soa-5xx-public-1a。IAM ロール soa-5xx-ec2-role。下記のアプリをサービス soa-5xx-app としてポート 80 で動かしているAmazon EC2 でインスタンスを起動しSSH接続する
ターゲットグループsoa-5xx-tgインスタンス、HTTP 80。ヘルスチェックはパス /・間隔 10 秒・正常/非正常のしきい値 2。登録解除の遅延は 10 秒。soa-5xx-web を登録済みElastic Load Balancing でトラフィックを複数のターゲットに分散する
Application Load Balancersoa-5xx-albインターネット向け、soa-5xx-public-1a / 1c、soa-5xx-alb-sg。リスナー HTTP:80 → soa-5xx-tg。アイドルタイムアウトは既定の 60 秒同上

soa-5xx-web で動かしているアプリは、Python の標準ライブラリだけで書いた小さな Web サーバーです。パスによって次のように応答します。

パス応答
/すぐに 200 で ok from <ホスト名> を返す(ヘルスチェックもここ)
/slow20 秒待ってから 200 で slow ok from <ホスト名> を返す
/app-errorすぐに 503 で 503 from app (<ホスト名>) を返す(アプリ自身が返す 503)
import socket
import time
from http.server import BaseHTTPRequestHandler, ThreadingHTTPServer

HOST = socket.gethostname()


class Handler(BaseHTTPRequestHandler):
    def do_GET(self):
        if self.path == "/slow":
            time.sleep(20)  # 20 秒かかる処理のつもり
            self.reply(200, "slow ok from " + HOST)
        elif self.path == "/app-error":
            self.reply(503, "503 from app (" + HOST + ")")  # アプリ自身が返す 503
        else:
            self.reply(200, "ok from " + HOST)

    def reply(self, code, body):
        data = (body + "\n").encode()
        self.send_response(code)
        self.send_header("Content-Type", "text/plain")
        self.send_header("Content-Length", str(len(data)))
        self.end_headers()
        self.wfile.write(data)


ThreadingHTTPServer(("", 80), Handler).serve_forever()

このハンズオンで変更するリソースは以下のとおりです。新しく作るリソースはありません。

リソース種別リソース名内容
ターゲットの登録soa-5xx-tg の soa-5xx-web登録解除して、登録し直す
サービスsoa-5xx-web の soa-5xx-app停止して、起動し直す
ロードバランサーの属性soa-5xx-alb の接続アイドルタイムアウト60 秒 → 10 秒 → 60 秒

ALB は起動している時間と処理量(LCU)に応じて課金されます。EC2 インスタンスの起動時間と、パブリック IPv4 アドレス(EC2 と ALB の各ノード)にも課金されます。検証が終わったら ALB と EC2 インスタンスを削除してください。

手順 1: 正常な状態を確かめる

AWS マネジメントコンソールにログインし、リージョンが ap-northeast-1(東京)であることを確認します。上部の検索バーに EC2 と入力し、「EC2」を選択します。

左側ナビゲーションの「ロードバランシング」→「ロードバランサー」を選択し、soa-5xx-alb の「DNS 名」をコピーします。

コンソール上部のツールバーにある CloudShell のアイコンをクリックし、CloudShell を開きます。コピーした DNS 名を変数に入れ、ステータスコードと応答までの秒数を表示する関数を用意します。

ALB='soa-5xx-alb-xxxxxxxxxx.ap-northeast-1.elb.amazonaws.com'
hit() { curl -s -o /dev/null -w "%{http_code}  %{time_total}s  $1\n" "http://$ALB$1"; }
hit /
curl -s "http://$ALB/"

200 が返り、本文に ok from とインスタンスのホスト名が表示されることを確認します。

CloudShell で hit / を実行した結果(200 と ok from のホスト名)
CloudShell で hit / を実行した結果(200 と ok from のホスト名)

手順 2: ターゲットを登録解除して 503 を起こす

EC2 コンソールに戻り、左側ナビゲーションの「ロードバランシング」→「ターゲットグループ」を選択して soa-5xx-tg を開きます。「ターゲット」タブで soa-5xx-web にチェックを入れ、「登録解除」をクリックします。

登録解除の遅延(10 秒)が過ぎ、ターゲットの一覧から soa-5xx-web が消えたことを確認します。

soa-5xx-tg のターゲットタブ(登録済みのターゲットが 0 件)
soa-5xx-tg のターゲットタブ(登録済みのターゲットが 0 件)

CloudShell に戻り、もう一度リクエストを送ります。

hit /
curl -s "http://$ALB/"

503 が返り、本文に 503 Service Temporarily Unavailable が含まれることを確認します。この本文はアプリではなく ALB が作ったものです。インスタンスもアプリも動いたままですが、ターゲットグループに振り分け先が無いため、ALB はリクエストをどこにも送れません。

CloudShell で 503 が返った結果(本文に 503 Service Temporarily Unavailable)
CloudShell で 503 が返った結果(本文に 503 Service Temporarily Unavailable)

ターゲットグループ soa-5xx-tg の「ターゲット」タブで「ターゲットを登録」をクリックします。soa-5xx-web にチェックを入れ、ポートが 80 であることを確かめて「保留中として以下を含める」をクリックし、「保留中のターゲットを登録」をクリックします。

ヘルスステータスが Healthy になるまで待ち(画面右上の更新ボタンで再読み込み)、CloudShell で hit / を実行して 200 に戻ったことを確認します。

手順 3: アプリを止めて 502 を起こす

EC2 コンソールの左側ナビゲーションの「インスタンス」から soa-5xx-web を選択し、「接続」→「Session Manager」タブ→「接続」をクリックします。開いたターミナルで、アプリのサービスを止めます。

sudo systemctl stop soa-5xx-app
sudo systemctl is-active soa-5xx-app

inactive と表示されることを確認します。インスタンスは動いていますが、ポート 80 で待ち受けているプロセスがいなくなりました。

CloudShell に戻り、リクエストを送ります。

hit /
curl -s "http://$ALB/"

502 がすぐに返り、本文に 502 Bad Gateway が含まれることを確認します。ALB が接続しようとしたところ、閉じたポートからは TCP RST が返り、リクエストを渡せなかったためです。

CloudShell で 502 が返った結果(本文に 502 Bad Gateway)
CloudShell で 502 が返った結果(本文に 502 Bad Gateway)

ターゲットグループ soa-5xx-tg の「ターゲット」タブを開き、しばらく待って soa-5xx-web のヘルスステータスが Unhealthy になったことを確認します。CloudShell で hit / を何度か実行しても、503 ではなく 502 が返り続けることを確認します。ターゲットがすべて unhealthy になると、ALB はフェールオープンしてすべてのターゲットに振り分けるので、返るのは「ターゲットが無い」503 ではなく「接続を拒否された」502 のままです。

soa-5xx-tg のターゲットタブ(soa-5xx-web が Unhealthy)
soa-5xx-tg のターゲットタブ(soa-5xx-web が Unhealthy)

Session Manager のターミナルに戻り、アプリを起動し直します。

sudo systemctl start soa-5xx-app
sudo systemctl is-active soa-5xx-app

active と表示されたら、CloudShell で hit / を実行し、200 に戻ったことを確認します。ヘルスステータスもしばらくすると Healthy に戻ります。

クラウドおさる

インスタンスは動いているのに 502、というのが今回のミソでござる。門番(ALB)は倉庫の前まで行けたのに、戸が閉まっていて追い返されたのでござるな。こういうときは、インスタンスではなくアプリのプロセスとポートを見に行くのでござる。

手順 4: アイドルタイムアウトより遅い応答で 504 を起こす

まず、既定のアイドルタイムアウト(60 秒)のまま、20 秒かかる /slow を呼びます。

hit /slow

20 秒ほど待ってから 200 が返ることを確認します。応答までの時間はアイドルタイムアウトより短いので、ALB は待ってくれます。

EC2 コンソールの左側ナビゲーションの「ロードバランサー」から soa-5xx-alb を選択し、「属性」タブで「編集」をクリックします。「トラフィックの設定」の「接続アイドルタイムアウト」を、入力欄の分を 0、秒を 10 にして 10 秒に変更し、「変更内容の保存」をクリックします。

soa-5xx-alb の属性の編集画面(接続アイドルタイムアウトが 10 秒)
soa-5xx-alb の属性の編集画面(接続アイドルタイムアウトが 10 秒)

CloudShell で、もう一度 /slow と / を呼びます。

hit /slow
hit /

/slow は 10 秒ほどで 504 が返り、/ はすぐに 200 が返ることを確認します。ALB はターゲットへの接続には成功していますが、アイドルタイムアウト(10 秒)のあいだにアプリから応答が無かったため、待つのをやめて 504 を返しています。アプリは動いているので、速く応答できるパスは成功します。

CloudShell で /slow が約 10 秒で 504、/ が 200 になった結果
CloudShell で /slow が約 10 秒で 504、/ が 200 になった結果

soa-5xx-alb の「属性」タブで「編集」をクリックし、「接続アイドルタイムアウト」を 60 秒(分が 1、秒が 0)に戻して「変更内容の保存」をクリックします。CloudShell で hit /slow を実行し、20 秒ほどで 200 に戻ったことを確認します。

実際の運用では、アイドルタイムアウトを延ばす前に、アプリの処理が遅くなった原因(CPU 使用率、DB などの依存先の遅れ)を確認します。

手順 5: アプリ自身が返す 503 を呼ぶ

CloudShell で、アプリが自分で 503 を返す /app-error を 5 回呼びます。

for i in 1 2 3 4 5; do hit /app-error; done
curl -s "http://$ALB/app-error"

ステータスコードは手順 2 と同じ 503 ですが、本文は 503 from app (<ホスト名>) で、ALB の 503 Service Temporarily Unavailable とは違うことを確認します。ALB はターゲットから正しい形式の応答を受け取ったので、その中身が 503 でもそのままクライアントへ渡しています。

CloudShell で /app-error を呼んだ結果(503 だが本文がアプリの 503 from app)
CloudShell で /app-error を呼んだ結果(503 だが本文がアプリの 503 from app)

手順 6: ALB が返した 5XX とアプリが返した 5XX をメトリクスで見分ける

メトリクスが CloudWatch に反映されるまで数分待ちます。上部の検索バーに CloudWatch と入力し、「CloudWatch」を選択します。左側ナビゲーションの「メトリクス」→「クラシックメトリクス」を選択します。

「参照」タブで「ApplicationELB」→ ロードバランサーごとのメトリクスを選び、検索ボックスに soa-5xx-alb と入力します。次のメトリクスにチェックを入れます。

  • HTTPCode_ELB_502_Count
  • HTTPCode_ELB_503_Count
  • HTTPCode_ELB_504_Count
  • HTTPCode_Target_5XX_Count

「グラフ化したメトリクス」タブで、統計をすべて「合計」、期間を「1 分」にします。手順 2〜5 を実行した時間帯で、手順 2 の 503 は HTTPCode_ELB_503_Count、手順 3 の 502 は HTTPCode_ELB_502_Count、手順 4 の 504 は HTTPCode_ELB_504_Count に数えられ、手順 5 のアプリが返した 503 は HTTPCode_ELB_503_Count ではなく HTTPCode_Target_5XX_Count に数えられていることを確認します。撮影時は、手順 4 の 504 と手順 5 のアプリの 503 を続けて実行したため、HTTPCode_ELB_504_Count と HTTPCode_Target_5XX_Count は同じ 1 分に立ちました。それでも、アプリが返した 503 が HTTPCode_ELB_503_Count には数えられていないことは確かめられます。グラフの時刻は、画面の設定によって UTC かローカル時刻で表示されます。

CloudWatch のグラフ(ELB_502・ELB_503・ELB_504 と Target_5XX がそれぞれ別のメトリクスとして数えられている)
CloudWatch のグラフ(ELB_502・ELB_503・ELB_504 と Target_5XX がそれぞれ別のメトリクスとして数えられている)

同じ「503」でも、HTTPCode_ELB_503_Count が増えたならターゲットグループの登録状況を、HTTPCode_Target_5XX_Count が増えたならアプリのログを見に行く、と調べる場所が分かれます。アラームを作るときも、ALB が返すエラーとアプリが返すエラーは別々のメトリクスで見張ります。

クラウドおさる

502・503・504 を「どれも 5XX」でひとまとめにすると、原因を取り違えやすいのでござる。ターゲットが全滅しても 503 にはならないこと、アプリが返した 5XX は HTTPCode_Target_5XX_Count に数えられることを押さえておけば、症状から確認する場所を選べるのでござるよ。

まとめ

コードALB が返す条件まず確認するところ
503ターゲットグループに登録済みのターゲットが無い、またはすべて unusedターゲットグループの登録状況、Auto Scaling グループとの関連付け、ターゲットの停止
502接続時にターゲットが TCP RST を返した、処理中に接続を閉じられた、応答の形式が不正アプリのプロセスとポート、キープアライブのタイムアウト(ALB のアイドルタイムアウトより長く)、TargetConnectionErrorCount
504接続タイムアウト(10 秒)までに接続できない、アイドルタイムアウトまでに応答が無いセキュリティグループとネットワーク ACL、TargetResponseTime、ターゲットの負荷、アイドルタイムアウトの値
  • ALB が作ったエラーは HTTPCode_ELB_5XX_Count(と HTTPCode_ELB_502_Count などの内訳)、アプリが返したエラーは HTTPCode_Target_5XX_Count に数えられる。統計は Sum で見る
  • ターゲットがすべて unhealthy になると、ALB はすべてのターゲットに振り分ける(フェールオープン)。503 にはならない
  • アプリのプロセスが止まっているだけなら、インスタンスが動いていても 502 になる
  • アイドルタイムアウトは既定 60 秒(1〜4000 秒)。延ばす前に、ターゲットの処理が遅い原因を確認する

参照先

キャリア相談
クラウドおさる

独学の先に、AWS の仕事がある ── ジュニアおさるのキャリア相談

CLF には受かったけれど、次に何をすればいいのか分からない。独学で AWS を学ぶジュニアおさるの相談に、株式会社ジェニュイン代表の土肥が答えています。

  • ✓資格はゴールか、CLF の次に何から手を付けるか
  • ✓EC2 の次に作ってみる構成と、IaC・コスト管理
  • ✓実務経験ゼロでも、面接で話せる「これまで」の作り方
新卒・未経験の方へ
クラウドおさる

AWS を仕事にしたい方へ ── 新卒・未経験から

この記事を書いているのは、AWS の設計・構築を仕事にしている現役エンジニアです。運営元の株式会社ジェニュインでは、新卒・未経験の方も募集しています。異業種や文系からインフラエンジニアになり活躍しているメンバーもいます。

  • ✓システム開発・WEB エンジニア / インフラ構築などの職種で、未経験から応募できます
  • ✓未経験から入社した社員の声を含む社員アンケートを掲載
  • ✓応募フォームから 1 分で応募できます

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

株式会社ジェニュイン(https://genuine-pt.jp)の代表取締役.

2018年〜インフラエンジニアとしてキャリアをスタートし、オンプレミスのネットワーク・サーバ環境で3年半、クラウド環境で4年半の8年間エンジニアとして従事。
2021年に佐藤氏の創業した株式会社Luxyを引き継ぎ、代表に就任。
その後アガルートグループ内の株式会社ジェニュインと合併。
合併後同社代表に就任。

目次