Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ALBの疎通確認をWebサーバーなしでやる
Search
jhashimoto
June 18, 2026
Technology
77
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ALBの疎通確認をWebサーバーなしでやる
JAWS-UG 群馬 #35登壇資料
jhashimoto
June 18, 2026
More Decks by jhashimoto
See All by jhashimoto
SteampipeとExcel Power QueryでAWS構成定義書の作成を自動化する
jhashimoto
0
200
EdgeプロファイルでAWSアカウントを安全に使い分ける
jhashimoto
0
160
初めてのAWS / The first AWS
jhashimoto
0
320
AWS Data Pipelineを本番投入してみた話
jhashimoto
1
1.2k
AWS Lambdaで始めるサーバーレスアーキテクチャ
jhashimoto
0
270
Amazon S3の紹介
jhashimoto
0
310
クラウド最初の一歩
jhashimoto
0
420
Other Decks in Technology
See All in Technology
FinOps X 2026 Recap from Engineer Side #JapanFinOps
chacco38
0
240
AIペネトレーションテスト・ セキュリティ検証「AgenticSec」紹介資料
laysakura
2
7.9k
デジタル・デザイン構想 by Sayaka Ishizuka
y150saya
0
180
ご挨拶「10周年を迎える共創ラボのこれまでとこれから」
iotcomjpadmin
0
180
Text-to-SQLをAgentCoreで実現し、生成されるSQLの精度を定量的に評価する
yakumo
2
400
AWS Summit Japan 2026の振り返りと2027へ向けて / AWS Summit Japan 2026 Recap and Prospects for 2027
kaminashi
1
180
CVE-2026-20833_脆弱性対応とAES 化について
jukishiya
0
350
背中から、背中へ /paying forward to community
naitosatoshi
0
210
AWS Summit 2026で見えたSIerにとっての Amazon Quickの位置づけ
maf_0521
0
150
【FinOps】データドリブンな意思決定を目指して
z63d
3
580
Agentic AI 時代のテスト手法: Kiro とはじめるプロパティベーステスト (AWS Summit Japan 2026 | DEV212)
ymhiroki
0
200
Mastraエージェント、どのクラウドにデプロイする?
minorun365
PRO
2
140
Featured
See All Featured
Fireside Chat
paigeccino
42
4k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.1k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
250
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Amusing Abliteration
ianozsvald
1
220
Marketing to machines
jonoalderson
1
5.5k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
170
エンジニアに許された特別な時間の終わり
watany
107
250k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
340
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.2k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
Transcript
ALB の疎通確認をWeb サーバーなしでやる JAWS-UG 群馬 #35 10 分LT JAWS-UG 群馬
#35 1 / 14
発表者 橋本淳一 フリーランスのクラウドエンジニア 最近都内から栃木に引っ越しました 現在の仕事はEC サイトのインフラ運用 ポートフォリオ: https://lapras.com/public/jhashimoto JAWS-UG 群馬
#35 2 / 14
前提 インフラ担当とアプリ担当が別れている インフラ担当: ALB とEC2 の構築 アプリ担当: EC2 のOS より上のレイヤーを担当
インフラ担当としてALB -> EC2 の疎通確認をして引き渡したい JAWS-UG 群馬 #35 3 / 14
構成 以下の経路を想定。 クライアント │ HTTPS:443 ▼ ALB + ACM │
HTTP:8080 ▼ ターゲットグループ │ HTTP:8080 ▼ EC2インスタンス JAWS-UG 群馬 #35 4 / 14
目的 ALB にリクエストし、ターゲットからのレスポンスが返ることを確認したい ただし、Apache/Nginx 等のミドルウェアはインストールしたくない(インフラの 責務ではないから) テスト例: curl https://my-domain.com/ #
OK JAWS-UG 群馬 #35 5 / 14
問題 Web サーバーのミドルウェアがないとレスポンスが返せない ターゲットグループのヘルスチェックをパスする必要がある 例: ステータス200 を3 回連続で返したら、Healthy JAWS-UG 群馬
#35 6 / 14
案1: nc コマンド (1/2) nc コマンドのシンプルな使い方。 # サーバーで待ち受けておく nc -lk
8080 # クライアントからリクエスト echo "OK" | nc -q 0 {サーバーIP} 8080 -l : Listen モード -k : Keep inbound sockets open for multiple connects. 切断後も同じポートで次の 接続を待ち続ける -q 0 : quit after EOF on stdin and delay of secs. STDIN で EOF 後すぐに閉じる JAWS-UG 群馬 #35 7 / 14
案1: nc コマンド (2/2) 以下をターゲットで実行しておくと、ヘルスチェックをパスでき、リクエストに対し てレスポンスを返せる。 8080 でリッスンし、リクエストに対して200 を返す レスポンスを返した後も、リッスンが継続される
while true; do echo -e "HTTP/1.1 200 OK\r\nContent-Length: 3\r\n\r\nOK\n" | nc -l 8080 done # 以下のレスポンスを返す # HTTP/1.1 200 OK # Content-Length: 3 # # OK # JAWS-UG 群馬 #35 8 / 14
案2: Python でWeb サーバーを立てる (1/2) Python の組み込みHTTP サーバーなら、ワンライナーでHTTP サーバーを起動できる。 JAWS-UG
群馬 #35 9 / 14
案2: Python でWeb サーバーを立てる (2/2) PORT=8080 python3 -c " import
http.server, socketserver, os PORT = int(os.environ['PORT']) class Handler(http.server.BaseHTTPRequestHandler): def do_GET(self): self.send_response(200) self.end_headers() self.wfile.write(b'OK\n') def log_message(self, format, *args): pass # TCPサーバの終了直後にもう一度起動したときの「Address already in use」エラーを避ける # https://www.geekpage.jp/programming/winsock/so_reuseaddr.php socketserver.TCPServer.allow_reuse_address = True with socketserver.TCPServer(('', PORT), Handler) as httpd: print(f'Listening on port {PORT}') try: httpd.serve_forever() # Ctrl + C による KeyboardInterruptを抑制 except KeyboardInterrupt: pass " JAWS-UG 群馬 #35 10 / 14
補足: コマンド実行後にPORT 変数は参照されるか? A: 参照されないので、環境を汚さない コマンドの前に KEY=VALUE の形式で書くことを「パラメータ代入」と呼び(シェルの 機能) 、そのコマンドの実行中だけ環境変数として参照できる。
実験結果: $ PORT=8080 env | grep PORT # PORTを環境変数として参照できる PORT=8080 $ echo ${PORT} # コマンド実行後のシェル自身にはPORTが残っていない(何も出力されない) $ 参考: https://astro.uni-bonn.de/~sysstw/CompMan/gnu/bashref.html#TOC49 JAWS-UG 群馬 #35 11 / 14
リクエストしてみる ローカルホストにリクエストする。 curl http://localhost:8080/my-health-check-path # OK ターゲットのステータスが Healthy になったらドメインに対してリクエストする。 curl
https://my-domain.com/ # OK 確認が終わったら、ターミナルで Ctrl + C して HTTP サーバーを停止する。 JAWS-UG 群馬 #35 12 / 14
まとめ Web サーバーを構成していないターゲットでも、nc コマンドやPython の組み込み HTTP サーバーで疎通確認ができる nc コマンドは手軽だが、ヘルスチェックを通すにはHTTP レスポンスを自分で組み
立てる必要がある Python の組み込みHTTP サーバーなら、ワンライナーでもHTTP サーバーを起動でき る インフラ担当の責任範囲内(ミドルウェア追加なし)で、ALB -> EC2 の疎通確認 が完結できる JAWS-UG 群馬 #35 13 / 14
ありがとうございました JAWS-UG 群馬 #35 14 / 14