初心者向けAWSでサーバを構築する手順

Docker環境を取り扱うためのAWS環境のセットアップ手順と、AWS環境へのデプロイを実施し、その構成の学習を目的とします。

最終目標としてDocker環境をサーバにデプロイし、本運用を見越したDocker環境でのリリースを実施します。

環境

・Windows 10

・VSC version 1.83.1

・Docker Desktop

・AWS

1. AWS環境の構築


1-1. VPCの作成

最初にDocker環境をデプロイするためのサーバーを用意します。

AWSコンソールにログインし、EC2環境の作成を実施します。


まずはEC2を用意するためのVPCを構築します。

構成としてはVPC配下にシンプルなパブリックサブネットにEC2を配置する形で実現します。

本来であればサーバーに直接接続できてしまうのはセキュリティリスクになるため、プライベートサブネットに作成し、ポートの穴あけを実施するべきですが、今回は動作確認用なので、パブリックサブネットに配置します。


VPCを新規作成から、VPCに必要項目を入力していきます。

この時にデフォルトのリージョンが東京以外になっている可能性があるので、リージョンをアジアパシフィック(東京)ap-northeast-1に変更しておきます。

VPC名をdocker-deploy-testとし、IPv4 CIDRは10.0.0.0/24とします。

その他項目は任意のため今回は省略し、VPCを作成します。


1-2. サブネットの作成

VPCを作成したら、次にサブネットを作成します。

VPC>サブネットからサブネットを新規作成します。


VPC IDには先ほど作成したdocker-deploy-testを指定し、サブネット名はocker-deploy-test-subnet1とします。

アベイラビリティゾーンは適当でも大丈夫ですが、今回はアジアパシフィック(東京)ap-northeast-1aとしておきます。

サブネットのCIDRブロックは10.0.0.0/28とします。


1-3. インターネットゲートウェイの作成

次にインターネットゲートウェイを作成します。

現状だと外部からの通信を受け付けない状態になっているので、サブネットに紐づけたルートテーブルにインターネットゲートウェイを紐づける必要があります。


サブネットを作成した際にデフォルトでルートテーブルが作成され、そちらがメインルートになっていますが、今回はそちらを編集していきます。


まず、先にVPC>インターネットゲートウェイから、インターネットゲートウェイを作成します。

名前はdocker-deploy-test-igにしました。


次にこちらをルートテーブルに紐づけます。

VPC>ルートテーブルから作成したVPCに紐づいているルートテーブルを選択し、名前をdocker-deploy-test-rtにします。

その後、ルートテーブルのルートを編集し、インターネットゲートウェイ用のルーティングを追加します。


この状態で先ほど作成したVPCのアタッチされているメインテーブルを確認すると、インターネットゲートウェイがルーティングされるようになっています。

1-4. EC2の作成

次にEC2を作成します。

インスタンスを起動からEC2の作成を実施します。


インスタンス新規作成時にEC2にログインするために必要なキーペアの指定を求められるので、先にキーペアを作成しておきます。

画面中央付近にキーペアの項目があるので、こちらから新規でキーペアを作成します。

名前はdocker-deploy-test-keyとし、鍵の種類はRSA、形式はpemで作成します。


キーペアが作成出来たら、続いてインスタンスの設定をしていきます。

インスタンス名はdocker-deploy-test-ec2とします。

マシンイメージは無料利用枠で利用できるAmazon Linux2 2023 AMIにします。

インスタンスタイプも同様に無料利用枠で利用することができるt2.microにします。



続いてネットワークの設定ですが、VPC、サブネットは先ほど作成したそれぞれを割り当て、パブリック IP の自動割り当てはオンに設定します。


セキュリティグループが未作成のため、新規作成を選択し、名前はdocker-deploy-test-sgとしました。

インバウンドルールはSSH接続用の22番ポートとHTTP接続用の80番ポートにそれぞれ自分のIPからのみ接続をできるように設定しました。


そのほかの項目はデフォルトのままインスタンスを起動します。

1-5. SSH接続の実施

この状態で正しく設定できていれば、SSH接続が実施できるはずなので、SSH接続を実施します。

先ほど作成したキーペアがダウンロードされているので、そちらを~/.ssh/ 以下に配置し、権限を変更します。

.sshディレクトリがない場合は作成し、権限を700としてください。

キーペアの権限を400とし、この状態でsshを実行します。

ssh -i ~/.ssh/{キーペアの名前} ec2-user@{インスタンスのパブリックIPアドレス}


SSH接続ができたらデプロイ先のサーバの用意は終了です。

1-6. 備考

Windows環境の場合、権限の変更ができないので、前回実施したDocker環境の構築の際にDocker Desktop for Windowsと一緒にインストールしたWSLを使用して、権限を変更します。


WSLを起動し、/etc/wsl.conf ファイルを開きます。

/etc/wsl.confに下記の内容を追記し、保存した後、PCを再起動します。

# Enable extra metadata options by default
[automount]
enabled= true
root= /mnt/
options= "metadata,umask=22,fmask=11"
mountFsTab= false
# Enable DNS – even though these are turned on by default, we'll specify here just to be explicit.
[network]
generateHosts= true
generateResolvConf= true

上記手順を踏んだ後、WSLを再度起動し、Windows側のファイル・フォルダをchmodすると、権限の変更ができます。

Windows配下のディレクトリは/mnt/c/にありますので、/mnt/c/Users/{ユーザー名}に移動し、.ssh及びキーペアの権限を変更して再度sshを実行すればEC2に接続することができます。


また、ブラウザ上からEC2 Instant Connectを利用してEC2にログインし、動作確認する場合は、セキュリティグループにソース:カスタム 3.112.23.0/29を追記することで、ブラウザ上からEC2にログインすることができます。

2. 最後に

今回はAWSでサーバを構築し、ログインする手順まで実施しました。

次回は前回作成したDocker環境をAWS EBSを使用してデプロイを実施するところまでやりたいと思います。