MrrHak.Extensions.FileProviders.S3FileProvider 1.0.0

There is a newer version of this package available.
See the version list below for details.
dotnet add package MrrHak.Extensions.FileProviders.S3FileProvider --version 1.0.0
NuGet\Install-Package MrrHak.Extensions.FileProviders.S3FileProvider -Version 1.0.0
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="MrrHak.Extensions.FileProviders.S3FileProvider" Version="1.0.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add MrrHak.Extensions.FileProviders.S3FileProvider --version 1.0.0
#r "nuget: MrrHak.Extensions.FileProviders.S3FileProvider, 1.0.0"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install MrrHak.Extensions.FileProviders.S3FileProvider as a Cake Addin
#addin nuget:?package=MrrHak.Extensions.FileProviders.S3FileProvider&version=1.0.0

// Install MrrHak.Extensions.FileProviders.S3FileProvider as a Cake Tool
#tool nuget:?package=MrrHak.Extensions.FileProviders.S3FileProvider&version=1.0.0

S3 File Provider S3 File Provider

NuGet NuGet Downloads File count Repo size Code size Star on Github Forks on Github Test Status Publish Status SonarCloud Status Sonar Quality Gate Sonar Coverage Security Rating Reliability Rating Vulnerabilities Lines of Code License: MIT Developer Framework

This package represents a file provider with an Amazon S3 bucket. It constructs virtual file systems that implement IFileProvider and integrate with AWS S3 SDK to provide the functionality for serving static files in ASP.NET.

S3 File Provider


Where can I get it?

First, install NuGet. Then, install MrrHak.Extensions.FileProviders.S3FileProvider from the package manager console:

PM> NuGet\Install-Package MrrHak.Extensions.FileProviders.S3FileProvider

Or from the .NET CLI as:

dotnet add package MrrHak.Extensions.FileProviders.S3FileProvider

How do I get started?

Creating a S3FileProvider instance is very simple:

var s3FileProvider = new S3FileProvider(amazonS3, bucketName);

Or using GetS3FileProvider extension method

var s3FileProvider = app.Services.GetS3FileProvider(bucketName);

Using S3 for serve as static files

First, configure S3FileProvider with UseStaticFiles, in the program/startup of your application:

var s3FileProvider = new S3FileProvider(amazonS3, bucketName);
var staticFilesOption = new StaticFileOptions(){ FileProvider = s3FileProvider};
app.UseStaticFiles(staticFilesOption);

Or using UseS3StaticFiles extension method (recommended)

app.UseS3StaticFiles(bucketName);

Note: AWSSDK.S3 is required to create an Amazon S3 client.

For Amazon S3 Service instance

var amazonS3 = new AmazonS3Client("AccessKeyId", "SecretAccessKey", Amazon.RegionEndpoint.APSoutheast1);

Or if you have already registered Amazon S3 services

var amazonS3 = app.Services.GetService<IAmazonS3>();

Example

Program.cs

  1. Register IAmazonS3 client to services collection

    • AWSOptions is using from AWSSDK.Extensions.NETCore.Setup
        // This value should be get from appsettings.json
        const string S3_BUCKET_NAME = "bucket-name";
        const string S3_ACCESS_KEY = "access-key";
        const string S3_SECRET_KEY = "secret-key";
        const string DEFAULT_REGION = "region";
    
        // Get AWS profile info directly from configuration (Profile authentication)
        AWSOptions awsOptions = builder.Configuration.GetAWSOptions();
        awsOptions.Region = RegionEndpoint.GetBySystemName(DEFAULT_REGION);
        builder.Services.AddDefaultAWSOptions(awsOptions);
    
        // IAM user authentication
        AWSOptions s3Options = awsOptions;
        if (!string.IsNullOrEmpty(S3_ACCESS_KEY) && !string.IsNullOrEmpty(S3_SECRET_KEY))
        {
            s3Options = new AWSOptions() { Credentials = new BasicAWSCredentials(S3_ACCESS_KEY, S3_SECRET_KEY) };
            s3Options.Region = RegionEndpoint.GetBySystemName(DEFAULT_REGION);
        }
        builder.Services.AddAWSService<IAmazonS3>(s3Options);
    
  2. Register S3FileProvider with UseStaticFiles

    var amazonS3 = app.Services.GetService<IAmazonS3>();
    var s3FileProvider = new S3FileProvider(amazonS3, S3_BUCKET_NAME);
    var staticFilesOption = new StaticFileOptions(){ FileProvider = s3FileProvider};
    app.UseStaticFiles(staticFilesOption);
    

    Or using UseS3StaticFiles extension method (recommended)

    app.UseS3StaticFiles(S3_BUCKET_NAME);
    

Build and Test Source Code

dotnet build
dotnet test

Publish NuGet Package

Upgrade version

To upgrade the version, use the following command to update the version in S3FileProvider/S3FileProvider.csproj.

sed -i '' 's/1.0.0/1.0.1/g' S3FileProvider/S3FileProvider.csproj

Start Package file for publishing with version 1.0.0.

dotnet pack -c Release -o publish /p:Version=1.0.0
dotnet nuget push publish/MrrHak.Extensions.FileProviders.S3FileProvider.*.nupkg -s https://api.nuget.org/v3/index.json -k $NUGET_API_KEY

Buy me a coffee

Buy Me A Coffee Ko-fi

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 is compatible.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 is compatible. 
.NET Framework net461 was computed.  net462 is compatible.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.1.0 52 5/10/2024
1.0.1 89 5/4/2024
1.0.0 106 4/25/2024
1.0.0-beta.7 48 4/24/2024
1.0.0-beta.6 34 4/23/2024
1.0.0-beta.5 40 4/22/2024
1.0.0-beta.4 41 4/19/2024
1.0.0-beta.3 42 4/19/2024
1.0.0-beta.2 41 4/19/2024
1.0.0-beta.1 42 4/18/2024

## 1.0.0 (25-04-2024)
- Move to stable version
- Update README.md
- Add example project
- Add extensions helpers
 - GetS3FileProvider
 - UseS3StaticFiles

## 1.0.0-beta.7 (24-04-2024)
- Improvement
- Update README.md

## 1.0.0-beta.6 (23-04-2024)
- Add Test coverage
- Improvement functionality
- Revert back AWS S3 SDK as public
- Update GitHub Action
- Update README.md

## 1.0.0-beta.5 (22-04-2024)
- Make AWS S3 steam seek able
- Make AWS S3 SDK as private
- Upgrade AWS S3 SDK
- Update README.md

## 1.0.0-beta.4 (19-04-2024)
- Upgrade AWS S3 SDK
- Update README.md
- Update CHANGELOG.md

## 1.0.0-beta.3 (19-04-2024)
- Update README.md

## 1.0.0-beta.2 (19-04-2024)
- Add github action publish
- Update README.md
- Update package metadata

## 1.0.0-beta.1 (18-04-2024)
- Initial version