【AWS】EC2 による Linux 仮想サーバーの構築


概要

本項では、クラウドコンピューティングサービスである Amazon Web Service (AWS) を用いて Linux 仮想サーバーを構築する手順を紹介する。

環境

  • MacBook Air (Retina, 13-inch, 2018)
  • macOS Big Sur (Version 11.2.3)
  • メモリ 16 GB

AWS とは

  • クラウドコンピューティングサービスのひとつである
  • 200 以上のサービスがあり、組み合わせによって様々なアプリケーションやインフラを構築できる
  • 社内 LAN など、外部のシステムやネットワークと連結することができる
  • 料金体系がサービスの使用量に従う
  • 学生は AWS Educate でクラウドスキルを無料で学習できる

AWS アカウントの作成

AWS を利用するには AWS アカウントを作成する 必要である。登録時にクレジット/デビットカード番号が求められるが、サポートプランでベーシックプランを選択すれば無料でも使用できる。

AWS をはじめてみよう

AWS は、マネージメントコンソールを用いることで Web ブラウザの GUI で利用・操作することができる。マネージメントコンソールを開くと、利用可能なサービスの一覧を確認できる。

今回は、サーバーに必要なもの(OS やソフトウェアなど)を一式でレンタルすることができる Amazon Elastic Compute Cloud (Amazon EC2) を上記の一覧から選択して、仮想サーバーを構築してみよう。

EC2 を用いた仮想サーバー構築

マネージメントコンソールからEC2 を選択すると、EC2 ダッシュボードが表示される。EC2 では、AWS クラウドに作る仮想サーバーをインスタンスという。インスタンスには「設計図をもとに作成されたもの」という意味があり、EC2 にも仮想サーバーの設計図(仮想イメージ)が用意されている。ここでは仮想イメージからインスタンスを作成する手順を紹介する。

STEP1: Amazon マシンイメージ(AMI)を選択する

EC2 ダッシュボードで「インスタンスを起動」を選択すると、仮想イメージの一覧を確認できる。

EC2 では仮想イメージのことを Amazon マシンイメージ(AMI) という。同じ AMI から作成されたインスタンスは、設定が全て同じの仮想サーバーである。今回は linux 仮想サーバーを構築するために Amazon Linux 2 AMI (HVM), SSD Volume Type を選択してみよう。

STEP2: インスタンスタイプを選択する

次の画面ではインスタンスの性能が一覧で表示される。ここではインスタンスの CPU やメモリなどを選択できる。性能によって料金体系も異なるが、今回は毎月 750 時間まで無料で使用できる t2.micro を選択して、「確認と作成」ボタンをクリックしよう。ちなみに複数のインスタンスを同時に起動すると 750 時間が経過するのは早い。使い終わったインスタンスは不正利用防止の観点からも削除するのがよいだろう。

STEP7: インスタンスタイプを作成する

次の画面で「起動」ボタンを押すとインスタンスが作成される。なお STEP3~STEP6 の各種設定は、インスタンス作成後でも可能である。

キーペアの作成

インスタンス作成時にキーペアに関するポップアップが表示される。キーペアはインスタンス接続時の認証に必要な鍵である。ローカルサーバーからの接続にも必要なため、ここで新しいキーペアを作成してくおくとよい。キーペアに適当な名前をつけてダウンロードしておこう。

キーペアとはログイン認証時の公開鍵と秘密鍵のペアであり、ここでダウンロードされるのは秘密鍵である。RSA によって暗号化されており、拡張子は pem である。

Demo2021.pem
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAhiJeziiC9SC6TiWQfjOjp6vouPD7QwCdHzOLB/+FMD2/8U52
+F8JDcXHYulMTjyXhADy1WF+TKCgohh07GRPNrGU6LxnWLrTKnLkIPzFV/jnU6k1
GILmXI7yvtfWSC5tA5OUSWNUCeFYq8bh2RXKHVmrJxLYaIO/LoeFUFJou2qOgEA6

