llama-stack-mirror/docs/source/providers/files/remote_s3.md
Matthew Farrellee f520e244d9
feat: Add S3 Files Provider (#3202)
Implements a complete S3-based file storage provider for Llama Stack
with:
    
    Core Implementation:
    - S3FilesImpl class with full OpenAI Files API compatibility
    - Support for file upload, download, listing, deletion operations
    - Sqlite-based metadata storage for fast queries and API compliance
    - Configurable S3 endpoints (AWS, MinIO, LocalStack support)
    
    Key Features:
    - Automatic S3 bucket creation and management
    - Metadata persistence
    - Proper error handling for S3 connectivity and permissions
    
    Dependencies:
    - Adds boto3 for AWS S3 integration
    - Adds moto[s3] for testing infrastructure
    
    Testing:
    
Unit: `./scripts/unit-tests.sh tests/unit/files
tests/unit/providers/files`
    
     Integration:
    
Start MinIO: `podman run --rm -it -p 9000:9000 minio/minio server /data`
    
Start stack w/ S3 provider: `S3_ENDPOINT_URL=http://localhost:9000
AWS_ACCESS_KEY_ID=minioadmin AWS_SECRET_ACCESS_KEY=minioadmin
S3_BUCKET_NAME=llama-stack-files uv run llama stack build --image-type
venv --providers files=remote::s3 --run`
    
Run integration tests: `./scripts/integration-tests.sh --stack-config
http://localhost:8321 --provider ollama --test-subdirs files`
2025-08-22 10:38:59 -04:00

1.4 KiB

remote::s3

Description

AWS S3-based file storage provider for scalable cloud file management with metadata persistence.

Configuration

Field Type Required Default Description
bucket_name <class 'str'> No S3 bucket name to store files
region <class 'str'> No us-east-1 AWS region where the bucket is located
aws_access_key_id str | None No AWS access key ID (optional if using IAM roles)
aws_secret_access_key str | None No AWS secret access key (optional if using IAM roles)
endpoint_url str | None No Custom S3 endpoint URL (for MinIO, LocalStack, etc.)
auto_create_bucket <class 'bool'> No False Automatically create the S3 bucket if it doesn't exist
metadata_store utils.sqlstore.sqlstore.SqliteSqlStoreConfig | utils.sqlstore.sqlstore.PostgresSqlStoreConfig No sqlite SQL store configuration for file metadata

Sample Configuration

bucket_name: ${env.S3_BUCKET_NAME}
region: ${env.AWS_REGION:=us-east-1}
aws_access_key_id: ${env.AWS_ACCESS_KEY_ID:=}
aws_secret_access_key: ${env.AWS_SECRET_ACCESS_KEY:=}
endpoint_url: ${env.S3_ENDPOINT_URL:=}
auto_create_bucket: ${env.S3_AUTO_CREATE_BUCKET:=false}
metadata_store:
  type: sqlite
  db_path: ${env.SQLITE_STORE_DIR:=~/.llama/dummy}/s3_files_metadata.db