初めに
WEBアプリの開発環境を一から構築するのは何かと手間がかかります。
AWSのElastic Beanstalkを使うとボタンをポチポチするだけで簡単に作成可能です。
開発や検証環境などちょっと試したいなといった場合にはとても便利ですので構築方法についてまとめました。
大まかな構築手順
- VPC
- Elastic Beanstalk
- DB (PostgreSQL)
- S3(EC2とのファイル送受信用)
1. VPCの構築
さっそくやってみましょう。
VPCの作成
作成したいリージョンを選択する。
サービスの「VPC」を検索し、「VPCを作成」を押下。
作成するリソース:VPCのみ
名前:適宜入力
IPv4 CIDR:適宜入力
⇒「VPCを作成」を押下。
インターネットゲートウェイの作成
VPCのダッシュボードより、「Internet gateways」を選択のうえ、「インターネットゲートウェイの作成」を押下。
名前タグ:適宜入力
⇒「インターネットゲートウェイの作成」を押下。
作成が成功したら「VPCへアタッチ」を押下。
アタッチしたいVPCを選択のうえ、「インターネットゲートウェイのアタッチ」を押下する。
サブネットの作成
VPCのダッシュボードより、「Subnets」を選択のうえ、「サブネットを作成」を押下。
サブネット名:適宜入力
IPv4 subnet CIDR block:適宜入力
⇒「サブネットを作成」を押下。
ルートテーブルの作成
先ほど作成したサブネットを開き、「ルートテーブル」を選択
「ルートテーブルID」を押下下する。
先ほど作成したインターネットゲートウェイをルートへ追加します。
送信先:0.0.0.0/0
ターゲット:先に作成した「インターネットゲートウェイ」を選択のうえ、「変更を保存」する。
2. Elastic Beanstalkの構築
サービスから「Elastic Beanstalk」を検索し、「環境を作成」を押下。
ステップ1:環境を設定
環境枠:ウェブサーバー環境
アプリケーション名:適宜入力
プラットフォーム:Tomcatを選択
プリセット:単一インスタンス (無料利用枠の対象)
ステップ2:サービスアクセスの設定
既存のサービスロールを使用を選択
EC2 キーペア:適宜作成
EC2 インスタンスプロファイル:次のステップで作成するロールを指定
ロールの作成
以前は、デフォルトでロールも作成されていましたが、セキュリティの強化により別途作成する必要があるようです。
https://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/iam-instanceprofile.html
サービスから「IAM」を検索し、「ロールを作成」を押下。
サービスまたはユースケース:EC2を選択
以下の3つを選択する。
AWSElasticBeanstalkWebTier
AWSElasticBeanstalkWorkerTier
AWSElasticBeanstalkMulticontainerDocker
ステップ3:ネットワーキング、データベース、およびタグをセットアップ - オプション
VPC:今回作成したVPCを選択
インスタンスの設定:今回作成したサブネットを選択
データベース:RDSのデータベースを作成する場合はここで設定する。(今回はスキップ)
ステップ4:インスタンスのトラフィックとスケーリングを設定
設定変更なし
ステップ5:更新、モニタリング、ログ記録を設定
ステップ6:レビュー
設定情報を確認し、問題なければ「送信」押下。
EC2への接続確認
サービス「EC2」を検索し、今回作成されたEC2を選択する。
セキュリティグループのインバウンドルールにSSHの許可を追加する。
「SSH」を追加
ソースは適宜IPを絞るとよい。
「EC2 Instance Connect」 より接続ボタンを押下。
Elastic Beanstalkの操作
- アプリケーションサーバーを再起動:その名の通り
- 環境を再構築:構築したElastic Beanstalk環境を一から再構築し直します。(EC2で作成したデータ消えます)
- 環境を終了:構築したElastic Beanstalkのリソースを削除します。
Auto Scaling グループからの除外
この章の最後にAuto Scaling グループからの除外方法について記載します。
Elastic Beanstalkでは、自動でAutoScalingが作成されます。
便利ではあるのですが、EC2を一時的に停止したい時などは不便なので、除外してみます。
EC2のサービスから「Auto Scaling グループ」を選択し、Elastic Beanstalkにて自動作成されたグループを選択し開きます。
詳細タブのページ下部に「高度な設定」の項目があるので「編集」ボタンを押下
中断されたプロセス:Health Check にチェックをいれ「更新」ボタンを押下。
これで、EC2を停止しても新たなインスタンスは生成されません。
3. DB構築
DB構築は2通りあります。
- 構築したEC2内にDBを構築する方法
- RDSを利用する方法
構築したEC2内にDBを構築する方法
Amazon Linux 2023には、PostgreSQL15のパッケージが既に用意されているため、簡単にインストールは可能です。
手順は以下の通り。
- インストール
sudo dnf install -y postgresql15-server
- 初期化
sudo postgresql-setup initdb
- postgresユーザのパスワードを設定
sudo passwd postgres
- サーバーを起動
sudo systemctl start postgresql
- postgresユーザへ切り替え
su - postgres
- データベース一覧を確認
psql -l
S3の構築
最後にEC2とのファイルのやり取りをするために、S3を構築します。
サービスから「S3」を選択し、「バケットを作成」を押下。
設定画面にて、任意のバケット名を入力し、「バケットを作成」を押下。
これでS3の作成は完了です。
作成したS3を開き、「アップロード」ボタンから任意のファイルをアップロードできます。
このままだと、EC2からS3へのアクセス権限が無いため、ロールを追加します。
前ステップで作成したロールを開き、「許可の追加」から「ポリシーのアタッチ」を押下。
「AmazonS3FullAccess」を検索のうえ選択し、「許可を追加」
以上で構築は完了です。
S3のファイルをEC2へダウンロードするには、以下のコマンド「aws s3 cp」でできます。
aws s3 cp s3://{バケット名}/{パス} {コピー先のEC2ファイルパス}
お疲れさまでした。
お掃除
一通り動作確認が終わったら後片付けをします。
- Elastic Beanstalkのアクションから「環境を終了」を選択し、リソースを削除する
- RDSでDBを構築した場合は、RDSのインスタンスを削除する
- 作成したVPCを削除する
- 作成したS3を削除する