1
0
Fork 0
mirror of https://github.com/chrislusf/seaweedfs synced 2025-07-25 21:12:47 +02:00
seaweedfs/weed/s3api/policy_engine/POLICY_EXAMPLES.md
2025-07-13 16:21:36 -07:00

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