.Net Core library for Yandex Object Storage S3 API (https://cloud.yandex.ru/docs/storage/s3/api-ref).
Nuget Package - AspNetCore.Yandex.ObjectStorage
To inject service user extension method AddYandexObjectStorage to IServiceCollection
services.AddYandexObjectStorage(options =>
{
options.BucketName = "bucketName";
options.AccessKey = "your-access-key";
options.SecretKey = "your-secret-key";
});Can load options from IConfiguratiuonRoot as: services.AddYandexObjectStorage(Configuration);
by default, it reads a section with the name YandexObjectStorage, for example, the section in appsettings.json below:
"YandexObjectStorage":
{
"Bucket" : "your-bucket",
"AccessKey" : "your-access-key",
"SecretKey" : "your-secret-key",
"Protocol" : "https",
"Location" : "us-east-1"
}Options is a YandexStorageOptions class.
It provides access to setup next properties:
string Protocol - by default -> "https"
string BucketName
string Location - by default -> "us-east-1"
string Endpoint - by default -> "storage.yandexcloud.net"
string AccessKey
string SecretKey
S3ObjectPutResponse response = await _objectStoreService.ObjectService.PutAsync(byteArr, fileName);
S3ObjectDeleteResponse response = await _objectStoreService.ObjectService.DeleteAsync(filename);Get can return as Stream or ByteArray
// result is FluentResults wrapped content of result
var result = await _objectStoreService.ObjectService.GetAsync(fileName);
if(result.IsSuccess)
{
byte[] byteArr = await result.ReadAsByteArrayAsync();
Stream stream = await result.ReadAsStreamAsync();
}
if(result.IsFailed)
{
var error = await result.ReadErrorAsync();
}| Method | Description | Status |
|---|---|---|
| upload | Uploads an object to Object Storage | ✅ implemented |
| get | Retrieves an object from Object Storage | ✅ implemented |
| delete | Deletes an object | ✅ implemented |
| deleteMultipleObjects | Deletes objects based on a list | ✅ implemented |
| options | Checks whether a CORS request to an object can be made | ✅ implemented |
| selectObjectContent | Filters and returns the contents of an object based on an SQL query | ✅ implemented |
| copy | Copies an object stored in Object Storage | ❌ not implemented |
| getObjectMeta | Retrieves object metadata | ❌ not implemented |
| Method | Description | Status |
|---|---|---|
| create | Creates a bucket | ✅ implemented |
| getMeta | Returns the bucket's metadata or an error | ✅ implemented |
| listObjects | Returns a list of bucket objects. Pagination is used for output | ✅ implemented |
| listBuckets | Returns a list of buckets available to the user | ✅ implemented |
| deleteBucket | Deletes an empty bucket. If the bucket isn't empty, first delete all the objects inside the bucket | ✅ implemented |
| getBucketEncryption | Returns information about bucket encryption. For more information about bucket encryption | ❌ not implemented |
| putBucketEncryption | Adds encryption to the bucket. By default, the objects added to the bucket are encrypted with the specified KMS key | ❌ not implemented |
| deleteBucketEncryption | Removes encryption from the bucket. For more information about bucket encryption | ❌ not implemented |
| putBucketVersioning | Enables or pauses versioning of the bucket | ❌ not implemented |
| getBucketVersioning | Returns the versioning status | ❌ not implemented |
| putBucketLogging | Enables and disables logging of actions with the bucket | ❌ not implemented |
| getBucketLogging | Returns settings for logging actions with the bucket | ❌ not implemented |
| listObjectVersions | Returns metadata for all versions of objects in the bucket | ❌ not implemented |
| Method | Description | Status |
|---|---|---|
| startUpload | Starts multipart upload | ❌ not implemented |
| uploadPart | Uploads a part of an object | ❌ not implemented |
| copyPart | Copies part of an object | ❌ not implemented |
| listParts | Displays a list of uploaded parts | ❌ not implemented |
| abortUpload | Aborts multipart upload | ❌ not implemented |
| completeUpload | Completes multipart upload | ❌ not implemented |
| listUploads | Returns a list of incomplete uploads | ❌ not implemented |