awsで8080にアクセスできない原因と対処法を詳しく解説

目次

はじめに

目的

本書は、AWS環境で「ポート8080にアクセスできない」問題の原因と解決手順を体系的に示します。EC2やECS/FargateでWebアプリが8080で待ち受けているのに外部から見えないときに、順序立てて確認できるように設計しました。

対象読者

開発者、運用担当者、クラウド利用の初中級者を想定します。AWSの基本操作(コンソールやSSH)が分かれば読み進められます。

想定環境とよくある症状

想定は、アプリがポート8080でリッスンしているサーバやコンテナです。症状例:ブラウザで http://:8080 にアクセスできない、curlで接続がタイムアウトする、など。

本書の構成(全5章)

  1. はじめに(本章)
  2. 全体像:確認すべきレイヤーのまとめ
  3. アプリ/OS側の確認方法
  4. インスタンス内ファイアウォール確認
  5. AWSセキュリティグループ等の設定確認

使い方

問題発生時はまず第2章で全体像を把握し、その後順に各章の手順で検証してください。作業前にログ取得と設定のバックアップをおすすめします。

AWSで「8080にアクセスできない」ときにまず押さえる全体像

はじめに

EC2上のSpring BootやTomcatが8080で動いているのに外部からアクセスできない、ECS/FargateのコンテナがALB経由でも応答しない、ローカルでは動くがAWS上ではタイムアウトする――こうした事例がよくあります。原因は一箇所ではなく、順を追って確認すると短時間で直ることが多いです。

典型的な状況(具体例)

  • EC2でアプリは起動しているがブラウザでタイムアウト
  • ECSのタスクはRUNNINGだがALBのターゲットがunhealthy
  • ローカルのDockerではアクセスできるがAWSでは接続拒否やタイムアウト

原因は大きく四つのレイヤー

  1. アプリ/OSレベル:アプリが本当にポート8080で待ち受けしているか、localhostだけでバインドしていないかを確認します(例:Spring Bootが127.0.0.1でバインドしている)。
  2. インスタンス内ファイアウォール:iptablesやufwで8080がブロックされている場合があります。
  3. AWS側(セキュリティグループ/ALB):セキュリティグループのインバウンドやALBのリスナー/ターゲット設定を確認します。
  4. ネットワーク設計ミス:サブネットのルーティング、NACL、プライベートサブネット配置など経路が正しいかを確認します。

優先して確認する順序(実行しやすいチェック)

  1. インスタンス内部からcurl http://localhost:8080 で応答を確認
  2. ポートの待ち受け確認:ss -lntp | grep 8080 または netstat -tlnp
  3. ファイアウォール確認:sudo iptables -L / sudo ufw status
  4. 別のホストから接続確認(EC2なら別のインスタンスや踏み台からcurl)
  5. セキュリティグループで8080が許可されているか、ALB経由ならターゲットのヘルスチェック設定を確認
  6. コンテナの場合はポートマッピング(ホスト側とコンテナ側のポート)やタスク定義を確認

最初に上から順に確認すると、原因の切り分けが速く行えます。次章ではアプリ/OS側での確認方法を詳しく説明します。

アプリ/OS側で「8080」が本当に開いているか確認する

確認の狙い

ポート8080でアプリが待ち受けているかを確かめます。外部から届かない原因は、アプリが起動していない、別プロセスが占有している、あるいはローカルのみでしか聞いていない場合が多いです。

ポート競合の症状とログ例

起動時に「EADDRINUSE」などのエラーが出ます。例:
Error: listen EADDRINUSE: address already in use :::8080
この場合は同じポートを別プロセスが使っています。

実際に使うコマンド

  • EC2上(またはコンテナ内で)
    sudo lsof -i :8080
    sudo netstat -tulpn | grep 8080
    または
    ss -tulpn | grep 8080
    これでプロセス名とPIDが分かります。

ECSタスク(Fargate含む)では、タスク内に入って同様のコマンドを実行するか、aws ecs execute-commandでシェルを取得して確認します。

