AWS EC2 で仮想サーバーを構築してみた

## はじめに
学習用途で使える仮想サーバーが欲しいと思い、色々と調べていたところ、AWSにも仮想サーバーを構築できる「EC2」というサービスがあると知り、迷わずこちらを使うことに決定。
他にも良さげなVPSやクラウドサービスはいくつかありましたが、従量課金で学習用にちょこっと使うにはちょうど良さそう。
そして何より、AWSに触れてみたかったというのが大きな理由です。

正直、AWSに触れたことがなく何も知らない状態で、「クラウドといえばAWS」みたいなふんわりしたイメージだけは持っていました。
そんな技術を学ばない理由は無いし、どうせなら今のうちに触っておこうということで今回EC2を試してみることにしました。

## 概要
本記事では、AWSの仮想サーバーサービス「EC2」を使って、学習用のサーバーを構築し、おまけとして簡単なWebアプリを公開するまでの手順をまとめています。

具体的な内容は以下の通りです
- AWSアカウントの作成
- EC2インスタンスの立ち上げ
- SSH接続および VS Code からの接続
- Python + Flask による簡単なWebアプリの作成と公開

「とりあえずEC2を触ってみたい」「ローカル以外の環境でWebアプリを試したい」「具体的にやりたいことは無いけどAWSに触れてみたい」といった方に向けた、はじめの一歩として参考になれば幸いです。

## AWSアカウントの作成

### 1. AWS公式サイトへアクセス

- https://aws.amazon.com/jp/free

### 2. **アカウント情報の入力**

- 公式手順に沿ってアカウントを作成

[AWS アカウント作成の流れ【AWS 公式】](https://aws.amazon.com/jp/register-flow/)

### 3. サポートプランの選択

- 無料の「ベーシックサポート」を選択
    
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4050675/179dca50-4e86-4bde-9e99-bedf00e0881e.png)

    

### 4. AWSマネジメントコンソールへアクセス

- 登録完了後、AWSマネジメントコンソールにログインできるようになる

