Облачное хранилище Google (GCS) — это очень простое и мощное предложение от Google для хранения объектов в составе своей облачной платформы Google (GCP) . Он предоставляет разработчикам очень надежное, масштабируемое, согласованное и доступное решение для хранения данных и является той же технологией, которую Google использует для создания собственных хранилищ объектов.
Он оплачивается с платой за то, что вы используете модель, и GCP предоставляется с 60-дневным пробным периодом, так что вы можете бесплатно проверить, соответствует ли он потребностям вашей организации. GCS имеет разные уровни обслуживания (также называемые классами хранения), которые могут быть выбраны по мере необходимости (подробное обсуждение этих вопросов выходит за рамки данного руководства). GCS может использоваться для различных целей, таких как обслуживание статического / динамического содержимого веб-сайта, хранение пользовательских файлов приложений, аварийное восстановление или обеспечение загрузки больших объемов данных для пользователей.
Те, кто работал над GCP, будут знать, что все в GCP вращается вокруг проектов. Каждый проект может иметь много областей, вокруг которых строится архитектура Google Cloud Storage. Buckets — это основные контейнеры в GCS, которые содержат хранимые данные. Они используются как основные блоки для организации ваших данных и выглядят как папки в операционной системе, но они не могут быть вложенными.
Каждое ведро может содержать любое количество объектов, которые могут быть папками и / или файлами. Контейне назначается класс хранения и географическое местоположение при создании. Эти настройки могут быть указаны при создании корзины, но не могут быть изменены позже.
В контейнерах есть определенные соглашения об именах, которые необходимо строго соблюдать, иначе GCP не позволит вам создать корзину. Имена контейнеров глобально уникальны, поэтому их нужно выбирать таким образом, чтобы предотвратить конфликты. Однако имя, используемое удаленным сегментом, можно использовать повторно.
Кроме того, имя не может быть изменено после того, как оно было присвоено сегменту. Единственное решение, если вы хотите изменить его, — это создать новый сегмент с нужным именем, переместить содержимое из предыдущего блока в новый и затем удалить предыдущий фрагмент.
В этом руководстве я расскажу, как управлять корзинами из консоли Google Cloud. Далее следует сценарий Python, где я продемонстрирую выполнение тех же операций программным способом.
Использование Google Cloud Console
Во-первых, давайте посмотрим, как управлять корзинами с помощью веб-интерфейса пользователя, предоставляемого GCP, известного как Google Cloud Console .
Откройте браузер хранилища в любом браузере. Если вы впервые, вам будет предложено сначала создать проект. Также будет показан вариант подписки на бесплатную пробную версию. Пройдите бесплатную пробную регистрацию, в противном случае вы не сможете создать новое ведро самостоятельно. По умолчанию GCP предоставляет только одну бесплатную корзину для каждого экземпляра App Engine.
После завершения всех этих формальных процессов, переход на эту страницу должен открыть страницу, показанную ниже.
Чтобы создать новую корзину, нажмите кнопку « Создать корзину» , выделенную выше. Создайте ведро, указав желаемое имя, как показано ниже. Имя должно соответствовать соглашениям о присвоении имен .
После того, как вы создали контейнер, браузер GCS отобразит его. Ковши можно удалить, выбрав их из списка и нажав кнопку удаления.
Нажатие на кнопку обновления заполняет пользовательский интерфейс любыми изменениями в списке сегментов без обновления всей страницы.
Управление ведрами программно
Во-первых, давайте создадим экземпляр Google Compute Engine, поскольку он позволит быстро продемонстрировать целевые концепции, а не заниматься дополнительными шагами аутентификации на локальных компьютерах. Чтобы создать экземпляр GCE, откройте ссылку и нажмите кнопку « Создать экземпляр» , как показано ниже.
Появится форма с запросом соответствующих деталей, которые можно заполнить по вашему усмотрению. После создания экземпляра GCE откройте клиент SSH, как показано ниже, который по умолчанию открывается в новом окне браузера.
Экран клиента SSH будет выглядеть примерно так, как показано ниже. Все дальнейшие операции в этом руководстве будут выполняться непосредственно на самом клиенте SSH.
Написание скрипта Python
Ниже приведены команды, которые необходимо выполнить для настройки вновь созданного сервера для среды разработки 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 для этого.
gcs_bucket.py
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.
В следующем уроке я расскажу, как управлять объектами, то есть папками и файлами внутри корзины.