AWS EC2でのWebアプリケーションホスティング

AWS環境でWebアプリケーションをホストする方法はたくさんあります。Webアプリケーションは従来のWebサイトまたはAPIプロジェクトの場合があります。どちらのタイプも以降「Webアプリケーション」(web app)と呼びます。
はじめに
AWS環境でWebアプリケーションをホストする方法はたくさんあります。Webアプリケーションは従来のWebサイトまたはAPIプロジェクトの場合があります。どちらのタイプも以降「Webアプリケーション」(web app)と呼びます。AWSでWebアプリケーションをホストするために適用できるいくつかの方法を以下にリストします:
- S3バケットでWebアプリケーションをホスティング
- ECS、EKS、またはFargateコンテナでWebアプリケーションをホスティング
- Elastic BeanstalkでWebアプリケーションをホスティング
- EC2上で直接Webアプリケーションをホスティング
[!NOTE] AWSでコンテンツをホストするには、オプション1、2、3がモダンなアプローチですが、この記事では、レガシーシステムで多く作業してきたが、古い習慣でAWS環境に移行したい方々を対象としています!私たちの目的は、Route53、Application Load Balancer、Security GroupsなどのフローをEC2と一緒に素早く紹介することです。
この記事では最後のオプションを検討します。 EC2で使用できるオペレーティングシステムはたくさんあります。「Free Tier」(無料利用枠)内で利用可能な最低構成のLinuxを使用します。AWS Free Tierの詳細についてはこちらをクリックしてください。
Amazon EC2は、Webアプリケーションをホストするために直接使用できます。この記事では、このようなタスクを実行するために必要なすべての手順をステップバイステップで説明します。
背景
何をするのか?
基本的なアーキテクチャは以下のようになります:

画像-001:メインシステムビュー
あなたの目的がWebサイトをAWS EC2マシンでホストすることだとしましょう。アプリケーションを簡略化するため、AWS EC2のApache Webサーバーで静的HTMLページを公開します。ApacheのデフォルトのwwwフォルダにFTP経由でアクセスできるようにします。これらの要件に加えて、AWS Route53を介してドメイン名(domain)をこのWebアプリケーションにルーティングします。
画像-001に示されているアーキテクチャを設計するために、グレーの円内の番号順にAWS要素を作成します。
ドメイン名が
WELR.comで、その動作要素をEC2でホストしたいとしましょう。WELR.comのコンテンツをAWS EC2でホストするためのすべての手順は以下のようになります。ステップ1:AWSでセキュリティグループを作成する
このセキュリティグループはEC2用に使用されます。セキュリティグループは、関連付けられているオブジェクトのファイアウォールと考えることができます。
すべてのインバウンド(inbound)ポートを以下のように設定します:
- 20-21(FTP)
- 1024-1048(FTP)、オプション
- 22(SSH)
- 80(HTTP)
- 8080(HTTPカスタム)、オプション
- 443(HTTPS)
以下の画像の赤い四角形は、関連するセキュリティグループを介したALBからEC2へのフローを示す点で重要です。

画像-002:SG-for-EC2-for-WELRのインバウンドルール
ステップ2:EC2インスタンスの作成
AWSでEC2インスタンスを作成するのは簡単なプロセスです。以下の画像の右上隅にあるConnect(接続)ボタンは、EC2に接続するために使用されます。

画像-003:EC2-for-WELR
EC2-for-WELRにすべての要件をインストールします。
まず、EC2コマンドラインに接続する必要があります。このステップを実行する方法はたくさんありますが、最も簡単なのはAWS Webコンソールから直接接続することです。

