Получить размер корзины на основе классов хранения в облачном хранилище Google - PullRequest
0 голосов
/ 23 ноября 2018

Я хотел бы получить размер корзины на основе класса хранения.Я добавил правила в корзину, чтобы изменить класс хранения файлов в зависимости от возраста файла.Я использовал следующие команды

gsutil du -sh gs://[bucket-name] 

To get Meta-data : 
gsutil ls -L gs://[bucket-name] 

To set ACL to bucket 

gsutil lifecycle set life-cycle.json gs://[bucket-name] 

Пожалуйста, помогите мне решить эту проблему

1 Ответ

0 голосов
/ 23 ноября 2018

Редактировать:

Я отправил запрос на добавление функции в Public Issue Tracker .Тем временем можно использовать приведенный ниже код.

Я считаю, что нет команды gsutil, которая могла бы показать вам общий размер по классу хранилища для корзины GCS.

Однако, используя* Клиентские библиотеки Cloud Storage для Python, я создал скрипт, который делает то, что вы просите:

from google.cloud import storage
import math

### SET THESE VARIABLES ###
PROJECT_ID = "" 
CLOUD_STORAGE_BUCKET = "" 
###########################

def _get_storage_client():
    return storage.Client(
        project=PROJECT_ID)

def convert_size(size_bytes):
   if size_bytes == 0:
       return "0 B"
   size_name = ("B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB")
   i = int(math.floor(math.log(size_bytes, 1024)))
   p = math.pow(1024, i)
   s = round(size_bytes / p, 2)
   return "%s %s" % (s, size_name[i])

def size_by_class():
    client = _get_storage_client()
    bucket = client.bucket(CLOUD_STORAGE_BUCKET)
    blobs = bucket.list_blobs()

    size_multi_regional = size_regional = size_nearline = size_coldline = 0
    for blob in blobs:
        if blob.storage_class == "MULTI_REGIONAL":
            size_multi_regional = size_multi_regional + blob.size
        if blob.storage_class == "REGIONAL":
            size_regional = size_regional + blob.size
        if blob.storage_class == "NEARLINE":
            size_nearline = size_nearline + blob.size
        if blob.storage_class == "COLDLINE":
            size_coldline = size_coldline + blob.size

    print("MULTI_REGIONAL: "+str(convert_size(size_multi_regional))+"\n"+
            "REGIONAL: "+str(convert_size(size_regional)+"\n"+
            "NEARLINE: "+str(convert_size(size_nearline))+"\n"+
            "COLDLINE: "+str(convert_size(size_coldline))
            ))

if __name__ == '__main__':
    size_by_class()

Для запуска этой программы из Google Cloud Shell , убедитесь, что вы ранее установили Клиентскую библиотеку для Python с:

pip install --upgrade google-cloud-storage

И чтобы предоставить учетные данные аутентификации для кода приложения, вы должны указать переменную среды GOOGLE_APPLICATION_CREDENTIALS к местоположению файла JSON, который содержит учетную запись службы ключ:

export `GOOGLE_APPLICATION_CREDENTIALS`="/home/user/Downloads/[FILE_NAME].json"

Перед запуском сценария установите PROJECT_ID в качестве идентификатора вашего проекта и CLOUD_STORAGE_BUCKETна имя вашего GCS Bucket.

Запустите скрипт с python main.py.Вывод должен быть примерно таким:

MULTI_REGIONAL: 1.0 GB
REGIONAL: 300 MB
NEARLINE: 200 MB
COLDLINE: 10 MB
...