آبجکت استوریج

(Object Storage)
از این پس سرویس فایل در لیارا ارائه نمی‌شود و می‌توانید به‌عنوان جایگزین از ذخیره‌سازی ابری استفاده کنید.

استاندارد S3

از آنجایی که Object Storage لیارا با S3 سازگار است، به راحتی می‌توانید با هر زبانی به وسیله کتابخانه‌های موجود در آن زبان برای S3 به Object Storage متصل شوید. برای نمونه چند کتابخانه‌ در زبان‌ها و فریم‌ورک‌های مختلف در پایین معرفی کرده‌ایم و همچنین نحوه‌ اتصال آن‌ها به لیارا را نیز آورده‌ایم:

در این مثال‌ها فقط نحوه اتصال و نمایش لیست باکت‌ها قرار گرفته است. لینک مستندات و گیت‌هاب هر کتابخانه برای مطالعه بیشتر قرار گرفته است.
مقدار متغیر‌هایLIARA_ENDPOINT، LIARA_ACCESS_KEY وLIARA_SECRET_KEY را می‌توانید از قسمت «کلید‌های دسترسی» در صفحه اطلاعات کلی سرویس فایل‌تان، بدست آورید.
  • Nodejs: aws-sdk-js
  • $ npm install aws-sdk
    var AWS = require('aws-sdk');
    const s3 = new AWS.S3({
        accessKeyId: LIARA_ACCESS_KEY,
        secretAccessKey: LIARA_SECRET_KEY,
        endpoint: LIARA_ENDPOINT,
        s3ForcePathStyle: true
    });
     
    s3.listBuckets(function(err, data) {
        if (err) console.log(err, err.stack);
        else     console.log(data);
    });

  • Laravel: «File Storage» documents
  • // config/filesystems.php
    <?php
    return [
      // ...
      'cloud' => 'minio',
      'disks' => [
        // ...
        'minio' => [
          'driver' => 's3',
          'endpoint' => env('LIARA_ENDPOINT'),
          'use_path_style_endpoint' => true,
          'key' => env('LIARA_ACCESS_KEY'),
          'secret' => env('LIARA_SECRET_KEY'),
          'region' => 'us-east-1',
          'bucket' => env('LIARA_BUCKET_NAME'),
        ],
      ],
    ];

  • PHP: aws-sdk-php
  • $ composer require aws/aws-sdk-php
    <?php
    require 'vendor/autoload.php';
    use AwsS3S3Client;
    $client = new S3Client([
        'region' => 'us-east-1',
        'version' => '2006-03-01',
        'endpoint' => LIARA_ENDPOINT,
        'credentials' => [
            'key' => LIARA_ACCESS_KEY
            'secret' => LIARA_SECRET_KEY
        ],
        'use_path_style_endpoint' => true
    ]);
    $listResponse = $client->listBuckets();
    print_r($listResponse);

  • Django: Django-Storages, boto3
  • pip install boto3
    pip install django-storages
    # settings.py:
    INSTALLED_APPS = [
      'django.contrib.auth',
      'django.contrib.contenttypes',
      'django.contrib.sessions',
      'django.contrib.messages',
      'django.contrib.staticfiles',
      ...,
      'storages',
      ...
    ]
    AWS_ACCESS_KEY_ID = os.environ.get(LIARA_ACCESS_KEY)
    AWS_SECRET_ACCESS_KEY = os.environ.get(LIARA_SECRET_KEY)
    AWS_STORAGE_BUCKET_NAME = os.environ.get(LIARA_BUCKET_NAME)
    AWS_S3_ENDPOINT_URL = os.environ.get(LIARA_ENDPOINT)
    AWS_S3_OBJECT_PARAMETERS = {
        'CacheControl': 'max-age=86400',
    }
    AWS_LOCATION = 'static'
    STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'

  • Flask: boto3
  • $ pip install boto3
    import boto3, os
    s3 = boto3.resource('s3',
            endpoint_url=os.environ.get(LIARA_ENDPOINT),
            aws_access_key_id=os.environ.get(LIARA_ACCESS_KEY),
            aws_secret_access_key=os.environ.get(LIARA_SECRET_KEY))
    for bucket in s3.buckets.all():
        print(bucket.name)

  • .Net Core: AWS SDK for .NET
  • using Amazon.S3;
    using System;
    using System.Threading.Tasks;
    using Amazon;
    class Program
    {
      private const string accessKey = Environment.GetEnvironmentVariable("LIARA_ACCESS_KEY");
      private const string secretKey = Environment.GetEnvironmentVariable("LIARA_SECRET_KEY");
      static void Main(string[] args)
      {
        Task.Run(MainAsync).GetAwaiter().GetResult();
      }
      private static async Task MainAsync()
      {
        var config = new AmazonS3Config
        {
          RegionEndpoint = RegionEndpoint.USEast1,
          ServiceURL = Environment.GetEnvironmentVariable("LIARA_ENDPOINT"),
          ForcePathStyle = true
        };
        var amazonS3Client = new AmazonS3Client(
          accessKey,
          secretKey,
          config);
        amazonS3Client.ExceptionEvent += OnAmazonS3Exception;
        var listBucketResponse = await amazonS3Client.ListBucketsAsync();
        foreach (var bucket in listBucketResponse.Buckets)
        {
          // ...
        }
        if (listBucketResponse.Buckets.Count > 0)
        {
          var bucketName = listBucketResponse.Buckets[0].BucketName;
          var listObjectsResponse = await amazonS3Client.ListObjectsAsync(bucketName);
          foreach (var obj in listObjectsResponse.S3Objects)
          {
            // ...
          }
        }
      }
    }
کتابخانه‌های معرفی شده در بالا صرفا مثال‌هایی برای S3 در هر زبان بودند که اکثر آن‌ها کتابخانه‌های رسمی Amazon S3 است. شما می‌توانید از هر کتابخانه‌‌ای که S3 compatible باشد استفاده کنید. همچنین خود تیم MinIO نیز SDK هایی برای کار با S3 ارائه کرده است که می‌توانید در مستندات آن‌ها و در بخش MinIO SDKs درباره آن‌ها بیشتر بخوانید.
;