Skip to content

Replace LocalStack with Floci for local AWS emulation - #428

Merged
niemyjski merged 1 commit into
mainfrom
floci
Sep 24, 2026
Merged

niemyjski merged 1 commit into
mainfrom
floci

Conversation

@ejsmith

@ejsmith ejsmith commented Sep 24, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Replace localstack/localstack:4.14.0 with floci/floci:2.1.0 in docker-compose.yml. Floci is a free, MIT-licensed drop-in replacement that listens on the same port (4566), so the test connection strings and CI's docker compose up -d && docker compose up ready step work unchanged.
  • Drop the LocalStack-specific settings: SERVICES, DEBUG, the data volume, the Docker socket mount, and the extra port range. Floci enables all services by default.
  • S3 test setup (S3FileStorageTests / ScopedS3StorageTests) now ignores BucketAlreadyOwnedByYouException. Floci, like real AWS outside us-east-1, returns that error when you re-create a bucket you already own. LocalStack returned 200.
  • Update the ServiceUrl XML docs and add a README note on running the emulator locally.

Testing

  • Ran dotnet test --solution Foundatio.AWS.slnx -c Release locally against Floci 2.1.0: 155 total, 146 passed, 9 skipped (existing Skip attributes), 0 failed.

πŸ€– Generated with Claude Code

Swap the docker-compose emulator from localstack/localstack to
floci/floci, a free drop-in replacement served on the same port (4566),
so the existing test connection strings are unchanged.

Floci returns BucketAlreadyOwnedByYou when re-creating an owned bucket
(as real AWS does outside us-east-1), so the S3 test setup now tolerates
that exception.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 24, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
πŸ“ Code Review βœ… Completed 2026-09-24T17:13:22.595108Z 5648515 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with πŸ‘€ while any review is running, comments if it has suggestions, and reacts with πŸ‘ once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

πŸ’‘ Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 56485155c0

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with πŸ‘.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread README.md
await storage.SaveFileAsync("docs/readme.txt", "Hello World");
```

The examples above point at [Floci](https://github.com/floci-io/floci), a free local AWS emulator. Run `docker compose up -d` from the repository root to start it on `http://localhost:4566`.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Include credentials in the Floci quick-start examples

On a fresh development machine without an AWS profile or credential environment variables, starting this Compose stack is insufficient to run any of the examples: S3FileStorage, SQSQueue, and SQSMessageBus all invoke DefaultAWSCredentialsIdentityResolver.GetCredentials() when their connection strings omit credentials (S3FileStorage.cs:46, SQSQueue.cs:36, and SQSMessageBus.cs:88). Add dummy AccessKey and SecretKey values, as the integration-test connection strings already do, or document the required environment variables so the advertised local setup works.

Useful? React with πŸ‘Β / πŸ‘Ž.

@niemyjski
niemyjski merged commit 4fe7d24 into main Sep 24, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants