EC2入門 — インスタンス起動からSSH接続まで(Javaエンジニア向け)
はじめに
AWS入門シリーズ2回目。今回は EC2(Elastic Compute Cloud)。
前回「AWSの3種の神器」で軽く触れましたが、AWSでまず最初に触るべきサービスです。触ったことがあるかないかで、案件の選択肢が大きく変わります。
Javaエンジニアへの橋渡し
EC2は「AWS上でオンプレサーバーを1台借りている感覚」。Tomcat を動かしていた昔ながらのサーバーが、クラウド上に置き換わっただけと考えると分かりやすいです。
1. EC2とは何か
EC2 = クラウド上の仮想サーバー。
- クリック数回で、Linux / Windows のサーバーが立ち上がる
- CPU / メモリ / ストレージを自由に選べる
- 使った時間だけ課金される(従量課金)
- 不要になったら停止 or 削除で課金停止
「必要な時だけ借りる仮想サーバー」というシンプルな理解でOKです。
用途の例
- Web アプリ(Spring Boot、Next.js など)のホスト
- バッチ処理サーバー
- 検証環境・ステージング環境
- ML の GPU 計算(GPU付きインスタンスも選べる)
- 社内ツールの実行環境
2. 用語を最初におさえる
EC2を触る前に、この5つは覚えておきましょう。
| 用語 | 意味 |
|---|---|
| インスタンス | EC2で起動する仮想サーバー1台のこと |
| AMI | サーバーのテンプレート(OS + 初期設定) |
| インスタンスタイプ | CPU/メモリの組み合わせ(t3.micro など) |
| キーペア | SSH接続に使う秘密鍵/公開鍵 |
| セキュリティグループ | ファイアウォール(どのポートを開けるか) |
「AMI(テンプレート)を選んで、タイプ(スペック)を決めて、キーペア(鍵)とセキュリティグループ(壁)を設定して起動」——これが基本の流れ。
3. 起動までのステップ(GUI編)
初回はマネジメントコンソール(GUI)から起動するのが安全です。
Step 1: EC2 ダッシュボードへ
- AWSマネジメントコンソールにログイン
- サービス一覧から EC2 を選択
- 左メニュー「インスタンス」→「インスタンスを起動」
Step 2: 名前と AMI を選ぶ
- 名前:
my-first-ec2など任意 - AMI: Amazon Linux 2023(初心者おすすめ、無料枠対象)
- または Ubuntu Server(Linux 系で書き慣れているならこちら)
Step 3: インスタンスタイプ
-
t3.microを選択(無料枠の対象、1年間実質無料) - スペック: 2 vCPU、1 GiB メモリ
- 「動作確認だけしたい」なら十分
Step 4: キーペアの作成
- 「新しいキーペアを作成」
- 名前:
my-key(任意) - タイプ: ED25519(推奨、新しい暗号方式)
- 形式: SSH接続なら
.pem、Windows PuTTY を使うなら.ppk
ダウンロードした .pem ファイルは絶対に紛失しないこと。これ以外の方法でサーバーに入れなくなります。
Step 5: ネットワーク設定
- VPC / サブネット: デフォルトのままでOK
-
セキュリティグループ: 新規作成
-
SSH(22番ポート): 自分のIPアドレスのみ許可(Anywhere は本番でも避ける) -
HTTP(80番) やHTTPS(443番) は必要になったら追加
-
Step 6: ストレージ
- 8 GiB gp3(デフォルト)で十分
- 実運用で足りなくなったら後から増やせる
Step 7: 「インスタンスを起動」
- ボタンを押す → 数十秒後に 状態が "running" になれば起動成功
4. SSH接続する
起動後、実際にサーバーに入ってみます。
macOS / Linux / WSL の場合
# キーペアのファイル権限を制限(必須)
chmod 400 ~/Downloads/my-key.pem
# インスタンスのパブリック IPv4 アドレス を EC2 コンソールで確認
# Amazon Linux 2023 の場合、ユーザー名は ec2-user
ssh -i ~/Downloads/my-key.pem ec2-user@xx.xx.xx.xx
初回接続時に「未知のホストですが接続しますか?」と聞かれるので yes。
接続成功すると、Amazon Linux のプロンプトが出ます:
, #_
~\_ ####_ Amazon Linux 2023
~~ \_#####\
~~ \###|
~~ \#/ ___ https://aws.amazon.com/linux/amazon-linux-2023
~~ V~' '->
~~~ /
~~._. _/
_/ _/
_/m/'
[ec2-user@ip-xx-xx-xx-xx ~]$
これで「クラウド上のサーバーに入った」状態。あとは通常のLinuxと同じように操作できます。
Windows(PuTTY) の場合
-
.pemを.ppkに変換(PuTTYgen使用) - PuTTYで接続情報を入力(Host:
ec2-user@xx.xx.xx.xx、Port: 22、SSH → Auth → 秘密鍵)
最近は WSL があるので、Windows の人も WSL 経由で ssh コマンド の方がラクです。
5. サーバーで簡単な確認
接続できたら、いくつか動作確認:
# OS 確認
cat /etc/os-release
# CPU情報
lscpu | head
# メモリ確認
free -h
# Java を入れてみる
sudo dnf install -y java-21-amazon-corretto
# バージョン確認
java --version
# openjdk 21.x.x
AWSが提供している Amazon Corretto(AWS版OpenJDK) が数分で入ります。Spring Boot の jar を SCP で送って java -jar すれば、世界に公開できる Java サーバー が完成。
6. 料金の話(ここが一番大事)
AWSで最も事故りやすいのが料金。EC2は特に「立ちっぱなし → 高額請求」の温床です。
料金体系
- 起動している間だけ課金(1秒単位)
- 停止中は EBS(ストレージ)代のみ
- 終了(削除)すればストレージ代も無料
無料枠(1年間)
-
t3.microまたはt2.microを 月750時間まで - 1台なら丸1ヶ月起動しっぱなしでも無料
- 2台起動すると片方の時間から課金開始
事故らないためのコツ
- 使い終わったら「停止」する(削除じゃなくてOK、あとで再起動できる)
- 完全に不要なら「終了(Terminate)」する(削除、復元不可)
- 請求アラームを設定:月$1超えたら通知、みたいな設定
- 無料枠の期間を把握:AWSアカウント作成から12ヶ月
「気づいたら$100請求されてた」は本当にあるあるなので、Billing ダッシュボードを定期的に見る習慣を付けましょう。
7. EC2 vs Vercel / Fargate — 何を選ぶ?
「Web アプリなら EC2 じゃなくてもよくない?」と思う人も多いはず。
| サービス | 得意な用途 |
|---|---|
| EC2 | 汎用サーバー、自由度最大、ML/バッチ/常駐プロセス |
| Vercel | Next.js 特化、フロントエンド中心 |
| AWS Fargate | Docker コンテナ、常駐サーバー、EC2より管理ラク |
| AWS Lambda | サーバーレス、イベント駆動、リクエスト単位課金 |
| AWS App Runner | Web/APIサーバー、EC2より自動化 |
Web アプリだけなら Vercel / Fargate / App Runner の方が楽ですが、「サーバーを自分で組める」経験は EC2 で1回積んでおく価値があります。
面接や案件で「AWS触ったことある?」と聞かれた時、"EC2 起動して SSH で入って Java 動かしたことあります" と言えるだけで、印象が全然違います。
8. Java エンジニア視点での使い所
パターン1: Spring Boot の実行環境
# ローカルでビルド
./gradlew bootJar
# EC2 にアップロード
scp -i my-key.pem build/libs/myapp.jar ec2-user@xx.xx.xx.xx:~/
# EC2 で実行
ssh -i my-key.pem ec2-user@xx.xx.xx.xx
java -jar myapp.jar
パターン2: バッチ処理サーバー
- 日次バッチ を cron で動かす
- 巨大なCSVを処理する短命ジョブ用
パターン3: 検証環境
- 開発チームで共通の動作確認用サーバー
- 本番と同じLinuxで動くか確認
9. 削除の手順(大事)
学習で立てたインスタンスは、必ず削除して習慣化しましょう。
- EC2 ダッシュボードで対象のインスタンスを選択
- アクション → 「インスタンス状態」 → 「インスタンスを終了」
- 「終了」を実行
「終了」した瞬間から、時間課金もストレージ代も止まる。
「停止」だけだとストレージ代(月数十円)が残るので、勉強で使ったら躊躇なく Terminate してOK。
まとめ
| 項目 | ポイント |
|---|---|
| EC2 | クラウド上の仮想サーバー |
| 起動 | AMI→タイプ→キーペア→SG→起動 |
| SSH | ssh -i xxx.pem ec2-user@IP |
| 料金 | 起動中のみ課金、無料枠は t3.micro 月750時間 |
| 事故防止 | 使い終わったら停止 or 終了、請求アラーム設定 |
| Java 用途 | Spring Boot / バッチ / 検証環境 |
おわりに
EC2 が触れる = AWS で "サーバーを自分で用意できる" 状態。
これができるだけで、履歴書やスキルシートに「AWS(EC2)」と書ける実績が1つできます。案件応募でも「クラウド未経験」に見えないためのミニマム条件です。
無料枠内で1回起動して、SSHで入って、削除する。この一連の流れを一度体験しておくと、次の S3 / RDS / IAM がスッと入ってきます。
次回は S3入門。ファイルアップロードとアクセス制御の基本を、実務でハマるポイントとセットで解説します。