初心者向け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ディレクトリがない場合は作成し、権限を700としてください。
キーペアの権限を400とし、この状態でsshを実行します。
ssh -i ~/.ssh/{キーペアの名前} ec2-user@{インスタンスのパブリックIPアドレス}
SSH接続ができたらデプロイ先のサーバの用意は終了です。
1-6. 備考
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を使用してデプロイを実施するところまでやりたいと思います。