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

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

実際のDockerとの統合
モックのみのエミュレーターとは異なり、Flociはインプロセスエミュレーションでは忠実性が損なわれるサービス ? ステートフルなデータベース、接続の多いプロトコル、ネイティブ実行が必要なランタイム 、 それに対して、実際のDockerコンテナを起動します。その結果、簡略化された近似ではなく、実際のエンジンに対してワイヤー互換の動作が実現されます。
Installation
Flociは、Dockerイメージとして、あらかじめビルドされたネイティブバイナリとして、あるいはソースからビルドして、3つの方法で実行できます。今回の記事ではDockerからインストールします。
My環境
こちらは自分の環境です。
threespc01@threespc01-MINI-S:~$ lscpu
|
|---|
threespc01@threespc01-MINI-S:~$ cat /etc/os-release
|
|---|
要件
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”
|
|---|
CHATGPT様によると、AWS CLI(Command Line Interface) は、コマンドライン(ターミナル)からAWSのサービスを操作できるツールです。
- S3バケットの作成・削除・ファイルのアップロード/ダウンロード
- EC2インスタンスの起動・停止
- IAMユーザーの管理
- その他ほぼすべてのAWSサービスの操作
アクセスの準備
今度はTerminalから以下のコマンドを実行します。
export AWS_ENDPOINT_URL=http://localhost:4566
|
|---|
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 | 設定しない(不要) | |
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 |
|---|
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/
|
|---|