会社のローカル環境だとプロキシや証明書の回避に多大な時間がかかるため、Windows 11ローカル環境からTera Termを使用してAWS EC2(Ubuntu)に接続し、Docker、uv、AWS CLIを用いた開発環境を構築する手順を備忘として残しておく形です(2026.03.01時点の情報です)
目次
1. Tera Termのインストール
WindowsからEC2へSSH接続するためのターミナルエミュレーターとして「Tera Term」を使用します。
- 公式サイトや窓の杜などの信頼できる配布元から、最新のTera Termインストーラーをダウンロードし、Windows PCにインストールします。
2. AWSマネジメントコンソールでのEC2新規作成
AWSマネジメントコンソールから、開発用サーバーとなるEC2インスタンスを作成します。以下のポイントに注意して設定します。
-
OS(AMI):
Ubuntu Server(22.04 LTS または 24.04 LTSなど)を選択します。 -
キーペア: 新規作成するか、既存のものを使用します。(ダウンロードされる
.pemファイルはSSH接続で必須となるため、PC内の安全な場所に保管します)。 -
ネットワーク設定(セキュリティグループ): * SSH (ポート22): ソースを「自分のIP(My IP)」のみに制限し、安全を確保します。
- ※後でWebサーバー等の検証を行う場合は、必要に応じてHTTP(80)やカスタムポート(8080等)を自分のIPに対して許可します。
3. UbuntuへのSSH接続(Tera Term)
作成したEC2インスタンスが「実行中」になったら、Tera Termで接続します。
- ホスト: EC2の「パブリックIPv4アドレス」を入力。
-
ユーザー名:
ubuntuと入力。 -
認証方式: 「RSA/DSA/ECDSA/ED25519鍵を使う」を選択し、秘密鍵に先ほど取得した
.pemファイルを指定して接続します。
4. Ubuntu内の開発環境構築
4.1 Dockerのインストールと注意点(Windows特有の罠)
公式のインストール手順に沿ってリポジトリを追加しますが、WindowsからTera Termへコマンドをコピペする際、円マーク(\)などの意図しないエスケープ文字が混入するトラブルに注意が必要です。
【失敗例】 $(lsb_release -cs) の前に \ が入ってしまい、変数展開されず404エラーになる。
【成功するコマンド】 バックスラッシュ(\)を取り除いた以下のコマンドでリポジトリを追加します。
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io
4.2 テスト用コンテナの起動とお片付け
Dockerの動作確認としてApacheコンテナを起動し、確認後にお片付け(削除)を行います。
# コンテナの起動(ポート8080で公開)
docker run -dit --name my-apache-app -p 8080:80 httpd:2.4
# === 確認後のお片付けコマンド ===
# 1. コンテナを停止する
docker stop my-apache-app
# 2. コンテナを削除する
docker rm my-apache-app
# (オプション)強制終了&削除を1行で行う場合
# docker rm -f my-apache-app
4.3 Docker Composeのインストール
最近のUbuntuではシステム保護(PEP 668)のため、pip を使ったシステム全体へのPythonパッケージインストールがブロックされます。そのため、古い docker-compose ではなく、apt経由で公式の最新プラグインをインストールします。
sudo apt-get update
sudo apt-get install -y docker-compose-plugin
# バージョン確認(ハイフンなしのスペース空け)
docker compose version
4.4 uv のインストール
Pythonのバージョン管理やパッケージ管理を高速かつ安全に行うため、Rust製のモダンなツール uv を導入します。
curl -LsSf https://astral.sh/uv/install.sh | sh
source ~/.bashrc
# バージョン確認
uv --version
4.5 AWS CLI (v2) のインストール
古いv1を避けるため、AWS公式から最新のv2インストーラーを直接ダウンロードしてインストールします。
sudo apt-get install -y unzip
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
# バージョン確認
aws --version
4.6 Pythonのインストールと仮想環境の有効化
システムPythonを汚さずに、uv を使って特定のPythonバージョン(例: 3.14.3)をインストールし、プロジェクト用の仮想環境を構築します。
# 1. 指定バージョンのPythonをインストール(upgradeコマンドは使わない)
uv python install 3.14.3
# 2. 仮想環境(.venv)の作成
uv venv --python 3.14.3
# 3. 仮想環境の有効化
source .venv/bin/activate
# プロンプトの先頭に (ubuntu) や (.venv) が付けば成功
# バージョン確認
python --version
4.7 AWSの資格情報設定と接続テスト
Python(boto3)やAgentCoreからAWSリソースを操作できるよう、認証情報を設定します。
# AWS認証情報の設定(アクセスキー、シークレットキー、リージョンap-northeast-1等を対話式で入力)
aws configure
# 仮想環境にboto3をインストール
uv pip install boto3
# 接続テスト用スクリプトの作成と実行
cat << 'EOF' > test_aws.py
import boto3
def main():
try:
sts = boto3.client('sts')
response = sts.get_caller_identity()
print(f"✅ 接続成功! アカウントID: {response['Account']}")
except Exception as e:
print(f"❌ 接続失敗: {e}")
if __name__ == "__main__":
main()
EOF
python test_aws.py