Trabalho com S3 e armazenamentos em nuvem em C# (.NET): biblioteca AWS SDK

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Trabalho com S3 e armazenamentos em nuvem em C# (.NET)



As tecnologias modernas de nuvem exigem armazenamento e gerenciamento confiáveis de dados. Um dos padrões de fato para armazenamento de objetos é o protocolo Amazon S3 (Simple Storage Service). No ecossistema C# (.NET), para trabalhar com S3 e qualquer armazenamento compatível com S3 (Yandex Object Storage, MinIO, DigitalOcean Spaces, VK Cloud), utiliza-se a biblioteca oficial AWS SDK for .NET (pacote AWSSDK.S3).



Neste artigo, vamos detalhar como conectar a biblioteca, configurar o cliente, realizar operações básicas (upload, download, exclusão, listagem) e adaptar o código para funcionar com emuladores S3 locais, como o MinIO.



Instalação da biblioteca



Para começar, adicione o pacote NuGet ao seu projeto:



dotnet add package AWSSDK.S3


Ou através do gerenciador de pacotes do Visual Studio:



Install-Package AWSSDK.S3


Criação e configuração do cliente S3



A biblioteca fornece a classe AmazonS3Client, que pode ser configurada para funcionar com qualquer armazenamento compatível com S3. Vamos considerar duas opções: conexão ao Amazon S3 e ao MinIO local.



Conexão ao Amazon S3



using Amazon;using Amazon.S3;using Amazon.Runtime;

var credentials = new BasicAWSCredentials("seu_ACCESS_KEY", "seu_SECRET_KEY");var config = new AmazonS3Config{ RegionEndpoint = RegionEndpoint.EUWest1 // ou outra região};

using var client = new AmazonS3Client(credentials, config);


Conexão ao MinIO (servidor S3 local)



using Amazon.S3;using Amazon.Runtime;

var credentials = new BasicAWSCredentials("minioadmin", "minioadmin");var config = new AmazonS3Config{ ServiceURL = "http://localhost:9000", // endereço do MinIO ForcePathStyle = true, // obrigatório para MinIO UseHttp = true};

using var client = new AmazonS3Client(credentials, config);


Operações principais com S3



Todas as operações são executadas de forma assíncrona através dos métodos do cliente. Vamos considerar os cenários principais.



1. Upload de arquivo



using Amazon.S3;using Amazon.S3.Model;

public async Task UploadFileAsync(IAmazonS3 client, string bucketName, string filePath, string key){ var request = new PutObjectRequest { BucketName = bucketName, Key = key, FilePath = filePath };

var response = await client.PutObjectAsync(request); Console.WriteLine($"Arquivo enviado. ETag: {response.ETag}");}


2. Download de arquivo



public async Task DownloadFileAsync(IAmazonS3 client, string bucketName, string key, string downloadPath){    var request = new GetObjectRequest    {        BucketName = bucketName,        Key = key    };

using var response = await client.GetObjectAsync(request); await response.WriteResponseStreamToFileAsync(downloadPath, false, CancellationToken.None); Console.WriteLine($"Arquivo salvo em {downloadPath}");}


3. Exclusão de arquivo



public async Task DeleteFileAsync(IAmazonS3 client, string bucketName, string key){    var request = new DeleteObjectRequest    {        BucketName = bucketName,        Key = key    };

var response = await client.DeleteObjectAsync(request); Console.WriteLine($"Arquivo excluído. Status HTTP: {response.HttpStatusCode}");}


4. Listagem de arquivos



public async Task ListFilesAsync(IAmazonS3 client, string bucketName){    var request = new ListObjectsV2Request    {        BucketName = bucketName,        MaxKeys = 100    };

ListObjectsV2Response response; do { response = await client.ListObjectsV2Async(request); foreach (var obj in respo

Recommendations