1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【AWS初心者・小ネタ】鍵管理ゼロ&ブラウザ完結!15分で作るDocker + Python(uv) クラウド開発環境 ── EC2実践連載 第1回

1
Posted at

2026年の今更、EC2の立て方について書いた記事は少ないのでは?と思い投稿してみます
※本記事はAIが書いて、人間が伴走しファクトチェックしています。
ちょっと大げさな表現がありますがAIの性格だと思って生暖かい目で見ていただければ幸いです。

はじめに:なぜクラウドに開発環境を作るのか?

プログラミングやインフラの勉強をしていると、「手元のPCに色々なツールを入れすぎて環境がぐちゃぐちゃになってしまった…」という経験はありませんか?
あるいは、「新しいツールを試したいけど、PCの環境を汚したくない」と思うこともあるでしょう。

そんな時こそ AWS(クラウド) の出番です!
必要な時だけサクッとサーバー(EC2)を立ち上げ、使い終わったら消す。この「使い捨てできる自分専用の開発環境」を持てるようになると、学習や開発のスピードが劇的に上がります。

この連載について:手作業から完全自動化へのステップアップ

本記事は、 「同じ構成のEC2開発環境を、異なるアプローチで構築・進化させていく」 連載企画の第1回目です。

  • 第1回(今回):マネジメントコンソール編(画面ポチポチ構築) ← イマココ!
  • 第2回:ユーザーデータ編(起動時のスクリプトで初期設定を自動化)
  • 第3回:CloudFormation編(インフラのコード化・IaCによる完全自動化)

最終的には「コード一発で環境を自動構築」することを目指しますが、自動化の仕組みを深く理解するには、まず「手作業で何をやっているのか」を体感しておくことが非常に重要です。


今回構築する環境

今回はAWSマネジメントコンソールを使い、以下の強力な開発環境を構築します。

  • OS: Ubuntu 24.04 LTS (開発情報を調べた時に一番情報が出てきやすいため)
  • インスタンスタイプ: t3.small (2vCPU, 2GBメモリ)
    • 無料枠の t2.micro (1GB) だとDockerビルド時にメモリ不足でフリーズしやすいため、快適さを重視して選択します。
  • ストレージ: 20GB (gp3)
    • Dockerイメージは容量を消費するため、デフォルトの8GBから少し増やしておきます。
  • 接続方法: EC2 Instance Connect(今回の目玉!)
    • 面倒なSSHキーペア(秘密鍵)の作成や管理を一切省き、ブラウザからワンクリックで接続する最速の手法です。

それでは、さっそくAWSコンソールを開いて、クラウド上のマイルームを作っていきましょう!


ハンズオン:EC2インスタンスの起動(画面ポチポチ編)

AWSマネジメントコンソールにログインし、EC2のダッシュボードから「インスタンスを起動」をクリックします。

  1. 名前とタグ: わかりやすい名前(例: dev-env-manual)を入力します。
  2. AMI(OS)の選択: 「Ubuntu Server 24.04 LTS (HVM), SSD Volume Type」を選択。アーキテクチャは「64ビット (x86)」のまま。
  3. インスタンスタイプの選択: t3.small を選択。
  4. キーペア (ログイン): * 💡 ここが最大の時短ポイント! ドロップダウンから**「キーペアなしで続行 (推奨されません)」**を選択します。EC2 Instance Connectを使うため鍵は不要です。
    (※ここにキーペアなしを選択している画面のスクショを挿入)
  5. ストレージの設定: デフォルトの8GBを「20GB」に変更。ボリュームタイプは「gp3」にしておきます。

image.png

🚨 つまずきポイント1:セキュリティグループの設定はどうする?

ネットワーク設定の箇所は、初心者にとって最大のトラップです。
今回はブラウザから接続する「EC2 Instance Connect」を使用しますが、「自分のPCのIP」だけを許可してしまうと、AWSのサービス経由での接続が弾かれて一生繋がりません!

最もスマートで安全な設定は以下の通りです。

  • 「SSHからのトラフィックを許可する」にチェック。
  • 送信元タイプを「カスタム」にします。
  • 検索窓に ec2-instance-connect と入力し、表示されるAWS公式のプレフィックスリスト(例: 東京リージョンなら com.amazonaws.ap-northeast-1.ec2-instance-connect)を選択します。

これにより、「AWSのEC2 Instance ConnectサービスからのみSSH接続を許可する」というセキュアな状態を作れます。HTTP/HTTPSは今回は開発用なのでチェックを外したままでOKです。

