Amazon Simple Storage Service (S3) Γ¨ un servizio di storage progettato per archiviare e recuperare objects. Nella terminologia S3 object sta per file. Il servizio fornisce 5GB gratis per 12 mesi. Gli objects sono memorizzati in buckets e sono categorizzati in cartelle virtuali.

Versioning

Il versioning di S3 Γ¨ una funzionalitΓ  che consente di mantenere piΓΉ versioni di un oggetto all’interno di un bucket. Quando Γ¨ abilitato, ogni modifica a un oggetto genera una nuova versione, conservando le precedenti, utili per il recupero o la protezione da eliminazioni accidentali.

.NET

Upload

Console Application

await using var inputStream = new FileStream("./movies.csv", FileMode.Open, FileAccess.Read);
 
var putObjectRequest = new PutObjectRequest
{
    BucketName = "nickawscourse",
    Key = "files/movies.csv",
    ContentType = "text/csv",
    InputStream = inputStream
};
 
await s3Client.PutObjectAsync(putObjectRequest);

ASP.NET

public async Task<PutObjectResponse> UploadImageAsync(Guid id, IFormFile file)
{
    var putObjectRequest = new PutObjectRequest
    {
        BucketName = _bucketName,
        Key = $"images/{id}",
        ContentType = file.ContentType,
        InputStream = file.OpenReadStream(),
        Metadata =
        {
            ["x-amz-meta-originalname"] = file.FileName,
            ["x-amz-meta-extension"] = Path.GetExtension(file.FileName),
        }
    };
 
    return await _s3.PutObjectAsync(putObjectRequest);
}

Download

Console Application

var s3Client = new AmazonS3Client();  
  
var getObjectRequest = new GetObjectRequest  
{  
    BucketName = "nickawscourse",  
    Key = "files/movies.csv"  
};  
  
var response = await s3Client.GetObjectAsync(getObjectRequest);  
  
using var memoryStream = new MemoryStream();  
response.ResponseStream.CopyTo(memoryStream);  
  
var text = Encoding.Default.GetString(memoryStream.ToArray());

ASP.NET

public async Task<GetObjectResponse> GetImageAsync(Guid id)  
{  
    var getObjectRequest = new GetObjectRequest  
    {  
        BucketName = _bucketName,  
        Key = $"images/{id}"  
    };  
  
    return await _s3.GetObjectAsync(getObjectRequest);  
}