Feature: Amazon S3 Provider (ManagedCode.Storage.Aws)
Purpose
Implement IStorage on top of Amazon S3, including streaming and container (bucket) management semantics where applicable.
Main Flows
flowchart LR
App --> S3[AWSStorage : IAWSStorage]
S3 --> SDK[Amazon.S3 IAmazonS3]
SDK --> S3Cloud[(Amazon S3)]
Components
Storages/ManagedCode.Storage.Aws/AWSStorage.csStorages/ManagedCode.Storage.Aws/AWSStorageProvider.csStorages/ManagedCode.Storage.Aws/BlobStream.cs- DI:
- Options:
DI Wiring
dotnet add package ManagedCode.Storage.Aws
using Amazon.S3;
using ManagedCode.Storage.Aws.Extensions;
builder.Services.AddAWSStorageAsDefault(options =>
{
options.Bucket = "my-bucket";
options.PublicKey = configuration["Aws:AccessKeyId"];
options.SecretKey = configuration["Aws:SecretAccessKey"];
options.OriginalOptions = new AmazonS3Config { RegionEndpoint = Amazon.RegionEndpoint.USEast1 };
});
Current Behavior
- Supports multiple auth modes (access keys / role / instance profile) via
AWSStorageOptions. - Can create the bucket when
CreateContainerIfNotExists = true.
Tests
Tests/ManagedCode.Storage.Tests/Storages/AWS/AWSUploadTests.csTests/ManagedCode.Storage.Tests/Storages/AWS/AWSDownloadTests.csTests/ManagedCode.Storage.Tests/Storages/AWS/AWSBlobTests.csTests/ManagedCode.Storage.Tests/Storages/AWS/AWSContainerTests.csTests/ManagedCode.Storage.Tests/Storages/AWS/AwsConfigTests.cs