![image (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4050675/e4ce1d95-966c-4313-a446-c8c9250b16b2.png)


## SSHキーの作成と登録(EC2)

### 1. EC2サービスに移動

- AWSマネジメントコンソール左上の「サービス」メニューから「EC2」を選択
    
    ![image (2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4050675/08e78dbb-ce5f-4e88-8c26-4ada097e3a80.png)

    

### 2. 「キーペア」を開く

- 左側メニューの「ネットワーク&セキュリティ」 > 「キーペア」をクリック
    
    ![image (3).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4050675/0675ad57-e6be-4290-a4a5-aa113ac41e04.png)

    

### 3. キーペアを作成

- 「キーペアを作成」をクリック
    
    ![image (4).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4050675/60079a16-ba5e-44b1-b34e-7a45f0d8d6a6.png)

    

### 4. SSHキーの情報を入力

![image (5).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4050675/053c1b66-3146-4116-9993-e1ff4ebe16d4.png)


- 名前: 任意
- キーペアのタイプ: RSA
- プライベートキーファイ形式: `.pem`

### 5. 秘密鍵を保存

- 自動的にダウンロードされる `.pem` ファイルを以下に保存
    - `C:\Users\username\.ssh\`

## EC2インスタンスの作成

### 1. インスタンスを起動

- EC2ダッシュボードから「インスタンスを起動」をクリック
    
    ![image (6).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4050675/4dc5f597-f174-4db1-8918-e1f79f502857.png)

    

### 2. インスタンス名を入力

- 任意の名前を入力
    
    ![image (7).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4050675/d9f5b51f-b807-4dda-8abc-a20aaad058c5.png)

    

### 3. OSイメージを選択

- 今回は無料利用枠の対象である `Ubuntu 24.04 LTS` を選択
    
    ![image (8).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4050675/33d08762-8114-4994-ae7f-021c2a22b534.png)

    

### 4. インスタンスタイプを選択

- こちらも無料利用枠の対象である`t2.micro`を選択
    
    ![image (9).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4050675/91b390ea-0cf7-4188-970e-5ab586e99386.png)

    

### 5. ネットワーク設定

- 以下の項目にチェック:
    - インターネットからのHTTPSトラフィックを許可
    - インターネットからのHTTPトラフィックを許可
    
    ![image (10).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4050675/5c71b6ac-1e1b-4f78-9fc9-5a20b0b4844a.png)

    

### 6. ストレージ設定

- デフォルトの8GBを設定
    
    ![image (11).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4050675/f9d6db04-72b8-434c-930a-67fdd7f1830f.png)

    

### 7. インスタンスを起動

- 「インスタンスを起動」をクリック
    - 成功と表示されればOK
        
        ![image (12).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4050675/c71534a0-128e-4e87-9537-7e5534806866.png)

        

## SSHでインスタンスに接続

### 1. インスタンス一覧を表示

- 起動確認画面の「すべてのインスタンスを表示」を選択
- 一覧が表示されたら、先ほど作成したインスタンスのインスタンスIDをクリック
    
    ![image (13).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4050675/02e64c63-fcef-4207-99f9-e31fa2851558.png)

    

### 2. インスタンスに接続

- 画面右上の「接続」ボタンをクリック
    
    ![image (14).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4050675/573f9dba-f62b-4003-a976-b7e32b524e71.png)

    

### 3. SSHコマンドをコピー

- 画面下部に表示されている `ssh -i` で始まるコマンドをコピー
    
    ![image (15).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4050675/7a5f1f31-6f3e-4d3a-9d17-a1d19a0e7868.png)

    

### 4. コマンドをPowerShellから実行

- `-i` の後に指定されているパスは、実際の `.pem` ファイルのパスに書き換える
    
    ```powershell
    ssh -i ".ssh/aws-ec2-ymtdir.pem" ubuntu@ec2-13-115-162-51.ap-northeast-1.compute.amazonaws.com
    ```
    
- 初回接続時に確認が表示されるので `yes` を入力：
    
    ```powershell
    Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
    ```
    
    - 以下のようなログイン後のメッセージが表示されれば接続成功
        
        ```powershell
        Last login: Sat May 24 01:14:10 2025 from 150.249.252.141
        To run a command as administrator (user "root"), use "sudo <command>".
        See "man sudo_root" for details.
        
        ubuntu@ip-172-31-0-245:~$
        ```
        

## VS Code から接続

### 1. 拡張機能のインストール

- Remote - SSH をインストール
    
    ![image (16).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4050675/a61bf30a-8979-4cae-8d0a-be6289dd3902.png)

    

### 2. 拡張機能の設定

1. アクティブバーに追加された「リモートエクスプローラー」を選択
    - ※Docker下のディスプレイのアイコン
        
        ![image (17).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4050675/8917b9d1-2384-4c45-8f5a-b0c15c00c23f.png)

        
2. SSH欄の右にある「＋」をクリックして、先ほど入力したSSHコマンドを入力
    
    ![image (18).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4050675/d9cf01ca-c11d-4fe7-9394-8cac88551f87.png)

    
3. 接続設定を保存するSSH構成ファイル（config）を選択
    - 秘密鍵と同じディレクトリ内の構成ファイルを選択
        - `C:\Users\username\.ssh\config`

### 3. インスタンスに接続する

1. SSH欄に、インスタンスのホスト名が追加されたことを確認し、右側の「ウィンドウ」アイコンを選択
    
    ![image (19).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4050675/11be6a09-6a59-4e0f-b2f0-5bb3bbef2b2c.png)

    
2. プラットフォームの選択画面が表示されたら、接続先がLinuxであるため「Linux」を選択
    
    ![image (20).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4050675/661a8eca-b1d5-4e9a-b776-63552cd63a56.png)

    

### 4. リモート上のフォルダーを開く

1. アクティブバーからエクスプローラーを開く
2. 「フォルダーを開く」を選択
3. 接続先サーバー内のパス `/home/ubuntu/` を入力して「OK」をクリック
    
    ![image (21).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4050675/9103cfea-56e1-4f22-a86b-905feb93fa71.png)

    
    - 「この作成者を信頼しますか？」と表示されたら「はい」を選択
4. サーバーのファイルが表示される
    - 以下のように表示されていれば成功
        
        ![image (22).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4050675/6f60dec8-8dfc-4634-8319-16659db8accd.png)

        

## FlaskでWebサイトを表示してみる

### 1. ターミナルを開く

- ホームディレクトリにいることを確認

```bash
ubuntu@ip-172-31-0-245:~$
```

### 2. **ホームディレクトリに Flask アプリ用ディレクトリを作成**

```bash
mkdir flask_app
```

### 3. 仮想環境を作成

1. venvパッケージをインストール
    
    ```bash
    sudo apt update
    sudo apt install python3.12-venv -y
    ```
    
2. 仮想環境を作成
    
    ```bash
    python3.12 -m venv flask_app/venv
    ```
    
3. 仮想環境を有効化
    
    ```bash
    source flask_app/venv/bin/activate
    ```
    
4. Flaskをインストール
    
    ```bash
    pip install flask
    ```
    

### 4. **Flaskアプリを作成**

- `flask_app/main.py` を作成し、以下の内容を記述：
    
    ```python
    from flask import Flask
    
    app = Flask(__name__)
    
    @app.route("/")
    def hello():
        return "Hello, World!"
    
    if __name__ == "__main__":
        app.run(host="0.0.0.0", port=80)
    ```
    

### 5. アプリケーションを起動

```bash
sudo ~/flask_app/venv/bin/python ~/flask_app/main.py
```

- 冗長なコマンドとなっていますが、検証用としてご了承ください

### 6. ブラウザにアクセスする

- EC2のパブリックIPにアクセス
    - `http://<パブリックIP>/`
    - ブラウザへのアクセスが成功し、`Hello,World!`と出力されていれば成功
        
        ![image (23).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4050675/9aaeb52c-31c7-4d19-aeaf-35271fcad916.png)

        
        - ※パブリックIPが分からない場合は、インスタンス概要から確認
            
            ![image (24).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4050675/32fc49f4-e517-4587-aaff-33115ed3e9a4.png)

---

続きの記事はこちら

https://qiita.com/ymtdir/items/399b2e881cf2cb717f33