設定が完了したら、右側の**「インスタンスを起動」**ボタンをクリックします!

これを
image.png

こう
image.png


爆速!ブラウザからターミナルに接続

インスタンスが「実行中 (running)」になったら、さっそく接続してみましょう。

  1. EC2ダッシュボードで対象のインスタンスにチェックを入れ、画面上の「接続」ボタンをクリック。
  2. 「EC2 Instance Connect」タブを開きます。

🚨 つまずきポイント2:「パブリックIP」と「プライベートIP」どっちを選ぶ?

接続タイプを聞かれて迷うかもしれませんが、ここでは**「パブリックIPを使用して接続」**を選んでください。

  • 選ぶ理由: 今回はサクッと環境を作るのが目的です。先ほどセキュリティグループで「AWS公式からのアクセスのみ許可」と設定したため、パブリックIPを使ってAWS経由で繋ぐのが最も手軽かつ安全です。(プライベートIPを選ぶと、追加のネットワーク構築が必要になってしまいます)

これで
image.png

こう
image.png

右下の「接続」をクリックすると、ブラウザの別タブで黒いターミナル画面が開き、即座にログインが完了します!Tera Termも鍵ファイルも不要。最高ですね!


開発ツールのインストール(手打ちコマンド編)

接続したターミナルで、以下のコマンドを順番にコピペして実行していきます。

① システムの最新化

sudo apt update && sudo apt upgrade -y

② Pythonの確認
(Ubuntu 24.04には最初からPython 3.12系が入っています)

python3 --version

③ 超高速なPythonパッケージマネージャ「uv」のインストール

curl -LsSf https://astral.sh/uv/install.sh | sh
# インストール後、パスを通すためにシェルを再読み込み
source $HOME/.local/bin/env
# 確認
uv --version

④ Docker & Docker Composeのインストール

# Docker本体のインストール
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

# 現在のユーザー(ubuntu)をdockerグループに追加し、sudoなしでdockerコマンドを使えるようにする
sudo usermod -aG docker ubuntu

# Docker Composeプラグインのインストール
sudo apt-get install -y docker-compose-plugin

🚨 つまずきポイント3:「*** System restart required ***」が出た!

ここでターミナルをよく見ると、再接続時などに以下のようなメッセージが出ることがあります。

*** System restart required ***
Last login: Wed Mar  4 13:15:52 2026 from ...
ubuntu@ip-172-31-x-x:~$ 

「えっ、エラー!?」と焦る必要はありません。これは先ほどの apt upgrade でLinuxのコア部分が更新されたため、「適用するために再起動してね」という親切なお知らせです。
また、Dockerの権限設定(usermod)を反映させるためにも、ここで一度インスタンスを再起動するのがベストです。

sudo reboot

コマンドを打つとターミナルが固まって接続が切れますが、これが正常な動作です。ブラウザのタブを閉じ、1〜2分待ってから、再度AWSコンソールの「接続」ボタンからターミナルを開き直してください。


動作確認:Dockerで「Hello World」を出してみよう!

再接続できたら、環境構築の総仕上げとしてDockerが正常に動くかテストします。

docker run hello-world

以下のようなメッセージが表示されれば大成功です!

Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
... (中略) ...

Hello from Docker!
This message shows that your installation appears to be working correctly.

このメッセージが出たということは、Dockerが正常に起動し、インターネットからイメージをダウンロードでき、さらに権限設定もバッチリ反映されている証拠です!
これにて、クラウド上の強力な開発環境が完成しました。お疲れ様でした!


⚠️ 絶対に忘れないで!お片付け(リソースの削除)

今回は無料枠を超えた t3.small を使用しているため、起動しっぱなしにすると課金され続けます。使い終わったら必ずインスタンスを削除しましょう。

  1. EC2ダッシュボードに戻る。
  2. インスタンスを右クリックし、「インスタンスの状態」→**「インスタンスを終了 (Terminate)」**を選択。
  3. 確認画面で「終了」を押す。

これで課金はストップします。(※「停止 (Stop)」だとストレージ代が微量にかかるため、使い捨てる場合は必ず「終了」を選びます)。


おわりに & 次回予告

今回は画面をポチポチ操作し、コマンドをコピペして環境を作りました。しかし、毎回EC2を立てるたびにこれをやるのは面倒ですよね?

次回(第2回)は、今回叩いたコマンドをEC2の『ユーザーデータ』という機能に仕込み、起動した瞬間にすべてがインストール済みの状態にする魔法をご紹介します!お楽しみに!

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?