はじめに
AWSを活用してプロジェクトを立ち上げる際の基本的なステップを紹介します。今回は、仮想サーバー(EC2)を作成し、管理する方法について詳しく解説します。エンジニア初心者の方にも理解しやすいように、各ステップを丁寧に説明します。
仮想サーバーの立ち上げ(EC2)
EC2(Elastic Compute Cloud)は、AWSが提供する仮想サーバーサービスです。物理的なサーバーを用意せずに、必要なときにサーバーを立ち上げたり、リソースをスケールしたりできます。例えば、ウェブサイトやアプリケーションのホスティング、データ処理、開発環境の構築など、さまざまな用途に活用されています。
EC2インスタンスの作成・管理
EC2インスタンスを作成するには、AWSコンソールから「EC2」サービスにアクセスし、必要な設定を行います。ここでは、インスタンス作成の手順を見ていきます。
- EC2ダッシュボードにアクセス: AWSアカウントでログインし、「EC2」を選択してEC2ダッシュボードを開きます。
- インスタンスの作成: 「インスタンスの起動」ボタンをクリックして、新しい仮想サーバー(インスタンス)を作成します。
- インスタンスの設定: 使用するOSやインスタンスのタイプ(性能や価格帯)を選択します。
- AMIの設定
- インスタンスタイプの設定
- キーペアの設定
- セキュリティグループの設定
Amazon Machine Image(AMI)とインスタンスタイプの選択
- Amazon Machine Image(AMI): AMIは、EC2インスタンスにインストールするOSやソフトウェアのテンプレートです。一般的な選択肢として、Linux(Ubuntu、Amazon Linux)やWindows Serverなどが用意されています。用途に応じたAMIを選びましょう。
- インスタンスタイプ: EC2インスタンスには、利用目的に合わせたさまざまなタイプがあります。例えば、低コストで動作する「t2.micro」は、初学者向けの選択肢で、無料利用枠に該当する場合もあります。
今回は下記内容で作成します。
- AMI:Amazon Linux2
- インスタンスタイプ:t2.micro
キーペアの設定
AWSのキーペアファイルを設定したら、my-key.pem
のようなファイルがダウンロードされます。my-key.pem
はわかりやすいところへ保存し、権限の変更を行なっておきます。
# 例
mv ~/Downloads/my-key.pem ~/.ssh/
chmod 400 ~/.ssh/my-key.pem
セキュリティグループの設定(ポート、プロトコル)
セキュリティグループは、EC2インスタンスへのアクセスを制御するためのファイアウォールです。インターネットからのアクセスを許可するポートやプロトコルを設定し、サーバーのセキュリティを確保します。
- ポートの設定: 通常、リモート接続には22番ポート(SSH)を使用します。Webサーバーとして使う場合は、80番(HTTP)や443番(HTTPS)も開放します。
- IPアドレスの制限: 自身のIPアドレスのみ許可する設定にすることで、セキュリティを向上させます。AWSコンソールで「マイIPからのアクセスのみ許可」といった設定が可能です。
今回はSSHとHTTPS、HTTPを有効化にしています。(HTTPSはいらないかも)
SSH接続でEC2インスタンスにアクセスし、サーバーを操作
my-key.pem
はダウンロードしたキーファイルの名前に置き換えます。<インスタンスのパブリックIPアドレス>
はEC2のパブリックIPアドレスに置き換えます。
インスタンスのページに「パブリック IPv4 アドレス」の欄があります。
# ~/.ssh/にpemファイルを登録した場合
ssh -i "~/.ssh/my-key.pem" ec2-user@<インスタンスのパブリックIPアドレス>
初めての接続だと信頼していいか聞かれるのでyesと回答しましょう
インスタンスの立ち上げはこれで完了です。
デプロイするサンプルアプリケーションの準備
ローカル環境でプロジェクトを作成
ターミナルまたはコマンドプロンプトを開き、以下の手順で新しいプロジェクトを作成します。
新しいフォルダの作成
mkdir hello-world
cd hello-world
Node.jsプロジェクトの初期化
以下のコマンドで、プロジェクトフォルダを初期化しpackage.json
ファイルを生成します。
npm init -y
簡単なWebサーバーの作成
app.js
というファイルを作成し、以下のコードを入力します。
// app.js
const http = require('http');
const hostname = '0.0.0.0';
const port = 3000;
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello World\n');
});
server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});
サーバーの起動:
次のコマンドでサーバーを起動します。
node app.js
ブラウザで http://localhost:3000
にアクセスすると、「Hello World」が表示されます。
アプリケーションのデプロイ
EC2インスタンスが立ち上がり、SSH接続できたら、アプリケーションをデプロイする準備が整います。ここでは、基本的なWebアプリケーションをデプロイする手順を紹介します。
環境の設定
必要なソフトウェアのインストール
まず、サーバーにアプリケーションの実行に必要なソフトウェアをインストールします。
パッケージの更新
sudo yum update -y
Node.jsとnpmのインストール
sudo yum install -y nodejs
バージョン確認
インストールが完了したら、バージョンを確認してNode.jsとnpmが正常にインストールされていることを確認します。
node -v
npm -v
コードのアップロード
アプリケーションのコードをEC2インスタンスに転送します。SCPコマンドやGitを使ってアップロードする方法があります。
# ローカルで実行 今回はこっち
scp -i "~/.ssh/your-key.pem" -r hello-world ec2-user@<EC2のパブリックIP>:/home/ec2-user
# sshで接続して実行(gitのインストールと設定が必要)
git clone <リポジトリのURL>
依存パッケージのインストール
プロジェクトのフォルダに移動し、パッケージをインストールします。
cd hello-world
npm install
アプリケーションの起動
デプロイしたアプリケーションを起動します。
node app.js
port3000に接続できるようにする
EC2インスタンスのセキュリティグループに下記設定を追加します。
- タイプ: カスタムTCPルール
- ポート範囲: 3000
- 送信元: 任意の場所(0.0.0.0/0)
アクセスしてみる
下記にアクセスし、Hello Worldが表示されたら成功
http://[EC2インスタンスのパブリックIP]:3000/
まとめ
AWSのEC2を利用すれば、インターネット上で簡単に仮想サーバーを立ち上げて操作することができます。今回は、EC2インスタンスの基本設定、AMIやインスタンスタイプの選択、セキュリティグループの設定、SSH接続について解説しました。これらの知識を活用すれば、初学者でもAWS上でのサーバー構築がスムーズに進められるようになります。
AWSを利用したプロジェクト立ち上げは、経験を重ねることでさらに効果的に使いこなせるようになります。ぜひ、このガイドを参考に実際に試してみてください。
コメント