はじめに
前回の記事では、AWS EC2インスタンスにElastic IPを割り当てて、IPアドレスを固定する方法を紹介しました。
今回はその続きとして、固定 IP に対して「ドメイン名」でアクセスできるようにする方法を解説します。
なお、今回は学習目的のため、 .com や .net などのトップレベルドメイン(TLD)を購入するのではなく、無料で利用できるサブドメイン(SD)サービスを使って、コストをかけずに設定していきます。
概要
本記事では、Elastic IP を割り当てた EC2 インスタンスに、無料のサブドメインを使ってドメイン名でアクセスできるようにする方法を解説します。
具体的な手順は以下の通りです
- 無料のサブドメインサービス(DuckDNS)に登録する
- 任意のサブドメインを取得する
- Elastic IP をそのドメインに紐付ける
- ドメイン名で EC2 にアクセスできることを確認する
これにより、IPアドレスではなくxxx.duckdns.orgのようなドメイン名でアプリやサイトへアクセス可能になります。
本記事で紹介する方法は、開発環境や検証環境向けの構成です。
本番運用にはトップレベルドメインを購入して利用することを推奨します。
無料のサブドメインは信頼性やブランド、証明書対応などの面で制限があるため、商用利用には適しません。
1. 無料でサブドメインを取得する
1-1.DuckDNSにアクセスしてログイン
https://www.duckdns.org/domains
→ GoogleアカウントやGitHubアカウントでログインする
1-2. >>> reCaptcha <<<をクリックして認証を完了する

→ 認証が完了すると、DuckDNSのドメイン管理画面に進む
1-3. 希望するサブドメイン名を入力し、add domainをクリック
- 今回は、
ymtdirというサブドメイン名を使用 - 画像のようにサブドメイン名が表示されていれば取得完了
2. Elastic IP との関連付け
2-1. current ip に Elastic IP を設定する
「current ip」欄に、EC2 に割り当てている Elastic IP(例:18.178.201.136)を入力。
2-2. update ip をクリックしてIPアドレスを更新
入力後、右側にある update ip ボタンをクリック。
更新が成功すると、current ip の欄が新しい IP アドレスに置き換わります。

3. ドメイン名でアクセスする
3-1. インスタンスを起動
3-2.SSH接続し、Flaskアプリを起動
sudo ~/flask_app/venv/bin/python ~/flask_app/main.py
Flaskアプリの詳細な構築・起動方法については、以下の記事をご参照ください。
https://qiita.com/ymtdir/items/aa172f718793e414b26f
3-3. ブラウザにドメイン名を入力し、表示を確認する
例: http://ymtdir.duckdns.org

上記のように、Elastic IP に割り当てたドメイン名でアクセスできることを確認できました!

