floci#Part01_Dockerから簡単に環境構築しよう!

こちらは新しい記事シリーズでflociを利用しAWSの勉強を進めたいと思います。最初に環境のセットアップからスタートします。

floci

flociは無料のオープンソース製ローカルAWSエミュレーター、アカウント不要、機能制限なし、docker compose up するだけです。

実際のDockerとの統合

モックのみのエミュレーターとは異なり、Flociはインプロセスエミュレーションでは忠実性が損なわれるサービス ? ステートフルなデータベース、接続の多いプロトコル、ネイティブ実行が必要なランタイム 、 それに対して、実際のDockerコンテナを起動します。その結果、簡略化された近似ではなく、実際のエンジンに対してワイヤー互換の動作が実現されます。

Installation

Flociは、Dockerイメージとして、あらかじめビルドされたネイティブバイナリとして、あるいはソースからビルドして、3つの方法で実行できます。今回の記事ではDockerからインストールします。

My環境

こちらは自分の環境です。

threespc01@threespc01-MINI-S:~$ lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Address sizes: 39 bits physical, 48 bits virtual
Byte Order: Little Endian

threespc01@threespc01-MINI-S:~$ cat /etc/os-release
PRETTY_NAME=”Ubuntu 24.04.1 LTS”
NAME=”Ubuntu”
VERSION_ID=”24.04″
VERSION=”24.04.1 LTS (Noble Numbat)”
VERSION_CODENAME=noble
ID=ubuntu
ID_LIKE=debian
HOME_URL=”https://www.ubuntu.com/”
SUPPORT_URL=”https://help.ubuntu.com/”
BUG_REPORT_URL=”https://bugs.launchpad.net/ubuntu/”
PRIVACY_POLICY_URL=”https://www.ubuntu.com/legal/terms-and-policies/privacy-policy”
UBUNTU_CODENAME=noble
LOGO=ubuntu-logo

要件

Docker 20.10 以降

docker-compose v2 以降(プラグイン構文。スタンドアロンの docker-compose ではない)

コマンド

こちらのコマンドでflociをインストールしましょう。

mkdir floci && cd floci

cat > docker-compose.yml << ‘EOF’

services:

floci:

image: hectorvent/floci:latest

ports:

– “4566:4566”

volumes:

– ./data:/app/data

EOF

docker compose up

テスト

FlociにインストールされているマシンのIPアドレス:4566をアクセスし、下記のXMLが表示されたらOKです。

aws-cliインストール

最初にaws-cliツールをインストールします。

curl “https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip” -o “awscliv2.zip”
unzip awscliv2.zip
sudo ./aws/install

aws –version

You can now run: /usr/local/bin/aws –version
aws-cli/2.34.45 Python/3.14.4 Linux/6.14.0-24-generic exe/x86_64.ubuntu.24

CHATGPT様によると、AWS CLI(Command Line Interface) は、コマンドライン(ターミナル)からAWSのサービスを操作できるツールです。

  • S3バケットの作成・削除・ファイルのアップロード/ダウンロード
  • EC2インスタンスの起動・停止
  • IAMユーザーの管理
  • その他ほぼすべてのAWSサービスの操作

アクセスの準備

今度はTerminalから以下のコマンドを実行します。

export AWS_ENDPOINT_URL=http://localhost:4566
export AWS_DEFAULT_REGION=us-east-1
export AWS_ACCESS_KEY_ID=test
export AWS_SECRET_ACCESS_KEY=test

export AWS_ENDPOINT_URL=http://localhost:4566

AWSへのリクエスト先を、本物のAWSクラウドではなく、自分のPC上で動いているFloci(ポート4566)に向ける。

export AWS_DEFAULT_REGION=us-east-1

デフォルトのリージョンを us-east-1(米国東部)に設定する。Flociはリアルなリージョンを気にしないが、AWS CLIやSDKがリージョン指定を必須とするため、ダミーとして設定している。

export AWS_ACCESS_KEY_ID=test

AWSの認証に使うアクセスキーIDを test に設定する。Flociは認証不要なので、中身は何でもよく test という文字列をダミーとして使っている。

export AWS_SECRET_ACCESS_KEY=test

同様に、シークレットアクセスキーも test というダミー値を設定する。AWS CLIやSDKは値が空だとエラーになるため、形式を満たすために必要。

