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);
}