📑

awsでhpps化することで、安心して夜を過ごしたい!

に公開

この記事の対象

httpでとりあえずデプロイできている人。

hpps化するために必要なこと

  1. AMS(AWS Certificate Manager)でSSl証明書を取得する
  2. (してなかったら)冗長性を持たせる
  3. ALB(Application Load Balancer)を作成し、https化する

1. ACM(AWS Certificate Manager)でSSl証明書を取得する

  1. AWSのコンソールでACMを開く。
  2. [リクエスト]ボタンを押す
  3. ドメイン名には、https化したいドメインを、検証方法はDNS検証を、キーアルゴリズムはRSA 2048を選択してリクエストする
  4. ドメインを外部から購入しているときは、ここで終わりではなかった!!(私はここでハマっておりました、、)
  5. https://qiita.com/miyuki_samitani/items/0d595ea63b805de1ffa1 ←こちらの記事を参考にホストゾーンを作成
  6. ホストゾーンから対象のドメインの「レコードの作成」を押す
  7. 「CNAME 名」と「CNAME 値」をDNSレコードとして作成する。(自動でいい感じに出てくる)
  8. しばらくしてACMを開くと証明書が取得できる!!

2. 冗長性を持たせる

ALBを使用するには、アプリケーションが冗長性を持っていないといけません、、
AWSにおいて、冗長性を持たせるとは、複数のアベイラビリティーゾーンにデプロイすることを指すことが多いです。ここでは、複数のアベイラビリティーゾーンにデプロイする手順を書いていきます。

別のインスタンスを立ち上げて、そこに対してデプロイを行うと、冗長性を持たせるだけデプロイを行わなきゃいけなくてめちゃ大変です。デプロイされた状態のEC2をコピーできる、AMIという機能を使います。

事前準備
既存のアベイラビリティーゾーンとは異なる、アベイラビリティーゾーンにおんなじ感じでサブネットを作成する。

  1. EC2を開く
  2. コピーしたい(デプロイされた状態のコピーしたい)を選択
  3. 「アクション」から「イメージとテンプレート」→「イメージを作成」を押す
  4. イメージの名前は「(コピーしたいEC2インスタンスの名前)-2024-0505」みたいな日付にするのがベストプラクティスっぽい
  5. あとはデフォルトのまま、「作成」ボタンを押す
  6. 次に、「AMI」から作成したAMIを選択して、「AMIからインスタンスを起動」を押す
  7. キーペアには元々のやつと同じやつ、セキュリティグループも元々のやつと同じやつ
    ネットワーク設定で、VPCは元々のやつと同じやつ、サブネットは、事前準備で作成したやつ、パブリックIPの自動割り当ては「有効化」にして「インスタンスの有効化」を押す

これで完了!!

3. ALB(Application Load Balancer)を作成し、https化する

まずはターゲットグループを作る

  1. ターゲットタイプの選択は「インスタンス」、プロトコルは「HTTP」、ポート番号は「80」、VPCは元々のやつ、プロトコルバージョンは「HTTP1」で「次へ」を押す
  2. 使用可能なインスタンスに出てきたやつを確認、合ってたら選択して、「保留中として以下を含める」を押す
  3. ターゲットを確認で飛ばしたいインスタンスが追加されてたら、ターゲットグループを作成を押す

ロードバランサーを作成

  1. EC2を開く
  2. ロードバランサーを選択して、「Application Load Balancer」を選択
  3. ネットワークマッピングで、2つのアベイラビリティーゾーンの対象のサブネットを選択する。
  4. セキュリティグループは、新しいセキュリティグループを作成する。ルールは、「IPv4」「HTTP」「80」「0.0.0.0/0」、「IPv4」「HTTPS」「443」「0.0.0.0/0」にする。(HTTPかHTTPSだったらどんなIPアドレスからの通信でも受け付けますよってこと)作ったやつを選択する。
  5. リスナーとルーティングは、一旦「HTTPS」「433」「作成したターゲットグループ」証明書のところで「取得した証明書」を選択で作成
  6. 作成したロードバランサーを選択、リスナーとルールから、「リスナーの追加」を押す
  7. 「HTTP」「80」にして、アクションのルーティングは「URLにリダイレクト」、プロトコルは「HTPS」、ポートは「433」にして「追加」を押す

これで終わり!おやすみ!

Discussion