はじめに
本記事では、AWS初心者の私が実際にEC2インスタンスを作成し、独自ドメインでHTTPS通信(SSL証明書)を有効化するまでの手順を備忘録としてまとめます。対象は以下のような方です:
- Spring BootやJavaアプリをAWS上で公開したい人
- 独自ドメインでHTTPS(SSL)通信を実現したい人
- docker-composeでアプリケーションを構築している人
ステップ1:AWSアカウント作成とEC2の立ち上げ
1. AWS公式サイト(https://aws.amazon.com/jp/?nc2=h_lg) からアカウントを作成
2. マネジメントコンソールへログイン
3. EC2インスタンス
を作成(Amazon Linux 2023を推奨)
4. セキュリティグループに以下を許可:
- SSH (ポート22)
- HTTP (ポート80)
- HTTPS (ポート443)
- 必要に応じて8080も追加
5. .pem
キーファイルをダウンロード
6. ローカル端末からSSHで接続:
# ssh -i "キーファイルの格納パス" ec2-user@<パブリックIP>
ssh -i "C:\AWS\moneytrack-key.pem" ec2-user@<パブリックIP>
ステップ2:Docker & docker-compose環境構築
# Docker
# ① パッケージ更新
sudo yum update -y
# ② Dockerのインストール
sudo yum install -y docker
# ③ Dockerサービスの起動
sudo systemctl start docker
# ④ 再起動したときに自動でDockerが起動されるようにする
sudo systemctl enable docker
# ⑤ ec2-user を docker グループに追加(sudo無しで使えるように)
sudo usermod -aG docker ec2-user
# ⑥ 一度ログアウトして再接続
exit
# Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version
ステップ3:アプリのデプロイ
1. scp
でアプリのjarファイルやdocker-compose.ymlを転送:
# scp -i "キーファイルの格納パス" docker-compose.yml ec2-user@<パブリックIP>:/home/ec2-user/
scp -i "C:\AWS\moneytrack-key.pem" docker-compose.yml ec2-user@<パブリックIP>:/home/ec2-user/
2. EC2上でdocker-compose up -d --build
ステップ4:Route 53で独自ドメインを取得
1. AWSマネジメントコンソール > Route 53 > ドメインの購入
2. 例:moneytreeapp.net
3. ドメイン取得後、自動でホストゾーンが作成されます
4. ホストゾーンにAレコードを追加:
- 名前:空欄(ルートドメイン)
- タイプ:Aレコード
- 値:EC2のパブリックIPアドレス
ステップ5:Nginx設定とHTTPS対応
Nginxインストール
sudo yum install nginx -y
sudo systemctl start nginx
sudo systemctl enable nginx
nginx.confの編集
sudo vi /etc/nginx/nginx.conf
以下のように編集:
server {
listen 80;
server_name moneytreeapp.net;
location / {
proxy_pass http://localhost:8080;
}
}
再読み込み:
udo nginx -t
sudo systemctl reload nginx
CertbotでHTTPS対応
sudo amazon-linux-extras enable epel -y
sudo yum install certbot python3-certbot-nginx -y
sudo certbot --nginx -d moneytreeapp.net
HTTPS用の設定が/etc/nginx/nginx.conf
に追記されるか確認。ない場合は手動で追加:
server {
listen 443 ssl;
server_name moneytreeapp.net;
ssl_certificate /etc/letsencrypt/live/moneytreeapp.net/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/moneytreeapp.net/privkey.pem;
location / {
proxy_pass http://localhost:8080;
}
}
リダイレクト設定も追記:
server {
listen 80;
server_name moneytreeapp.net;
return 301 https://$host$request_uri;
}
再度適用:
sudo nginx -t
sudo systemctl restart nginx
ステップ6:HTTPSでアクセス確認
ブラウザで https://moneytreeapp.net
にアクセスして、HTTPSの鍵マークが表示されれば成功!
おわりに
今回はAWSのアカウント作成からHTTPS化までを一連の流れでまとめました。
最初は戸惑う部分も多いですが、一つずつクリアしていけば問題なく公開までたどり着けます!
この記事がどなたかの参考になれば幸いです。
参考文献
AWS公式ドキュメント
https://docs.aws.amazon.com/
Certbot公式
https://certbot.eff.org/
nginx公式ドキュメント
https://nginx.org/en/docs/