Effortless AWS S3 File Upload: Master ASP.NET Core Minimalistic API - SkillBakery Studios

Breaking

Post Top Ad

Post Top Ad

Friday, July 17, 2026

Effortless AWS S3 File Upload: Master ASP.NET Core Minimalistic API

Effortless AWS S3 File Upload: Master ASP.NET Core Minimalistic API

Screenshot from the tutorial
Screenshot from the tutorial

Effortless AWS S3 File Upload: Mastering ASP.NET Core Minimalistic API

In today's digital landscape, efficient file storage solutions are crucial for application performance. Amazon S3 (Simple Storage Service) provides a scalable, secure, and highly durable solution for storing files in the cloud. In this post, we'll explore how to effortlessly upload files to AWS S3 using an ASP.NET Core Minimal API.

Prerequisites

Before diving into the tutorial, ensure you have the following prerequisites set up:

  • AWS Account: Sign up for an AWS account if you don't have one already.
  • AWS CLI: Install the AWS Command Line Interface for easier management of your S3 resources.
  • .NET SDK: Install the .NET SDK version 6.0 or later on your development machine.
  • IDE: Use an Integrated Development Environment like Visual Studio or Visual Studio Code.

Step 1: Setting Up Your S3 Bucket

  1. Log in to your AWS Management Console.
  2. Navigate to S3 and click on Create bucket.
  3. Enter a unique bucket name and select a region.
  4. Configure permissions based on your needs (for testing, you can leave it public, but remember to restrict permissions for production).
  5. Click on Create bucket.

Bucket Policy

To allow public access for file uploads, configure a bucket policy. Here’s a basic example:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "PublicReadGetObject",
      "Effect": "Allow",
      "Principal": "*",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::your-bucket-name/*"
    }
  ]
}

Replace your-bucket-name with the actual name of your bucket.

Step 2: Create Your ASP.NET Core Minimal API

  1. Create a new project:

    Open your terminal and execute the following command:

    dotnet new web -n S3FileUploadApi
    cd S3FileUploadApi
    
  2. Add the AWS SDK for .NET:

    Install the Amazon S3 SDK NuGet package:

    dotnet add package AWSSDK.S3
    
  3. Configure AWS Credentials:

    For development purposes, you can use the AWS CLI to configure your credentials. Run:

    aws configure
    

    Enter your AWS Access Key, Secret Key, region, and output format.

Step 3: Implementing the File Upload Logic

Open the Program.cs file and add the following code to set up your API endpoint for file uploads:

using Amazon.S3;
using Amazon.S3.Model;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Builder;

var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();

// Add AWS S3 client
var s3Client = new AmazonS3Client();

app.MapPost("/upload", async (IFormFile file) =>
{
    if (file == null || file.Length == 0)
        return Results.BadRequest("No file uploaded.");

    var bucketName = "your-bucket-name"; // replace with your bucket name
    var keyName = $"{Guid.NewGuid()}_{file.FileName}";

    using var stream = file.OpenReadStream();
    var putRequest = new PutObjectRequest
    {
        BucketName = bucketName,
        Key = keyName,
        InputStream = stream,
        ContentType = file.ContentType,
    };

    try
    {
        await s3Client.PutObjectAsync(putRequest);
        return Results.Ok($"File uploaded successfully: {keyName}");
    }
    catch (Exception ex)
    {
        return Results.Problem($"File upload failed: {ex.Message}");
    }
});

app.Run();

Explanation:

  • AmazonS3Client: This client is used to interact with S3 services.
  • MapPost: Defines a route for handling POST requests to upload files.
  • IFormFile: Represents the uploaded file from the client.
  • PutObjectRequest: Defines the parameters necessary for uploading files, like bucket name, key (filename), and content type.

Step 4: Testing Your API

  1. Run your application:

    Execute the following command:

    dotnet run
    
  2. Use Postman or curl to test the upload endpoint. Here’s an example using curl:

    curl -X POST -F "file=@/path/to/your/file.txt" http://localhost:5000/upload
    

Replace /path/to/your/file.txt with the actual file path you want to upload.

Conclusion

You've successfully built a minimalistic ASP.NET Core API to upload files to AWS S3. This tutorial covered the essential steps, from setting up an S3 bucket to implementing a file upload feature in your API.

As you continue to develop your application, remember to handle security and permissions correctly, especially when dealing with sensitive files in production environments.

Feel free to explore additional AWS S3 functionalities, such as file retrieval, listing objects, and managing bucket policies, to enhance your application further!

For more in-depth tutorials and AWS-related content, stay tuned to our blog!

Another screenshot from the tutorial
Another view from the tutorial

Connect with SkillBakery Studios

Explore more tutorials, tools, and resources:

Posted by SkillBakery Studios

No comments:

Post a Comment

Post Top Ad