Elastic Beanstalkで単一インスタンスで動くアプリをHTTPS化する

今回の問題点

Elastic Beanstalk(EB)でHTTPS化をするときはCertificate Managerで発行した証明書をロードバランサーに組み込むのが定石かと思います。

docs.aws.amazon.com

しかし、今回新たにEBで動くアプリをHTTPS化しようとしたところ、以下の通りロードバランサーの設定ができなくて困りました。

f:id:alek3:20181130131906p:plain

これが今回の問題点です。

なぜこのような画面が出ているかというと、単一インスタンスで動かしていて、ロードバランシングしていないためです。

調べてみると単一インスタンスで愚直にHTTPS化をしようとするとけっこう大変だということがわかりました。(参考

せっかくCertificate Managerで作った証明書が使えないというのが大きな痛手です。

対処法

調べてわかった対処法は以下の通りです。

  • 設定の「容量」を変更する

  • Auto Scaling グループの「環境タイプ」を「単一インスタンス」から「負荷分散」にする

  • インスタンスの最小・最大数は任意だが、1つでいいならどちらも1を設定する

「続行」をクリックすると、ロードバランサーの設定ができるようになります。なお適用を押すと更新処理が始まってしまい、キャンセルを押すと最初からやり直しになるので注意してください。*1

対処法は以上になります。

なお、今回の対処法に気づいたきっかけは以下の記事です。

medium.com

特にこの画像です。

f:id:alek3:20181202120724p:plain

Load Balancerの表示がまさに自分自身と同じ状況で、この後当然のようにHTTPS化していたので非常に参考にさせていただきました。

気づき

画像大事!

*1:今回の場合は適用を押しても確認の警告が出るので問題ない。キャンセルは環境セットアップの時に押してしまい、色々書いてた設定がやり直しになって泣いた。