(不正アクセス防止のため中略)

Y+I9qQKBgBUsxReCPgvdRJ2Ba88muNgxWZnr437m9nESo0MMlDH6lNtd5UVOsNbJ
VDqg55p0Gy3Jepk8XZbpAybLmglyJY0cYU1GaCFQdw/NFtCnX8e7oYUGB20uMe40
Muyp+udJCx0MHP+y5hm80FabKziYF/5dQl2LMSZLgGMLO1gt/1YE
-----END RSA PRIVATE KEY-----

インスタンス作成中

インスタンス作成中は次の画面が表示される。右下の「インスタンスの表示」ボタンを押すとインスタンスの状態を確認できる。

次の画面で、ステータスチェックが「初期化しています」から「2/2 のチェックに合格しました」に変わるとインスタンスが作成される。

SSH 接続

SSH(Secure Shell) とは、ネットワークに接続された機器(今回はインスタンス)を遠隔操作し、管理するための手段をさす。ここでは MacBook から Amazon EC2 に SSH 接続する方法を紹介する。
まずは、接続先の EC2 インスタンスにチェックを入れて接続ボタンを押してみよう。

次の画面で「SSH クライアント」タブを開くと、SSH 接続手順が説明されている。

STEP1: SSH クライアントを開く

Mac に標準搭載されているターミナルを SSH クライアントソフトとして使用する。Windows の場合はこちらの動画で詳しく解説されている。

STEP2: プライベートキーファイルを見つける

プライベートキーファイルとはキーペアのうちの秘密鍵をさす。今回は先ほどダウンロードした Demo2021.pem を使用する。ユーザーのホームディレクトリに .ssh フォルダを作成し、新規フォルダに pem ファイルを移動してもよい。

ターミナル

mkdir ~/.ssh
mv Demo2021.pem ~/.ssh
cd ~/.ssh

STEP3: 必要に応じてキーが公開されていないことを確認する

chmod コマンドでキーファイルの権限を設定する。

ターミナル
chmod 400 Demo2021.pem

ちなみにキーファイルが保護されていない場合、以下のような警告が表示されて SSH 接続できない。・

ターミナル
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

STEP4: プライベートキーファイルを見つける

次のコマンドを実行すると SSH 接続が完了する。

ターミナル
ssh -i "Demo2021.pem" [email protected]

次のように表示されれば SSH 接続は成功している。

ターミナル
The authenticity of host 'ec2-18-183-11-87.ap-northeast-1.compute.amazonaws.com (18.183.11.87)' can't be established.
ECDSA key fingerprint is SHA256:gyQ0V6rZ8KDgET/yROzqJvUy59Elo9wvkuWoNcqniWI.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'ec2-18-183-11-87.ap-northeast-1.compute.amazonaws.com,18.183.11.87' (ECDSA) to the list of known hosts.

       __|  __|_  )
       _|  (     /   Amazon Linux 2 AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-2/
[ec2-user@ip-172-31-0-200 ~]$ 

パッケージのアップデート

デフォルトでインストールされているパッケージが最新でない場合があるため、次のコマンドでアップデートしておくとよい。(すべて最新版の場合は No packages marked for update と表示される。)
AWS 利用者は一般ユーザーであるため yum を実行できないが、sudo コマンドによってルートユーザーの権限をもつことで実行できる。
yum は Red Hat 系の Linux ディストリビューションで使われているパッケージ管理ソフトである。

ターミナル
[ec2-user@ip-172-31-0-200 ~]$ sudo yum update

Python 3 のダウンロード

次のコマンドで Python3 をダウンロードする。(参考

ターミナル
[ec2-user@ip-172-31-0-200 ~]$ sudo yum install python3 -y

Docker のダウンロード

次のコマンドで Docker をダウンロードする。(参考

ターミナル
[ec2-user@ip-172-31-0-200 ~]$ sudo amazon-linux-extras install docker

SSH 接続の終了

ターミナルで logout と実行する。

参考図書