【AWS】fargateにALBを設定する
既にRoute 53でドメインを取得したり、証明書の発行が済んでいる前提。
EC2ダッシュボードからロードバランサーへ進み、作成を押す。
ALB選択し、各種設定をしていく。
ロードバランサーの設定
適当な名前を付け、インターネット向けを選択。
今回はHTTPS通信を可能にしたいものなので、リスナーのプロトコルをHTTPSの443番ポートに。
アベイラビリティーゾーンはとりあえず全てを選択する。
セキュリティ設定の構成
基本デフォルトのままでいい。
ACMからの発行された対象の証明書を選択していることを確認。
セキュリティグループの設定
ロードバランサー用のセキュリティグループがないのであれば、新しいセキュリティグループを作成を押し、次へ。
ルーティングの設定
ALBの配下にある対象のインスタンスだったり、Fargateなどの設定を行う。
ターゲットの種類をIPにする。(EC2インスタンスの場合はインスタンス)
ALBとFargateの通信なので、ここでのプロトコルはHTTPの80番ポートに設定する。
※もし、ALBの作成後にターゲットグループにある登録したターゲットのステータスがhealth checks failed with these codes: [数字]みたいな風になっていたら、下のヘルスチェックの詳細設定から成功コードを表示された数字にしてみる。
ターゲットの登録
ALBと結びつけるターゲットを選択する。
Fatgateの起動しているタスクのプライベートIPを入力しておく。
これで作成する。
次はRoute 53で取得したドメインを使ってHTTPS通信を行うための設定
Route 53のダッシュボードから名前がwww.ドメイン名と登録した箇所を押し、エイリアスをはいに設定、エイリアス先から先程作成したALBを選びレコードセットを保存する。
Fargateの固定IPについて
現状、FargateのIPを固定化する(ElasticIPを割り当てる)ことは出来ないっぽいので
タスクが入れ替わる度にプライベート、パブリックの両方のIPが動的変化します。
無理やり固定化するためにはNATゲートウェイなどを使えばできるそうですが
https://qiita.com/tonishy/items/810950dec4f1ae0d761f
結構費用がかかるらしいので、手を出しづらい部分であります。
一応タスクが変化し、IPが変わったときの対処としては
EC2ダッシュボードからロードバランシングのターゲットグループ、
ターゲットタブから編集を押し、新しいタスクのプライベートIPアドレスを登録し、既存のものは解除してあげれば大丈夫です。ただ、これをすると反映には多少時間がかかるみたいなので、ElasticIPを簡単に割り当てればなあと思います…。