バインド先(アドレス)の違い

  • 127.0.0.1(localhost):そのホスト内からのみ接続可能です。
  • 0.0.0.0:全てのネットワークインターフェースで接続を受け付けます。

外部からアクセスさせるにはアプリを0.0.0.0でリッスンさせます。設定例:
– Node.js: app.listen(8080, ‘0.0.0.0’)
– Flask: app.run(host=’0.0.0.0′)
– Spring Boot: –server.address=0.0.0.0

またコンテナを使う場合は、コンテナ側が0.0.0.0で待ち受け、ホスト側のポートマッピング(-p 8080:8080)を確認してください。

簡単な確認手順

  1. インスタンス内で lsof/ss でポート確認
  2. ログにEADDRINUSEなどが無いか確認
  3. アプリのバインド先が0.0.0.0か確認
  4. コンテナならポートマッピングを確認

以上を順に確認すれば、アプリ/OS側の問題は絞り込めます。

インスタンス内ファイアウォールの確認

背景

EC2やオンプレのインスタンスにはOSレベルのファイアウォール(iptables、firewalld、ufwなど)が動作します。AWSのセキュリティグループが開いていても、OS側でブロックされていれば外部からアクセスできません。両方のレイヤーを必ず確認してください。

確認手順(基本)

  • ポートがアプリでリスンしているか確認: ss -tlnp | grep 8080(または netstat -tlnp
  • firewalldの状態: sudo systemctl status firewalld
  • iptablesのルール確認: sudo iptables -L -n -v
  • ufwの状態確認(Ubuntu等): sudo ufw status

firewalldでの具体例(ポート8080を開放)

  1. 永続的に追加: sudo firewall-cmd --permanent --add-port=8080/tcp
  2. 設定反映: sudo firewall-cmd --reload
  3. 確認: sudo firewall-cmd --list-ports または sudo firewall-cmd --list-all

iptables/ufwでの簡単な例

  • iptablesで一時的に許可: sudo iptables -A INPUT -p tcp --dport 8080 -j ACCEPT(永続化はディストロにより手順が異なります)
  • ufwで許可: sudo ufw allow 8080/tcp

チェックの順序と注意点

  1. アプリのリスン確認→2. OSファイアウォール確認→3. AWSセキュリティグループ確認の順で確認すると効率的です。OS側の変更は即時反映されますが、誤って不要なポートを開かないよう最小限に留めてください。

AWSセキュリティグループで8080が開いているか

概要

セキュリティグループはインスタンスやサービスへの出入り口を制御します。インバウンドでTCPポート8080を許可するかどうかがポイントです。ここでは直接アクセスとALB経由の2通りを分かりやすく説明します。

直接アクセス(Public IP:8080)の例

  • 必要設定: 対象インスタンスのセキュリティグループでインバウンドにTCP 8080を追加します。ソースはアクセス元IPに限定してください。
  • 実例: 自宅からだけアクセスするなら自宅の固定IP/32を指定。全世界からのアクセス(0.0.0.0/0)は避けます。

ALB経由の構成例

  • ALB側: クライアントからのHTTP/HTTPSを許可(通常はポート80/443、ソースは0.0.0.0/0が一般的)。
  • インスタンス側: ALBのセキュリティグループをソースにしてTCP 8080を許可します(セキュリティグループIDを指定)。これで外部から直接8080へ繋がらず、ALB経由だけ許可されます。

設定の確認とテスト方法

  • コンソール: EC2 > セキュリティグループ > 当該SGの「インバウンドルール」を確認。
  • CLI例: aws ec2 describe-security-groups –group-ids sg-xxxxxxxx
  • 動作確認: 直接アクセスなら curl http://:8080 、ALB経由ならALBのFQDNへアクセスします。

守るべきポイント

  • 必要最小限のアクセスに限定する。
  • ALBとインスタンスでSGを分け、SG参照(ID指定)で許可する。
  • 問題の際はセキュリティグループの設定に加え、OS側ファイアウォールとアプリのポートを合わせて確認してください。
よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

目次