Windows + VirtualBox + Ubuntu 24.04 Server で Floci を使ってローカル AWS 環境を作る Step 1
1. はじめに
ローカル環境で AWS の基本サービスを試したい場合、毎回AWS上にリソースを作成すると、検証用でも費用や削除忘れが気になります。
そこで今回は、Windows 上の VirtualBox に Ubuntu 24.04 Server を構築し、Docker 上で Floci を動かすことで、ローカル AWS 互換環境を作成します。
Step 1 では、まず以下のサービスを検証対象にします。
- S3
- DynamoDB
- Lambda
- IAM
- STS
- KMS
- Secrets Manager
RDS / ECS / EC2 は Docker-backed な検証になり重くなるため、Step 2 以降で扱います。
2. 環境
| 項目 | 内容 |
|---|---|
| ホストOS | Windows 11 |
| 仮想化 | VirtualBox |
| ゲストOS | Ubuntu 24.04 Server |
| コンテナ | Docker / Docker Compose |
| AWS互換環境 | Floci |
| 操作ツール | AWS CLI v2 |
3. 全体構成
Windows 11
└─ VirtualBox
└─ Ubuntu 24.04 Server
├─ Docker
├─ Docker Compose
├─ AWS CLI v2
└─ Floci
└─ http://localhost:4566
Windows から直接 Floci の 4566 番ポートを公開するのではなく、最初は SSH トンネル経由で使う構成にすると安全です。
4. VirtualBox の推奨設定
| 項目 | 推奨 |
|---|---|
| CPU | 4 vCPU |
| メモリ | 8GB以上 |
| ディスク | 80GB以上 |
| ネットワーク | NAT + SSHポートフォワード |
NAT の場合は、以下のように SSH 用のポートフォワードを設定します。
| 用途 | ホストIP | ホストポート | ゲストポート |
|---|---|---|---|
| SSH | 127.0.0.1 | 2222 | 22 |
5. フォルダー構成と環境設定
floci_aws_local_step1のスクリプトはZIPからダウンロードしてください。
floci_aws_local_step1/
compose.yaml
.env
README_STEP1.md
lambda/
handler.py
scripts/
00_install_docker_awscli.sh
01_start_floci.sh
02_export_env.sh
03_smoke_test_core.sh
04_show_status.sh
05_stop_floci.sh
99_reset_floci_step1.sh
windows/
open_ssh_tunnel_to_floci.bat
set_aws_env_for_floci.bat
5.1. compose.yaml
services:
floci:
image: floci/floci:latest
container_name: floci
ports:
- "127.0.0.1:4566:4566"
environment:
AWS_DEFAULT_REGION: ${AWS_DEFAULT_REGION:-us-east-1}
AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID:-test}
AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY:-test}
FLOCI_STORAGE_MODE: persistent
FLOCI_STORAGE_PERSISTENT_PATH: /app/data
volumes:
- ./data/floci:/app/data
- /var/run/docker.sock:/var/run/docker.sock
restart: unless-stopped
/var/run/docker.sock をマウントしているのは、Lambda など Docker を利用するサービスを検証するためです。
5.2. Docker と AWS CLI をインストールする
Ubuntu 24.04 Server 側で実行します。
chmod +x scripts/*.sh
./scripts/00_install_docker_awscli.sh
Docker グループ反映のため、一度ログアウト・ログインします。
すぐ反映したい場合は以下でもよいです。
newgrp docker
確認します。
docker version
docker compose version
aws --version
5.3. Floci を起動する
./scripts/01_start_floci.sh
起動確認します。
docker compose ps
docker compose logs -f floci
5.4. AWS CLI を Floci に向ける
source ./scripts/02_export_env.sh
設定内容は以下のイメージです。
export AWS_ENDPOINT_URL=http://127.0.0.1:4566
export AWS_DEFAULT_REGION=us-east-1
export AWS_ACCESS_KEY_ID=test
export AWS_SECRET_ACCESS_KEY=test
5.5. S3 / DynamoDB / Lambda などをまとめて確認する
./scripts/03_smoke_test_core.sh
このスクリプトでは、概ね以下を確認します。
- STS の呼び出し
- S3 バケット作成
- S3 オブジェクト put / get
- DynamoDB テーブル作成
- DynamoDB item put / get
- IAM ロール作成
- KMS key 作成
- Secrets Manager secret 作成・取得
- Lambda 関数作成・実行
5.6. 状態確認
./scripts/04_show_status.sh
5.7. 停止
./scripts/05_stop_floci.sh
5.8. 完全リセット
データも含めて初期化したい場合は、以下を実行します。
./scripts/99_reset_floci_step1.sh
6. Windows 側から使う場合
Windows 側から SSH トンネルを張ります。
ssh -N -L 4566:127.0.0.1:4566 -p 2222 ubuntu@127.0.0.1
別の PowerShell / コマンドプロンプトで AWS CLI を Floci に向けます。
set AWS_ENDPOINT_URL=http://127.0.0.1:4566
set AWS_DEFAULT_REGION=us-east-1
set AWS_ACCESS_KEY_ID=test
set AWS_SECRET_ACCESS_KEY=test
確認します。
aws s3 ls
aws dynamodb list-tables
aws sts get-caller-identity
7. 注意点
Floci は AWS 互換のローカルエミュレータですが、本番 AWS と完全に同じ挙動を保証するものではありません。
特に以下は、最終的には実 AWS でも確認するのが安全です。
- IAM 権限
- KMS
- Lambda 実行環境
- VPC / ネットワーク
- 本番相当の権限設計
- RDS / ECS / EC2 連携
また、/var/run/docker.sock をコンテナに渡す構成は強い権限を持つため、外部公開せず、検証用の閉じた環境で使うのがよいです。
8. Step 1 のまとめ
今回は、Windows 11 + VirtualBox + Ubuntu 24.04 Server 上に、Docker と Floci を使ったローカル AWS 互換環境を作成しました。
Step 1 では、以下の基本サービスを検証できる状態にしました。
AWS 互換環境 Step1
- S3
- DynamoDB
- Lambda
- IAM
- STS
- KMS
- Secrets Manager
次の Step 2 では、RDS / ECS / EC2 など、Docker-backed なサービスの検証に進めます。
9. 参考リンク
-
Floci GitHub
https://github.com/floci-io/floci -
Docker Engine for Ubuntu
https://docs.docker.com/engine/install/ubuntu/ -
AWS CLI v2 インストール
https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html -
VirtualBox
https://www.virtualbox.org/