LocalStack有料化の代替はFloci!軽量AWSローカルエミュレータ徹底比較【2026年版】

LocalStack有料化の代替はFloci!軽量AWSローカルエミュレータ徹底比較【2026年版】
目次

この記事でわかること

  • LocalStackコミュニティ版が2026年3月から実質有料化された背景
  • 代替候補「Floci(フロチ)」の特徴とLocalStackとの定量比較
  • Flociへの移行手順(docker-compose・環境変数・CI連携)
  • Moto・DynamoDB Localなど他の代替ツールとの使い分け
  • 本番環境との差異など移行時の注意点

AWSローカル開発のデファクトだった LocalStack のコミュニティ版が、2026年3月に認証トークン必須となり、事実上無料利用が終了しました。本記事では、無料・軽量・MITライセンスで注目を集める代替ツール Floci を中心に、LocalStack代替の選択肢を実用面から徹底比較します。


LocalStackコミュニティ版が「実質有料化」された経緯

2026年3月のアップデートで、LocalStack Community版はAuth Token(ログイン必須)が標準化されました。無料枠は残るものの、以下の制約が追加されています。

  • 起動時にアカウント認証が必要(匿名利用の廃止)
  • 匿名Dockerイメージの利用制限、商用利用範囲の縮小
  • 一部サービス(高度なIAM・高度なモック挙動)がPro専用に移行

CI/CD 環境でのシードレス利用や、オフライン開発、OSS配布用のテスト環境構築など、従来の自由度の高い使い方がしづらくなりました。これを受けて「LocalStack 有料化 代替」「awslocal 代替」といった検索需要が一気に高まっています。


Floci(フロチ)とは? — LocalStack代替の第一候補

Floci は Quarkus ベースで実装された軽量なAWSローカルエミュレータです。LocalStackとAPI互換を意識しており、エンドポイントURL http://localhost:4566 をそのまま利用可能で、既存のboto3/AWS SDKコードをほぼ変更ゼロで移行できます。

Flociの強み

  • MITライセンスで商用利用・改変・再配布が自由
  • Quarkusネイティブビルドにより、起動24ms・メモリ13MiBの極薄フットプリント
  • Dockerイメージ90MB — LocalStackの約1/10以下
  • AWS認証トークン不要、オフライン起動可能
  • S3 / DynamoDB / Lambda / SQS / SNS など主要24サービスをサポート

Floci vs LocalStack 徹底比較

項目FlociLocalStack Community(2026年3月以降)
認証トークン不要必須(Auth Token)
起動時間~24ms~3.3秒
アイドル時メモリ~13 MiB~143 MiB
Dockerイメージ~90 MB~1.0 GB
ライセンスMIT(商用可)Community版にも制限あり
オフライン利用トークン認証があるため制限あり
ネイティブバイナリあり(Quarkus GraalVM)なし
対応サービス24サービス80+ サービス(Pro含む)
ステートフル永続化memory/persistent/hybrid/wal設定で可
エンドポイントURLhttp://localhost:4566http://localhost:4566

どちらを選ぶべきか? 対応サービス数ではLocalStackに軍配が上がりますが、ほとんどのローカル開発で必要なS3・DynamoDB・SQS・Lambda・SNS・IAM は Floci で十分カバーできます。起動の速さ・CI消費リソース・ライセンス条件を重視するなら Floci が最有力です。


Flociの対応AWSサービス(24サービス)

インプロセス(ステートレス)

  • SSM Parameter Store
  • SQS / SNS
  • IAM / STS
  • Cognito
  • KMS
  • Kinesis
  • Secrets Manager
  • Step Functions
  • CloudFormation
  • EventBridge
  • CloudWatch
  • ACM / SES
  • API Gateway(REST & HTTP v2)

インプロセス(ステートフル)

  • S3(Object Lock対応)
  • DynamoDB(トランザクション・Streams対応)

Dockerコンテナベース

  • Lambda(ウォームプール・エイリアス・Function URL対応)
  • ElastiCache(Redis/Valkey・IAM認証対応)
  • RDS(PostgreSQL/MySQL・IAM認証対応)

Flociのセットアップ手順

1. 最小構成の docker-compose.yml

services:
  floci:
    image: hectorvent/floci:latest
    ports:
      - "4566:4566"
    volumes:
      - ./data:/app/data