画像-004:EC2-for-WELRへの接続
Connectボタンを押すと、
ec2-userとしてEC2コマンドラインに接続されます。2.1- Apacheのインストール
TEXT
> sudo s
> yum update -
> yum install -y httpd.x86_6
> systemctl start httpd.servic
> systemctl enable httpd.service
すべてのWebアプリケーションファイルはApacheのデフォルトwebフォルダにあります。
Apacheのデフォルトwebフォルダは
/var/www/htmlディレクトリです。2.2 - FTPのインストール
TEXT
> sudo su
> yum update -y
> yum install vsftpd
> sudo vi /etc/vsftpd/vsftpd.conf
FTP設定ファイルで以下に示すいくつかの変更を行う必要があります。
設定ファイルでは、これらすべての行が示されているように存在する必要があります。
viエディタを使用するには、その使用方法を知っている必要があります。viエディタを初めて使用する場合は、こちらをご覧ください。TEXT
# 以下のすべての行から#記号を削除してください
anonymous_enable=NO
#
local_enable=YES
#
write_enable=YES
#
local_umask=022
#
dirmessage_enable=YES
#
xferlog_enable=YES
#
connect_from_port_20=YES
#
chroot_local_user=YES
write_enable=YES
allow_writeable_chroot=YES
#
listen=NO
#
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
pasv_enable=YES
pasv_min_port=1024
pasv_max_port=1048
pasv_address=18.170.116.xxx
vsftpdサービスを再起動するには、以下のいずれかを使用できます:TEXT
> /etc/init.d/vsftpd restart
または:
TEXT
> systemctl restart vsftpd
FTP用のユーザーを追加するには、EC2コマンドラインで以下を実行します:
TEXT
> adduser awsftpuse
> passwd awsftpuse
> usermod -a -G root awsftpuser
> usermod -d /var/www/html/ awsftpuse
> chown -R awsftpuser /var/www/htm
> systemctl restart vsftpd
2.3 - FTPクライアントのインストール
例として、Windows上のFilezillaクライアント。
AWSですべての要素を作成した後、FTPクライアントで接続してファイルをアップロードしてみてください。
index.htmlファイルをEC2のFTP webフォルダにアップロードできるはずです。ステップ3:ALB用のセキュリティグループを作成する
すべてのインバウンド(inbound)ポートを以下のように設定します:
- 20-21(FTP)
- 1024-1048(FTP)、オプション
- 22(SSH)
- 80(HTTP)
- 8080(HTTPカスタム)、オプション
- 443(HTTPS)

画像-005:SG-for-ALB-for-WELRのインバウンドルール
ステップ4:ターゲットグループの作成

画像-006:Target Group TG-for-WELR
ステップ5:Application Load Balancerの作成
このALBには
TG-for-WELRターゲットグループが必要です。ターゲットグループ(Target group)はEC2グループです。ただし、現時点では
EC2-for-WELRインスタンスのみが含まれています。さらに、このALBには
SG-for-ALB-for-WELRセキュリティグループが必要です。画像-007:Application Load Balancer ALB-for-WELR

ステップ6:セキュリティグループ間の許可
SG-for-EC2-for-WELRに、SG-for-ALB-for-WELRからのすべてのTCPリクエストを受け入れるようにインバウンドルールを追加します。
画像-008:セキュリティグループを介したALBからEC2へのフローの許可
ステップ7:Route53 Hosted Zoneの作成
以下のように4つのレコード(record)を持つ必要があります:
- NSとSOAは自動的に作成されます
- レコードAを作成します。以下の画像のように
- レコードCNAMEを作成します -
welr.com用
画像-009 - Route53レコード

NSアドレスは、ドメイン名管理インターフェースでドメイン名をEC2 ApacheでホストしているWebアプリケーションにルーティングするために使用できます。
結論
この記事の冒頭で述べたように、任意のクラウド環境でWebアプリケーションをホストする方法はたくさんあります。AWS EC2でいくつかのレビューを行いました。ご覧のとおり、WebアプリケーションのワーキングエレメントをFTP経由でApacheに手動でデプロイすることを想定しています。ただし、任意のCI/CDツールでFTPコマンドを使用してこのプロセスを自動化できます。
この記事の主な目的は、Route53とLoad Balancerの背後にあるEC2でWebアプリケーションをAWS環境でホストする方法を示すことです。
学んだこと:
- EC2インスタンスの作成と構成
- Apache Webサーバーのインストール
- FTP構成とユーザー追加
- Security Group設定
- Application Load Balancerのセットアップ
- Route53でのドメインルーティング