AWSとHTTPプロトコル

AWSセキュリティグループの“HTTPプロトコル”は実体何?
TCP指定と何が違うのか調べてみた

はじめに

AWSでセキュリティグループを設定する際、「HTTP」や「HTTPS」といったプロトコル名を指定できます。ネットワークに慣れている方なら「これってTCP:80とか443ってことでは?」と気づくでしょう。

今回は、ふと「HTTPプロトコルを指定する意味って何?TCPでよくない?」と思ったので、動作を検証しつつ整理してみました。

セキュリティグループで選べる「プロトコル」

セキュリティグループのルール作成画面で表示されるプロトコルの一例:

たとえば「HTTP」を選ぶと、以下の設定が自動で適用されます:

項目
プロトコルTCP
ポート範囲80

実体は単なるショートカット

実際には、HTTPというラベルは TCP:80 を示すテンプレート にすぎません。AWS CLIなどで確認しても、内部では以下のように扱われています。

{
  "IpProtocol": "tcp",
  "FromPort": 80,
  "ToPort": 80,
  "IpRanges": [{ "CidrIp": "0.0.0.0/0" }]
}

TCP指定との違いは?

マネジメントコンソールで「HTTP」を選んだときと「カスタムTCP」でポート80を入力した場合の比較です:

項目 HTTP指定 カスタムTCP指定(ポート80)
プロトコルTCPTCP
ポート範囲8080
挙動同じ同じ
UI表示HTTPカスタムTCP

なぜ“HTTP”という選択肢があるのか?

まとめ

セキュリティグループの「HTTP」や「HTTPS」といったプロトコル指定は、実際には単なるTCPポート番号のテンプレートにすぎません。
挙動に差はなく、TCP:80 と明示するのと完全に同じです。

おまけ:個人的な考察

HTTPってアプリケーション層(L7)のプロトコルですよね。セキュリティグループはL4制御。なのに“HTTP”っていう選択肢が出てくるのって、よく考えると面白い仕様です(笑)
UIの親切設計と実装のシンプルさが、絶妙にバランスしてる好例かもしれません。
TECH BLOG BY OZAKI