docker compose up -d

2. 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

3. アプリコンテナと同時起動する構成

services:
  floci:
    image: hectorvent/floci:latest
    ports:
      - "4566:4566"
    environment:
      - FLOCI_HOSTNAME=floci

  my-app:
    environment:
      - AWS_ENDPOINT_URL=http://floci:4566
    depends_on:
      - floci

各言語でのSDK接続例

Python(boto3)

import boto3

client = boto3.client(
    "s3",
    endpoint_url="http://localhost:4566",
    region_name="us-east-1",
    aws_access_key_id="test",
    aws_secret_access_key="test",
)

Node.js(AWS SDK v3)

import { S3Client } from "@aws-sdk/client-s3";

const client = new S3Client({
    endpoint: "http://localhost:4566",
    region: "us-east-1",
    credentials: { accessKeyId: "test", secretAccessKey: "test" },
    forcePathStyle: true,
});

Java(AWS SDK v2)

DynamoDbClient client = DynamoDbClient.builder()
    .endpointOverride(URI.create("http://localhost:4566"))
    .region(Region.US_EAST_1)
    .credentialsProvider(StaticCredentialsProvider.create(
        AwsBasicCredentials.create("test", "test")))
    .build();

Go(AWS SDK v2)

cfg, _ := config.LoadDefaultConfig(context.TODO(),
    config.WithRegion("us-east-1"),
    config.WithCredentialsProvider(
        credentials.NewStaticCredentialsProvider("test", "test", "")),
    config.WithEndpointResolverWithOptions(
        aws.EndpointResolverWithOptionsFunc(func(service, region string, opts ...interface{}) (aws.Endpoint, error) {
            return aws.Endpoint{URL: "http://localhost:4566"}, nil
        })),
)

LocalStackからの移行もエンドポイントURLはそのまま http://localhost:4566 なので設定変更なしで切り替えられます。


Terraform との連携

LocalStackで使っていた Terraform の設定は、エンドポイントを変えずに Floci にも流用できます。

provider "aws" {
  region                      = "us-east-1"
  access_key                  = "test"
  secret_key                  = "test"
  skip_credentials_validation = true
  skip_metadata_api_check     = true
  skip_requesting_account_id  = true
  s3_use_path_style           = true

  endpoints {
    s3       = "http://localhost:4566"
    dynamodb = "http://localhost:4566"
    sqs      = "http://localhost:4566"
    lambda   = "http://localhost:4566"
  }
}

tflocal の代わりに通常の terraform apply が使えます。


GitHub Actions でのCI活用例

軽量なため、CIでの毎回起動コストが小さいのが Floci の大きな利点です。

name: test
on: [push]
jobs:
  test:
    runs-on: ubuntu-latest
    services:
      floci:
        image: hectorvent/floci:latest
        ports:
          - 4566:4566
    env:
      AWS_ENDPOINT_URL: http://localhost:4566
      AWS_DEFAULT_REGION: us-east-1
      AWS_ACCESS_KEY_ID: test
      AWS_SECRET_ACCESS_KEY: test
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with:
          python-version: "3.12"
      - run: pip install -r requirements.txt
      - run: pytest

LocalStackで数分かかっていたCIジョブの初期化が数秒で終わるケースもあります。


主要な環境変数

変数名デフォルト説明
QUARKUS_HTTP_PORT4566HTTPポート
FLOCI_DEFAULT_REGIONus-east-1デフォルトリージョン
FLOCI_DEFAULT_ACCOUNT_ID000000000000アカウントID
FLOCI_BASE_URLhttp://localhost:4566レスポンスURL
FLOCI_HOSTNAME(未設定)Dockerホスト名上書き
FLOCI_STORAGE_MODEmemorymemory / persistent / hybrid / wal
FLOCI_STORAGE_PERSISTENT_PATH./dataデータ保存先

ストレージモードを persistent にするとコンテナ再起動後もデータが残ります。CIで状態をリセットしたい場合は memory で十分です。


