IntegratedS3.Testing
10.0.1
See the version list below for details.
dotnet add package IntegratedS3.Testing --version 10.0.1
NuGet\Install-Package IntegratedS3.Testing -Version 10.0.1
<PackageReference Include="IntegratedS3.Testing" Version="10.0.1" />
<PackageVersion Include="IntegratedS3.Testing" Version="10.0.1" />
<PackageReference Include="IntegratedS3.Testing" />
paket add IntegratedS3.Testing --version 10.0.1
#r "nuget: IntegratedS3.Testing, 10.0.1"
#:package IntegratedS3.Testing@10.0.1
#addin nuget:?package=IntegratedS3.Testing&version=10.0.1
#tool nuget:?package=IntegratedS3.Testing&version=10.0.1
IntegratedS3
A modular ASP.NET Core library that exposes S3-compatible HTTP endpoints backed by pluggable storage providers.
Features
- S3-compatible REST API — bucket and object operations over standard HTTP
- Pluggable backends — ship with disk and native S3 providers, or bring your own
- SigV4 / SigV4a authentication — optional AWS Signature V4 request signing and verification
- Multi-backend orchestration — replication policies across providers
- Presigned URLs — time-limited, shareable download/upload links
- Multipart uploads — chunked uploads with server-managed assembly
- Versioning & object lock — per-bucket version history and retention policies
- Bucket configuration — tagging, lifecycle, CORS, and policy support
- Server-side encryption (SSE) — encryption at the storage layer
- Health checks — liveness and readiness probes for each backend
- OpenTelemetry observability — built-in traces, metrics, and structured logging
- AOT & trimming compatible — targets .NET 10 with zero AOT warnings
Quick Start
Install the main consumer package and a storage provider:
dotnet add package IntegratedS3.AspNetCore
dotnet add package IntegratedS3.Provider.Disk
Program.cs
var builder = WebApplication.CreateSlimBuilder(args);
builder.Services.AddIntegratedS3(builder.Configuration);
builder.Services.AddDiskStorage(new DiskStorageOptions
{
RootPath = "App_Data/IntegratedS3",
CreateRootDirectory = true
});
var app = builder.Build();
app.MapIntegratedS3Endpoints();
app.Run();
appsettings.json
{
"IntegratedS3": {
"ServiceName": "My S3 Host"
}
}
Your S3-compatible endpoint is now running at /integrated-s3.
Packages
| Package | Description |
|---|---|
| IntegratedS3.AspNetCore | ASP.NET Core DI registration + endpoint mapping (main consumer package) |
| IntegratedS3.Provider.Disk | Disk-backed storage provider |
| IntegratedS3.Provider.S3 | Native AWS S3 / S3-compatible storage provider |
| IntegratedS3.Abstractions | Provider-agnostic contracts and observability surface |
| IntegratedS3.Core | Orchestration, replication policies, authorization |
| IntegratedS3.Protocol | S3 wire protocol — XML serialization, SigV4, presigning |
| IntegratedS3.EntityFramework | EF Core catalog and multipart state persistence |
| IntegratedS3.Client | First-party .NET HTTP client for IntegratedS3 hosts |
| IntegratedS3.Testing | Provider contract tests and test helpers (xUnit) |
Configuration
AddIntegratedS3(builder.Configuration) binds the IntegratedS3 configuration section to IntegratedS3Options. Key properties:
| Property | Default | Description |
|---|---|---|
ServiceName |
"Integrated S3" |
Display name for the service |
RoutePrefix |
"/integrated-s3" |
Base path for all S3 endpoints |
EnableAwsSignatureV4Authentication |
false |
Require SigV4 signed requests |
SignatureAuthenticationRegion |
"us-east-1" |
SigV4 signing region |
AccessKeyCredentials |
[] |
List of access key / secret key pairs |
MaximumPresignedUrlExpirySeconds |
3600 |
Max presigned URL lifetime |
EnableVirtualHostedStyleAddressing |
false |
Support virtual-hosted-style bucket URLs |
See docs/webui-reference-host.md for the full configuration reference.
Storage Providers
Disk
builder.Services.AddDiskStorage(new DiskStorageOptions
{
RootPath = "App_Data/IntegratedS3",
CreateRootDirectory = true
});
S3
builder.Services.AddS3Storage(new S3StorageOptions
{
Region = "us-east-1",
ServiceUrl = "http://localhost:9000", // optional — for MinIO, LocalStack, etc.
ForcePathStyle = true // required for most S3-compatible endpoints
});
Custom
Implement IStorageBackend and register it:
builder.Services.AddIntegratedS3Backend<MyCustomBackend>();
See docs/provider-contract-testing.md for the xUnit harness that validates your implementation against the full storage contract.
Health Checks
IntegratedS3 ships with ASP.NET Core health check integration for backend liveness and readiness:
builder.Services
.AddHealthChecks()
.AddIntegratedS3BackendHealthCheck();
// ...
app.MapIntegratedS3HealthEndpoints(); // maps /health/live + /health/ready
Observability
IntegratedS3 emits traces and metrics through a built-in ActivitySource and Meter (both named "IntegratedS3"). Wire them into the OpenTelemetry SDK:
using IntegratedS3.Abstractions.Observability;
builder.Services.AddOpenTelemetry()
.WithTracing(t => t.AddSource(IntegratedS3Observability.ActivitySourceName))
.WithMetrics(m => m.AddMeter(IntegratedS3Observability.MeterName));
See docs/observability.md for the full list of instruments, correlation ID propagation, and per-layer telemetry details.
Documentation
| Document | Description |
|---|---|
| Getting Started | First-time setup, installation, and basic usage guide |
| Protocol Compatibility | S3 protocol coverage, supported operations, and compatibility notes |
| Implementation Plan | Architecture overview, module breakdown, and roadmap |
| WebUi Reference Host | Full configuration and wiring reference for the sample host |
| Consumer Samples | Minimal API, MVC/Razor, and Blazor WASM sample apps |
| Observability | Traces, metrics, structured logging, and OpenTelemetry integration |
| Provider Contract Testing | xUnit harness for validating custom IStorageBackend implementations |
| Host Maintenance Jobs | Opt-in recurring maintenance hosted service |
| Performance Benchmarks | BenchmarkDotNet harness and hot-path scenario catalog |
| AOT/Trimming Guidance | Guidelines for AOT and trimming compatibility |
Building & Testing
# Build
dotnet build src/IntegratedS3/IntegratedS3.slnx
# Test
dotnet test src/IntegratedS3/IntegratedS3.slnx
# Run the reference host
dotnet run --project src/IntegratedS3/WebUi/WebUi.csproj
# Validate AOT/trimming
dotnet publish -c Release --self-contained src/IntegratedS3/WebUi/WebUi.csproj
License
This project is licensed under the terms of the BSD 3-Clause License.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- IntegratedS3.Abstractions (>= 10.0.1)
- IntegratedS3.Core (>= 10.0.1)
- IntegratedS3.Protocol (>= 10.0.1)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.3)
- xunit (>= 2.9.2)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.