Статьи

Облачное хранилище Google: управление корзинами

Облачное хранилище Google (GCS) — это очень простое и мощное предложение от Google для хранения объектов в составе своей облачной платформы Google (GCP) . Он предоставляет разработчикам очень надежное, масштабируемое, согласованное и доступное решение для хранения данных и является той же технологией, которую Google использует для создания собственных хранилищ объектов.

Он оплачивается с платой за то, что вы используете модель, и GCP предоставляется с 60-дневным пробным периодом, так что вы можете бесплатно проверить, соответствует ли он потребностям вашей организации. GCS имеет разные уровни обслуживания (также называемые классами хранения), которые могут быть выбраны по мере необходимости (подробное обсуждение этих вопросов выходит за рамки данного руководства). GCS может использоваться для различных целей, таких как обслуживание статического / динамического содержимого веб-сайта, хранение пользовательских файлов приложений, аварийное восстановление или обеспечение загрузки больших объемов данных для пользователей.

Те, кто работал над GCP, будут знать, что все в GCP вращается вокруг проектов. Каждый проект может иметь много областей, вокруг которых строится архитектура Google Cloud Storage. Buckets — это основные контейнеры в GCS, которые содержат хранимые данные. Они используются как основные блоки для организации ваших данных и выглядят как папки в операционной системе, но они не могут быть вложенными.

Каждое ведро может содержать любое количество объектов, которые могут быть папками и / или файлами. Контейне назначается класс хранения и географическое местоположение при создании. Эти настройки могут быть указаны при создании корзины, но не могут быть изменены позже.

В контейнерах есть определенные соглашения об именах, которые необходимо строго соблюдать, иначе GCP не позволит вам создать корзину. Имена контейнеров глобально уникальны, поэтому их нужно выбирать таким образом, чтобы предотвратить конфликты. Однако имя, используемое удаленным сегментом, можно использовать повторно.

Кроме того, имя не может быть изменено после того, как оно было присвоено сегменту. Единственное решение, если вы хотите изменить его, — это создать новый сегмент с нужным именем, переместить содержимое из предыдущего блока в новый и затем удалить предыдущий фрагмент.

В этом руководстве я расскажу, как управлять корзинами из консоли Google Cloud. Далее следует сценарий Python, где я продемонстрирую выполнение тех же операций программным способом.

Во-первых, давайте посмотрим, как управлять корзинами с помощью веб-интерфейса пользователя, предоставляемого GCP, известного как Google Cloud Console .

Откройте браузер хранилища в любом браузере. Если вы впервые, вам будет предложено сначала создать проект. Также будет показан вариант подписки на бесплатную пробную версию. Пройдите бесплатную пробную регистрацию, в противном случае вы не сможете создать новое ведро самостоятельно. По умолчанию GCP предоставляет только одну бесплатную корзину для каждого экземпляра App Engine.

После завершения всех этих формальных процессов, переход на эту страницу должен открыть страницу, показанную ниже.

Google Cloud Storage Browser

Чтобы создать новую корзину, нажмите кнопку « Создать корзину» , выделенную выше. Создайте ведро, указав желаемое имя, как показано ниже. Имя должно соответствовать соглашениям о присвоении имен .

Создание нового ведра

После того, как вы создали контейнер, браузер GCS отобразит его. Ковши можно удалить, выбрав их из списка и нажав кнопку удаления.

Удалить ведро

Нажатие на кнопку обновления заполняет пользовательский интерфейс любыми изменениями в списке сегментов без обновления всей страницы.

Во-первых, давайте создадим экземпляр Google Compute Engine, поскольку он позволит быстро продемонстрировать целевые концепции, а не заниматься дополнительными шагами аутентификации на локальных компьютерах. Чтобы создать экземпляр GCE, откройте ссылку и нажмите кнопку « Создать экземпляр» , как показано ниже.

Создайте новый экземпляр Compute Engine

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

SSH в экземпляр Compute Engine

Экран клиента SSH будет выглядеть примерно так, как показано ниже. Все дальнейшие операции в этом руководстве будут выполняться непосредственно на самом клиенте SSH.

Клиент SSH для вновь созданного экземпляра Compute Engine

Ниже приведены команды, которые необходимо выполнить для настройки вновь созданного сервера для среды разработки Python.

1
2
3
$ sudo apt-get update
$ sudo apt-get install python-dev python-setuptools
$ sudo easy_install pip

Ниже приведена зависимость, которая должна быть установлена ​​для написания этого скрипта.

1
$ sudo pip install google-api-python-client

В производственных системах не рекомендуется устанавливать библиотеки с использованием «sudo». Пожалуйста, следуйте рекомендациям Python virtualenv для этого.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
import sys
from pprint import pprint
 
from googleapiclient import discovery
from googleapiclient import http
from oauth2client.client import GoogleCredentials
 
 
def create_service():
    credentials = GoogleCredentials.get_application_default()
    return discovery.build(‘storage’, ‘v1’, credentials=credentials)
     
     