export AWS_ENDPOINT_URL=http://localhost:4566

export AWS_DEFAULT_REGION=us-east-1

export AWS_ACCESS_KEY_ID=test

export AWS_SECRET_ACCESS_KEY=test

実際のAWSに接続する場合は異なりますが、例えば:

環境変数

Floci

本物のAWS

AWS_ENDPOINT_URL

http://localhost:4566

設定しない(不要)

AWS_ACCESS_KEY_ID

test(何でもOK)

本物のキー

AWS_SECRET_ACCESS_KEY

test(何でもOK)

本物のキー

AWS_DEFAULT_REGION

何でもOK

実際に使うリージョン

S3バケットの動作テスト

次はS3バケットを作成→FileをUpload→そしてDownloadしてみましょう。

aws s3 mb s3://test-bucket
aws s3 ls

echo “Hello Floci!” > test.txt

aws s3 cp test.txt s3://test-bucket/

aws s3 ls s3://test-bucket/

aws s3 cp s3://test-bucket/test.txt downloaded.txt
cat downloaded.txt

S3バケット?

CHATGPT様によると、S3バケット(Amazon S3 Bucket)は、Amazon Web Services(AWS)のクラウドストレージサービスの基本単位です。

S3とは?

S3(Simple Storage Service)は、AWSが提供するオブジェクトストレージサービスで、インターネット経由でファイルを保存・取得できます。

バケットとは?

バケットは、ファイル(オブジェクト)を入れる「フォルダ」のようなもので、以下の特徴があります。

コンテナ:画像、動画、ドキュメント、バックアップなど、あらゆるデータを保存できる入れ物

グローバルに一意な名前:バケット名はAWS全体で重複できない

リージョン指定:データを保存する地理的な場所(例:東京、米国東部など)を選べる

容量無制限:保存できるデータ量に上限がない

主な用途

ウェブサイトの静的ファイル(HTML、CSS、画像)のホスティング

アプリのバックアップ・ログ保存

動画・メディアファイルの配信

データレイクやビッグデータの保管

アクセス制御

バケットごとにアクセス権限を細かく設定でき、パブリック(誰でもアクセス可)またはプライベート(特定ユーザーのみ)に設定できます。

aws s3 mb s3://test-bucket

mb = make bucket。test-bucket という名前のS3バケットを作成する。

aws s3 ls

ls = list。存在するバケットの一覧を表示する。

echo “Hello Floci!” > test.txt

echo でテキストを出力し、> でファイルに書き込む。「Hello Floci!」という内容の test.txt をローカルに作成する。

aws s3 cp test.txt s3://test-bucket/

cp = copy。ローカルの test.txt をS3の test-bucket にアップロードする。

aws s3 ls s3://test-bucket/

バケット内のファイル一覧を表示する。アップロードが成功したか確認するため。

aws s3 cp s3://test-bucket/test.txt downloaded.txt

S3の test.txt をローカルに downloaded.txt という名前でダウンロードする。

cat downloaded.txt

cat = concatenate。downloaded.txt の中身をターミナルに表示する。「Hello Floci!」と表示されれば成功。

結果

Done!Fileを無事にUpload/Downloadできました。

threespc01@threespc01-MINI-S:~/Desktop/floci$ cd data/
threespc01@threespc01-MINI-S:~/Desktop/floci/data$ ls
threespc01@threespc01-MINI-S:~/Desktop/floci/data$ cd ..
threespc01@threespc01-MINI-S:~/Desktop/floci$ cd ..
threespc01@threespc01-MINI-S:~/Desktop$ echo “Hello Floci!” > test.txt
threespc01@threespc01-MINI-S:~/Desktop$ aws s3 cp test.txt s3://test-bucket/
upload: ./test.txt to s3://test-bucket/test.txt
threespc01@threespc01-MINI-S:~/Desktop$ aws s3 ls s3://test-bucket/
2026-05-12 15:52:37 13 test.txt
threespc01@threespc01-MINI-S:~/Desktop$ rm test.txt
threespc01@threespc01-MINI-S:~/Desktop$ aws s3 cp s3://test-bucket/test.txt downloaded.txt
cat downloaded.txt
download: s3://test-bucket/test.txt to ./downloaded.txt
Hello Floci!

シェアする

  • このエントリーをはてなブックマークに追加

フォローする