初めての AWS で Laravel API をデプロイしてみた！ - 第 3 弾：IP アドレス編

# 1. はじめに
私は2023年10月より、内定直結型エンジニア学習プログラム「アプレンティス」に2期生として参加しています。

https://apprentice.jp/

AWS について学んだので、Laravel API を AWS でデプロイする方法についてまとめました。
AWS に初めて触れる方の参考になれば幸いです。

### シリーズ一覧
長編になっているので、複数の記事に分けて公開しています。
本記事はその第 3 弾です。

1. [サーバー設置編](https://qiita.com/mosyaneko/items/0788e1011b792f137d5b)
2. [サーバー接続編](https://qiita.com/mosyaneko/items/55e75ee5a96920db5981)
3. IP アドレス編  ★本記事!!
4. [データベース編](https://qiita.com/mosyaneko/items/182438555c7d23e5a3e9)
5. [アプリケーション起動編](https://qiita.com/mosyaneko/items/f221be0fc56c270ee5fe)
6. [Webレイヤ冗長化編](https://qiita.com/mosyaneko/items/b85d0e7bb633a42eb9e4)
7. [SSL 化編](https://qiita.com/mosyaneko/items/d6c6b63c35f9868858be)

# 目次
[1.はじめに](#1-はじめに)
[2.IP アドレスの固定](#2-IPアドレスの固定)
[3.ドメインの登録](#3-ドメインの登録)

# 2. IPアドレスの固定
先述したように、現状では、EC2 は、起動・停止すると別の IP アドレスが動的に割り当てられる仕様になっています。
いつも同じアドレスでアクセスできるようにするためには、Elastic IP アドレスを利用します。
## Elastic IP アドレスとは
Elastic IP アドレスは、インターネット経由でアクセス可能な固定グローバル IP アドレスを取得でき、EC2 インスタンスに付与できるサービスです。
※注意※
料金の発生要件が分かりづらいです。
Elastic IP アドレスは、EC2 インスタンスに関連付けられていて、そのインスタンスが起動中であれば無料のようです。逆に、インスタンスが停止していたり、インスタンスに関連付けられていない場合には、料金が発生するということになります。
発生する料金に関して責任が持てないため、詳しくはご自身でご確認をお願いします。

## Elastic IP アドレスの確保
Elastic IP アドレスを確保することを、「Elastic IP アドレスを割り当てる」と表現します。
割り当てを行うために、EC2 ダッシュボードに移動します。

左メニューから「Elastic IP」をクリックし、「Elastic IP アドレスを割り当てる」から手続きします。

![スクリーンショット 2024-02-09 2.44.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3070527/08977b7d-3bf3-bb0d-b321-ef73ad2f5d37.png)

ネットワークボーダーグループが、東京リージョンである「ap-northeast-1」になっていることを確認し、後はデフォルトの設定のままで「割り当て」をクリックします。
![スクリーンショット 2024-02-14 18.58.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3070527/b33cabf8-b9ae-83ce-830d-71c5f2018851.png)
### Elastic IP の関連付け
割り当てられた Elastic IP アドレスを、EC2 インスタンスのパブリック IP アドレスとして利用するには、EC2 インスタンスに紐付ける必要があります。

割り当てられた Elastic IP アドレスにチェックを入れて、「アクション」プルダウンから「Elastic IP アドレスの関連付け」を選択します。
![スクリーンショット 2024-02-14 19.00.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3070527/a58b574b-5f79-8a6a-e8ba-81fd92c370c3.png)

EC2 インスタンスに紐付けたいので、リソースタイプは「インスタンス」を選択し、作成した EC2 インスタンスを選択します。

「プライベート IP アドレス」のところは、EC2 インスタンスのプライベート IP アドレスが表示されるので、それを選択します。
![スクリーンショット 2024-02-14 19.28.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3070527/651974c9-8bf9-fe72-a4c7-242b1e77d7c5.png)
「関連付ける」をクリックします。

EC2 インスタンスのパブリック IP アドレスを改めて確認すると、関連付けた Elastic IP アドレスになっていることが分かります。

Elastic IP アドレス（EC2 インスタンスのパブリック IP アドレス）をブラウザに入力して、先程の Apatch の画面にアクセスできることを確認してください。

# 3. ドメインの登録
今まで IP アドレスを直接入力してブラウザからアクセスしていましたが、IP アドレスとドメインを紐付けて、ドメインでアクセスできるようにします。

独自ドメインの契約の仕方についてはここでは触れません。
ドメイン契約済みという前提で進めます。

## Route 53 とは
AWS では、IP アドレスとドメインを紐付ける DNS の役割を **Route** **53** が担っています。
Route 53 では、**ホストゾーン**というものを作成し、その中に**レコードセット**を登録することで、ドメイン名と IP アドレスの紐づけることができます。

### ホストゾーンの作成
サービス検索窓に「Route53」と入力し、Route 53 のダッシュボードに移動します。
「ホストゾーンの作成」をクリックします。
![スクリーンショット 2024-02-14 20.01.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3070527/9cd3f1b9-e78a-23d3-0af9-6c30e7a78d49.png)

独自ドメインを入力します。
インターネットに接続するので、パブリックホストゾーンを選択します。
![スクリーンショット 2024-02-09 18.44.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3070527/58651469-b3ec-2cc1-148b-4146ff147c5a.png)
「ホストゾーンの作成」をクリックします。

作成したホストゾーンをクリックして詳細画面を確認します。
![スクリーンショット 2024-02-09 18.48.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3070527/7e200d12-773c-01f5-1606-0b3b01d3d822.png)
最初からレコードが２つ登録されています。

「タイプ」が「NS」となっている方のレコードを選択します。

![スクリーンショット 2024-02-09 18.50.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3070527/01dec36f-25a8-4b79-01b4-d5eee1a26da0.png)
「レコードの詳細」画面の「値」欄に、４つのネームサーバーが登録されています。
このネームサーバーを、ドメインの管理サイト側で DNS レコードに登録することで、ドメインが IP アドレスに解決されるようになります。

私は Xserver のドメインを利用しているので、ここでは Xserver の管理画面から、DNS レコードを登録する方法を解説します。

## Xserver サーバーパネルから DNS レコード設定
Xserver サーバーパネルにアクセスし、「ドメイン」欄の「DNS レコード」をクリックします。

![スクリーンショット 2024-02-14 21.20.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3070527/cad634b4-8dab-1d75-6b1b-8e540b91e17a.png)

ドメイン選択画面で、対象のドメインを選択して進みます。

「ホスト名」の空欄は、今回対象とするドメインがサブドメインの場合に入力します。
ちなみに私はサブドメインを利用しているので、ここにサブドメイン名を入力しました。

![スクリーンショット 2024-02-14 21.25.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3070527/eb38b2cc-c33d-ec73-5c03-0e8bfe47f3c8.png)
「種別」は「NS」（ネームサーバー）を選択します。
「内容」の部分に、先程確認した NS レコードの値を一つ入力します。
「TTL」はデフォルトで大丈夫なようです。
「確認画面へ進む」から登録します。
これを、NS レコード ４ つ分繰り返します。
4 つ登録できたら完了です。
DNS レコードの反映には少し時間がかかるので、その間に AWS 側に戻って A レコードを登録します。
（ドメインの会社によっては、数日かかる場合もあるそうです。）

## A レコードの登録
ドメインに IP アドレスを紐付けるため、EC2 インスタンスのパブリック IP アドレス（Elastic IP）をコピーしておきます。
AWS の Route 53 ダッシュボードに戻り、ホストゾーンにレコードを追加します。

作成したホストゾーンを選択し、「レコードを作成」をクリック。
![スクリーンショット 2024-02-09 19.23.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3070527/2803c760-7662-a0e7-e825-f4b10820d031.png)

「レコードタイプ」は「A」を選択します。
「値」には、EC2 インスタンスの Elastic IP を入力します。
![スクリーンショット 2024-02-09 19.26.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3070527/8e693d78-f7b9-1311-7104-f6f3c2c4b45c.png)
「レコードの作成」をクリックします。

ドメイン会社側の DNS 設定が反映されていれば、ドメイン名で Apache のページにアクセスできるようになっているはずです。

本記事はここまでです。
次の記事はこちら↓
[初めての AWS で Laravel API をデプロイしてみた！ - 第 4 弾：データベース編](https://qiita.com/mosyaneko/items/182438555c7d23e5a3e9)