AWS S3
Description
AWS S3 can be used as the backing implementation for Flex file operations. Your application code should depend on IFlexFileStore, while Flex provides the provider bridge and wiring.
Important concepts
IFlexFileStoreis the contract: app code uploads/downloads using the shared interface rather than AWS SDK types.Files are streamed: uploads use a
Stream; downloads return aStream?(when a file doesn’t exist, you should handlenull).Provider bridge: the AWS implementation is exposed via an
IFlexFileStoreBridgeinternally, but most consumers only needIFlexFileStore.
Configuration in DI
Add the provider in your DI composition root (commonly in EndPoints/...CommonConfigs/OtherApplicationServicesConfig.cs or wherever you centralize registrations).
// using Sumeru.Flex; // IFlexFileStore
public static class OtherApplicationServicesConfig
{
public static IServiceCollection AddOtherApplicationServices(
this IServiceCollection services,
IConfiguration configuration)
{
// Registers AWS S3 as the IFlexFileStore bridge.
// Flex auto-wires generated Queries/Handlers that *use* IFlexFileStore.
services.AddFlexAwsS3FileStore(configuration);
return services;
}
}appsettings.json
Configuration is read from FlexBase:DataStores:File:AwsS3.
Examples (template-based)
These examples mirror the generated Query and PostBusHandler templates. You do not register these types manually—Flex discovers and wires generated Queries/Handlers automatically.
Upload file (PostBusHandler)
Download file (Query)
Library-specific considerations
Credentials: prefer environment/secret manager injection; avoid committing
AccessKeyId/SecretAccessKeyto source control.Bucket policy: the executing identity typically needs
s3:GetObject,s3:PutObject, ands3:ListBucket.ServiceUrl: useful for S3-compatible endpoints (for example LocalStack or MinIO).
Last updated