🐈

[API構築9]ECS(fargate)をHTTPSでWEB公開

2023/09/09に公開

概要

aichatbotをECS上にデプロイでき、httpでアクセスできた。
LINE チャットに組み込むために、httpsとドメインの設定を行いたい。

  • 設定:kebokko.com
  • 設定:aichatbot.kebokko.com

参考
https://note.com/sskr2022/n/n7cd75c6f041f

コンテナ起動

以下の記事でECSのコンテナを起動済み。
https://zenn.dev/tofucode/articles/33e34d7fcdbbdd

タスクを選択し「選択されたものを停止」した。

停止状態

ドメインの準備

ドメインがなければ買う。AWSならRoute53から。
https://us-east-1.console.aws.amazon.com/route53/v2/home#Dashboard

どのドメインが空いているかはdomainrで調べる。
https://domainr.com/

ホストゾーンを作る。ドメインをRoute53で買った場合は一緒についてくる。

AWS Certificate Managerで証明書を発行する。
https://ap-northeast-1.console.aws.amazon.com/acm/home?region=ap-northeast-1#/welcome

ECSサービスを起動

以前起動したサービスとは別に、以下の設定でECSのサービスを起動する。

環境

そのまま

デプロイ設定

以下を設定する。

項目
アプリケーションタイプ サービス
ファミリー aichatbot-dockerhub-task-familly
リビジョン 最新
サービス名 aichatbot-service-https
サービスタイプ レプリカ
必要なタスク 1
詳細

ネットワーキング

以下を設定する。

項目
VPC aichatbot-vpc(クラスターを作ったときと同じVPC)
サブネット 選択されたまま
セキュリティグループ 既存のセキュリティグループを使用(以前作ったものを選択する)
パブリックIP オン
詳細

ロードバランシング

以下を設定する。

項目
ロードバランサーの種類 Application Load Balancer
ロードバランサー指定を選択 新しいロードバランサーの作成
ロードバランサー名 aichatbot-lb
ロードバランス用のコンテナの選択 aichatbot-dockerhub-container 80:80
リスナー指定を選択 新しいリスナーを作成
ポート / プロトコル 443 / HTTPS
証明書を選択 ACM証明書から選択
証明書 kebokko.com
ターゲットグループの選択 新しいターゲットグループの作成
ターゲットグループ名 / プロトコル aichatbot-tg / HTTP
ヘルスチェックパス / プロトコル / / HTTP
詳細

ホストゾーンの編集(サブドメイン作成)

ホストゾーンにレコードを追加する

項目 備考
レコード名 aichatbot aichatbot.kebokko.comになる
レコードタイプ A
エイリアス ON
トラフィックのルーティング先 Application Load Balancer と Classic Load Balancerへのエイリアス

東京 ap-northeast-1

aichatbot-lb(作成したロードバランサーのエイリアスを選択)
ルーティング シンプルルーティング
ターゲットへのヘルスを評価 いいえ
詳細

セキュリティグループを編集

EC2となっているがECSで読み替える

VPCのセキュリティグループを開く
https://ap-northeast-1.console.aws.amazon.com/vpc/home?region=ap-northeast-1#SecurityGroups:

HTTP:80はあるはず。
HTTPS:443 → 0.0.0.0/0 を追加する。

ロードバランサーの編集

以下を行う。

  • httpsでサブドメインへは正しくアクセスできる
  • httpでのサブドメへのアクセスはhttpsにリダイレクトさせる
  • IPアドレスを直接指定したアクセス:403エラーを返す
  • ロードバランサーのDNS名を指定したアクセス:403を返す

HTTPをリダイレクするトリスナーを追加

EC2 > ロードバランサーを開き「リスナーの追加」から以下を追加する。

項目
プロトコル HTTP
ポート 80
アクションの種類 URLにリダイレクト
URLにリダイレクト URI部分
プロトコル HTTPS
ポート 443
詳細

リスナールールの編集

以下のルールを追加する。

ルール1

項目
ルール名 ルール1
条件 ホストヘッダーがaichatbot.kebokko.com
アクション URLにリダイレクト、URI部分、HTTPS/443

動作確認

ブラウザから https://aichatbot.kebokko.com にアクセスする。

できた!!

やったあ!!

感想

ECSへのデプロイもhttps化もやったことがあったから出来はしたが、結構長いし設定も多いので時間がかかった。半日かかってしまった。

GitHubで編集を提案

Discussion