ALBのターゲットのヘルスチェックがUnhealthyになっていた件
プライベート環境でTerraformでALBやEC2を作成してターゲットグループにEC2を登録した時にステータスが「Unhealthy」となっていたので原因調査しました。
簡単に事象の整理。
まず、原因の当たりを見つけます。
Target Health の詳細理由を確認。
Health checks failed
「Health checks failed」となっており、ポート/プロセスのbindミスでした。
通常のヘルスチェックが失敗(= ALB から見てターゲットに到達できない/200を返せていない)可能性が高いです。
- サブネットの配置ミス
EC2に接続してポートの接続確認しようとしたところこんなエラーが。

そもそもネットワークを誤ってプライベートのサブネットに配置していました。
ALBを該当AZのパブリックサブネット、EC2は到達可能なサブネットに修正しました。
- アプリインストール&起動漏れ
修正後、エラーが解消され接続できるようになったのでEC2に接続しポート状況確認します。
# 80番でLISTENしているか(0.0.0.0 でバインドか)
反応なし
→ :80でLISTENしていない
# ローカル疎通(正常200が返ってくるか
000が返ってくる
→ ローカルからもHTTP応答なし
ネットワーク以前に、アプリ/HTTPサーバが起動していないことが原因だと分かりました。
しまった、そもそも元となるHTTPサーバをインストール&起動していなかった。
ということでnginxをインストール&起動することに。
今回はOSはAmazon Linux2なのでそのやり方でインストールします。
動いているか正常性します。
Server: nginx/1.28.0
SG/NACLは最後に軽く再確認し、設定に問題ないことを確認しました。
すると、「Unhealthy」から「Healthy」に変更されていました。

正常です。
初歩的なミスですが備忘として残しております。
Git pushでファイル容量が多いエラーが出た時にやったこと
git pushでローカルリポジトリをpushした時にエラーが出ました。
重いファイル置いてたっけ?と思い調べてみます。
しまった確かに容量が多かった。
Git管理下に置く必要のないファイルだった為、.gitignoreに除外するファイルを追記しました。
しかし、エラーが解消されず。
原因は2つありました。
【原因1】
Gitの管理下におきたくないファイルとして指定したはずの.terraform/ 以下の provider ファイルが無視されていませんでした。
どうやら.gitignore に書かれていても、すでに一度 git add してしまっていた為無視されないらしいです。
そもそも .terraform は ステート管理や provider バイナリが入っている作業ディレクトリなので、Git で管理すべきではないのに入れてしまっていたようです。
見逃してそのままgit addしてしまっていました。
【対応策1】
先述の通り、 .gitignore に除外設定を入れます。
次にすでに Git に追加済みの .terraform を管理対象から除外します。
ここまで問題なく出来ました。
【原因2】
.git/ フォルダの中の巨大ファイル(packファイル)がありました。
.git/ フォルダ自体は Git 本体が内部的に使うフォルダで、常に管理対象外かつ自動的に使用されます。
Git にコミットされた大容量ファイルがあると、それを圧縮した .pack ファイルとして .git/ に保管されます。
今回「過去に commit した大きすぎるファイル」が原因で、.git/ 内が肥大化している状態になっていました。
まず.git/ が肥大化している原因ファイルを特定します。
# 履歴を含めた Git オブジェクトのサイズを調査
【対処法2】
履歴に入り込んだ大容量ファイルの削除(BFGを使う)を行います。
BFGを使うためインストールします。
今回はMacを使用していた為Macのコマンドです。
手順例(サイズ削減)
# BFG Repo-Cleaner を使う(Javaが必要)
# 例:全 `.zip` ファイルを履歴から除外
# または特定ファイルだけ指定
# 履歴を再構成したあと必要
問題なく実行できました。
ついでに.gitignore を最適化しました。(最初にやっておくべき)
最後にリポジトリサイズを確認します。
160K .git
容量が減って、git pushしても問題なく通りました。
最初にgit pushする前に除外設定やそもそも不要なファイルを置かないことが大事だと学びました。
Github Pagesで独自ドメイン設定する時に失敗したこと
Git hub pagesに静的サイトを作成しました。
独自ドメインをお名前.comで取得した為、静的サイトに反映させることに。
しかし、いくつか初歩的なミスをしてすぐ反映できなかった為備忘として記録します。
- 失敗したこと
1. リポジトリをpublicにするのを忘れていた
一時的にリポジトリをprivateにしていたのですが、public公開に戻すのを忘れていました。
さっきまであったGit hub PagesのPage項目で独自ドメインの設定画面が消えていたので焦りました。

再度public公開に変更したらGithub Pageの設定画面に戻りました。

2. 公開元のルート直下に CNAME ファイルを配置していない
git pushでリポジトリに更新かける度にGithub PagesのCustom domainの独自ドメインが削除されてしまい、独自ドメインでアクセス出来なくなっていました。
焦って調べると、公開元(main/docs/gh-pages など)のルート直下にCNAMEファイルを配置する必要があることを知りました。
CNAMEファイルの中には独自ドメイン(例:xxx.com)を記載する必要があります。
ファイルを作成してそのファイルもgit push
その後git pushしてリポジトリ更新しても独自ドメイン設定が消えませんでした。
githubやドメイン周りの知見が乏しいので勉強していきたいです。
VSCodeのサイドバーのエクスプローラーが問題ないのに赤色になっていた件
VSCodeでTerraformの作業をしていたある日のこと、変更していないフォルダが赤色になっていました。
子階層のフォルダやファイルに問題があるのかなと確認しましたが特に問題なく、原因が掴めないです。

原因切り分けと事象解消の為以下を実施しました。
1. terraform init しなおす
大分terraformのコードを改修していたので、一度該当の階層にてinitし直しました。
それでも解決しませんでした。
2. git status -s で状態確認
Git由来か確認する為、git statusで状態確認をします。
差分があればその差分を解消すれば直るかも。
特に差分も発生していませんでした。
3. 念のためgit push した
git pushして問題なくpush &merge出来るか確認。
問題なく通りました。
4. VSCodeを再起動してみる
ここまで見て原因が分からなかった為再起動しました。
すると直りました。

VSCodeにキャッシュ的な履歴が残っていたのだろうか。
コードもGitもTerraformも問題ない場合は一度VSCodeを再起動してみると直るパターンもあるのでメモしました。