def list_buckets(project):
    service = create_service()
    res = service.buckets().list(project=project).execute()
    pprint(res)
     
     
def create_bucket(project, bucket_name):
    service = create_service()
    res = service.buckets().insert(
        project=project, body={
            «name»: bucket_name
        }
    ).execute()
    pprint(res)
     
     
def delete_bucket(bucket_name):
    service = create_service()
    res = service.buckets().delete(bucket=bucket_name).execute()
    pprint(res)
 
 
def get_bucket(bucket_name):
    service = create_service()
    res = service.buckets().get(bucket=bucket_name).execute()
    pprint(res)
 
 
def print_help():
        print «»»Usage: python gcs_bucket.py <command>
Command can be:
    help: Prints this help
    list: Lists all the buckets in specified project
    create: Create the provided bucket name in specified project
    delete: Delete the provided bucket name
    get: Get details of the provided bucket name
«»»
 
 
if __name__ == «__main__»:
    if len(sys.argv) < 2 or sys.argv[1] == «help» or \
        sys.argv[1] not in [‘list’, ‘create’, ‘delete’, ‘get’]:
        print_help()
        sys.exit()
    if sys.argv[1] == ‘list’:
        if len(sys.argv) == 3:
            list_buckets(sys.argv[2])
            sys.exit()
        else:
            print_help()
            sys.exit()
    if sys.argv[1] == ‘create’:
        if len(sys.argv) == 4:
            create_bucket(sys.argv[2], sys.argv[3])
            sys.exit()
        else:
            print_help()
            sys.exit()
    if sys.argv[1] == ‘delete’:
        if len(sys.argv) == 3:
            delete_bucket(sys.argv[2])
            sys.exit()
        else:
            print_help()
            sys.exit()
    if sys.argv[1] == ‘get’:
        if len(sys.argv) == 3:
            get_bucket(sys.argv[2])
            sys.exit()
        else:
            print_help()
            sys.exit()

Приведенный выше скрипт Python демонстрирует основные операции, которые могут быть выполнены над корзиной. Это включает:

  • создание нового ведра в проекте
  • список всех сегментов в проекте
  • получение сведений о конкретном ведре
  • удаление определенного ведра

Посмотрим, как будут выглядеть эти операции при запуске скрипта.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
$ python gcs_bucket.py
Usage: python gcs_bucket.py <command>
Command can be:
    help: Prints this help
    list: Lists all the buckets in specified project
    create: Create the provided bucket name in specified project
    delete: Delete the provided bucket name
    get: Get details of the provided bucket name
     
$ python gcs_bucket.py list tutsplus-demo
{u’items’: [{u’etag’: u’CAE=’,
             u’id’: u’tutsplus-demo.appspot.com’,
             u’kind’: u’storage#bucket’,
             u’location’: u’US’,
             u’metageneration’: u’1′,
             u’name’: u’tutsplus-demo.appspot.com’,
             u’projectNumber’: u’1234567890′,
             u’selfLink’: u’https://www.googleapis.com/storage/v1/b/tutsplus-demo.appspot.com’,
             u’storageClass’: u’STANDARD’,
             u’timeCreated’: u’2016-10-05T15:30:52.237Z’,
             u’updated’: u’2016-10-05T15:30:52.237Z’}],
 u’kind’: u’storage#buckets’}
  
 $ python gcs_bucket.py create tutsplus-demo tutsplus-demo-test
{u’etag’: u’CAE=’,
 u’id’: u’tutsplus-demo-test’,
 u’kind’: u’storage#bucket’,
 u’location’: u’US’,
 u’metageneration’: u’1′,
 u’name’: u’tutsplus-demo-test’,
 u’projectNumber’: u’1234567890′,
 u’selfLink’: u’https://www.googleapis.com/storage/v1/b/tutsplus-demo-test’,
 u’storageClass’: u’STANDARD’,
 u’timeCreated’: u’2016-10-07T05:55:29.638Z’,
 u’updated’: u’2016-10-07T05:55:29.638Z’}
  
 $ python gcs_bucket.py get tutsplus-demo-test
{u’etag’: u’CAE=’,
 u’id’: u’tutsplus-demo-test’,
 u’kind’: u’storage#bucket’,
 u’location’: u’US’,
 u’metageneration’: u’1′,
 u’name’: u’tutsplus-demo-test’,
 u’projectNumber’: u’1234567890′,
 u’selfLink’: u’https://www.googleapis.com/storage/v1/b/tutsplus-demo-test’,
 u’storageClass’: u’STANDARD’,
 u’timeCreated’: u’2016-10-07T05:55:29.638Z’,
 u’updated’: u’2016-10-07T05:55:29.638Z’}
  
 $ python gcs_bucket.py delete tutsplus-demo-test
»

В этом руководстве вы увидели, как управлять корзинами в облачном хранилище Google. Это также сопровождалось небольшим введением в создание экземпляра Google Compute Engine и его использование через клиент SSH.

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