LocalStackからの移行手順(チェックリスト)

  1. docker-compose.yml のイメージを localstack/localstackhectorvent/floci:latest に変更
  2. AWS_ENDPOINT_URL はそのまま http://localhost:4566
  3. awslocal コマンドを aws --endpoint-url=http://localhost:4566 に置換(または alias awslocal='aws --endpoint-url=http://localhost:4566'
  4. LocalStack Pro 限定機能(高度なIAM・XRay・一部Lambdaレイヤ機能)を使っていないか確認
  5. 永続化が必要なら FLOCI_STORAGE_MODE=persistent を設定

S3の動作確認

aws s3 mb s3://test-bucket --endpoint-url=http://localhost:4566
echo "hello" > test.txt
aws s3 cp test.txt s3://test-bucket/ --endpoint-url=http://localhost:4566
aws s3 ls s3://test-bucket/ --endpoint-url=http://localhost:4566

Floci以外のLocalStack代替候補

ツール特徴向いている用途
FlociQuarkusベース、24サービス、MIT一般的なローカル開発・CI
MotoPythonライブラリ、サーバー機能も提供Python単体テスト、スタンドアロン検証
DynamoDB LocalAWS公式、DynamoDBのみDynamoDB専用の深い検証
MinIOS3互換、本番利用実績豊富S3互換ストレージのみ必要な場合
ElasticMQSQS互換の軽量Javaサーバキュー処理のユニットテスト

汎用なら FlociPython単体テストなら Moto単一サービスの深い検証なら公式ツール、という使い分けがおすすめです。


Floci利用時の注意点・既知の制限

  • 対応サービス数はLocalStack Proに及ばない(XRay、AppSync、RedShiftなど未対応)
  • Lambdaはコンテナ起動のため、初回コールドスタートはそれなりに時間がかかる
  • 本番AWSのIAMポリシー細部や整合性制約は完全再現されない
  • DynamoDB Streams のイベント順序など、タイミング依存のテストは本番と挙動が異なる場合がある
  • 本番リリース前には実AWSでの結合テストを必ず実施する

ローカルは「機能確認」、本番相当環境で「整合性確認」という二段構えを推奨します。


よくある質問(FAQ)

Q1. LocalStackは完全に使えなくなったのですか?

いいえ。2026年3月以降もAuth Tokenを取得すれば Community版は利用可能ですが、匿名利用やオフラインCIなど従来の自由な使い方は制限されます。ライセンス条項・商用利用条件を必ず確認してください。

Q2. Flociは商用プロダクトのCIで使えますか?

はいMITライセンスで再配布・商用利用が可能なため、企業内CI/CDや商用プロダクトでも自由に使えます。

Q3. LocalStackで書いたテストコードはそのまま動きますか?

エンドポイントURL http://localhost:4566 が同じため、S3・DynamoDB・SQS・Lambda・SNSなどの主要サービスは基本的にそのまま動作します。Pro限定機能やXRayなど未対応サービスを使っている場合のみ修正が必要です。

Q4. CI/CDでのおすすめの使い方は?

GitHub Actions や GitLab CI の services: として直接起動するのが最もシンプルです。イメージが90MB・起動数十msのため、ジョブ全体の時間短縮に直結します。

Q5. Flociとminio/DynamoDB Localの違いは?

MinIOはS3のみ、DynamoDB LocalはDynamoDBのみに特化しています。Flociは複数AWSサービスを1コンテナで再現するため、S3とDynamoDBとSQSを同時に使うような典型的なWebアプリ開発には Floci が便利です。

Q6. 永続化はできますか?

FLOCI_STORAGE_MODE=persistent を設定し、/app/data をボリュームマウントすれば、コンテナ再起動後もS3オブジェクトやDynamoDBのデータが残ります。


まとめ

  • LocalStack Community版は2026年3月から認証必須となり、従来の匿名・オフライン利用は困難に
  • Flociは MIT・無料・軽量で、LocalStackのフットプリントを1/10以下に圧縮
  • http://localhost:4566 のエンドポイント互換で、移行コストはほぼゼロ
  • S3・DynamoDB・Lambda・SQS・SNSなど主要24サービスをカバー
  • CI/CD消費リソースを大幅削減でき、GitHub Actionsやコンテナ環境と相性が良い
  • 本番AWSとの挙動差異だけは注意し、結合テストは実AWSで

LocalStackの有料化に困っている開発チームにとって、Flociは最小コストでローカルAWS開発を取り戻す現実解です。


関連記事