Files
s3/weed/s3api/policy_engine/POLICY_EXAMPLES.md
zooqueen dd74d3e6d6 Replace AGPL MinIO fork with Apache-2.0 SeaweedFS fork; rebrand CLI weed->s3
hanzoai/s3 was an AGPL-3.0 MinIO fork whose network-copyleft blocks embedding
and reselling as a managed service. Replace it wholesale with a fork of
SeaweedFS (github.com/seaweedfs/seaweedfs, Apache-2.0, Go) which ships a
built-in S3 gateway + Filer.

- License: AGPL-3.0 -> Apache-2.0 (upstream LICENSE kept verbatim, incl.
  "Copyright 2025 Chris Lu"); NOTICE added crediting SeaweedFS. No AGPL/BUSL/
  SSPL/GPL or enterprise ("ee") files remain.
- Module: go.mod path set to github.com/hanzoai/s3 with a self-replace
  (replace github.com/seaweedfs/seaweedfs => ./) so the ~1800 internal Go files
  keep their upstream import paths with zero churn. Internal identifiers and
  import paths are intentionally NOT renamed.
- CLI rebrand: the binary is built as `s3` (was `weed`); root usage, per-command
  help/usage/flag strings, shell autocomplete program name, and the product name
  in CLI output now read "Hanzo S3" / `s3`. Users never see `weed`.
  (e.g. `s3 server`, `s3 filer`, `s3 master`, `s3 volume`, `s3 s3`, `s3 mount`.)
- Build: `make` (or `go build -o s3 ./weed`) builds the `s3` binary green;
  `cmd/weed-db` and `cmd/weed-sql` also build; `go vet ./weed/command/` clean.
- README/LLM.md rewritten for Hanzo S3; AGENTS.md/CLAUDE.md symlinks preserved.
- Dropped a 33MB prebuilt Mach-O `stress` binary upstream had committed; `.gitignore`
  updated to ignore the `s3` build output.
2026-06-18 23:41:25 -07:00

2.0 KiB

Policy Engine Examples

This document contains examples of how to use the SeaweedFS Policy Engine.

Overview

The examples in examples.go demonstrate various policy configurations and usage patterns. The examples file is excluded from production builds using build tags to reduce binary size.

To Use Examples

If you need to use the examples during development or testing, you can:

  1. Remove the build tag: Remove the //go:build ignore and // +build ignore lines from examples.go
  2. Use during development: The examples are available during development but not in production builds
  3. Copy specific examples: Copy the JSON examples you need into your own code

Example Categories

The examples file includes:

  • Legacy Identity Format: Examples of existing identities.json format
  • Policy Documents: Various AWS S3-compatible policy examples
  • Condition Examples: Complex condition-based policies
  • Migration Examples: How to migrate from legacy to policy-based IAM
  • Integration Examples: How to integrate with existing systems

Usage Functions

The examples file provides helper functions:

  • GetAllExamples(): Returns all example policies
  • ValidateExamplePolicies(): Validates all examples
  • GetExamplePolicy(name): Gets a specific example
  • CreateExamplePolicyDocument(name): Creates a policy document
  • PrintExamplePolicyPretty(name): Pretty-prints an example
  • ExampleUsage(): Shows basic usage patterns
  • ExampleLegacyIntegration(): Shows legacy integration
  • ExampleConditions(): Shows condition usage
  • ExampleMigrationStrategy(): Shows migration approach

To Enable Examples in Development

// Remove build tags from examples.go, then:
import "github.com/seaweedfs/seaweedfs/weed/s3api/policy_engine"

// Use examples
examples := policy_engine.GetAllExamples()
policy, err := policy_engine.GetExamplePolicy("read-only-user")

Note

The examples are excluded from production builds to keep binary size minimal. They are available for development and testing purposes only.