【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を簡単に割り当てればなあと思います…。