Скрипт Python для автоматизации ЗАГРУЗКИ хранилища GCP
Я новичок в GCP и GCP Storage. Я хочу загрузить файлы из файловой системы на ПК в корзину GCS. Я нашел следующий код и изменил его.
Но у меня есть файлы, которые находятся в такой папке:
\F1\Data\Export\PlayOnUsers\2021\12\
То есть 2021 год и 12 месяцев - декабрь.
Так после
\F1\Data\Export\PlayOnUsers\
это меняется.
Мне нужно поставить в формате, аналогичном GCS. Мне нужно создать подсегменты
2021\
и
12\
Как это сделать? Я также не вижу той части, где вы указываете ПОЛНОМОЧИЯ ДЛЯ GCS
У меня пока есть этот код:
from google.cloud import storage
def upload_blob(bucket_name, source_file_name, destination_blob_name):
"""Uploads a file to the bucket."""
# The ID of your GCS bucket
bucket_name = "MyBucket-scv"
# The path to your file to upload
source_file_name = "F1/Data/Export"
# The ID of your GCS object
destination_blob_name = "storage-object-name"
storage_client = storage.Client()
bucket = storage_client.bucket(bucket_name)
blob = bucket.blob(destination_blob_name)
blob.upload_from_filename(source_file_name)
print(
"File {} uploaded to {}.".format(
source_file_name, destination_blob_name
)
)
upload_blob(.., .., ..)
# how do I pass parameters automated when calling the function?
1 ответ
См. раздел Автоматический поиск учетных данных . Использование этих «учетных данных приложения по умолчанию» является хорошей практикой. Все, что вам нужно сделать, это иметь учетную запись службы с соответствующими правами роли | и, если вы работаете вне GCP (т. е. не на Compute Engine и т. д.), вам нужно будет создать ключ учетной записи службы и сослаться на него.
GOOGLE_APPLICATION_CREDENTIALS
прежде чем вы запустите свой код.
Облачное хранилище Google (GCS) на самом деле не имеет концепции папок или «вложенных сегментов». Фактически, все в ведре GCS называется объектом, но имена объектов могут включать (это *nix-эквивалент Windows) и обычно (!) используются для обозначения путей к папкам.
Итак, вам действительно нужно беспокоиться только о рекурсивном переборе ваших папок Windows (я оставлю это вам), а затем для каждого файла, который находит ваш код, ему нужно будет создать объект в вашей корзине GCS, который включает:
- Ведро
- Структура папок с
/
вместо\
- Имя файла
то есть
-
\F1|Data\Export\PlayOnUsers\2021\12\x
становитсяgs://your-bucket/F1/Data/Exporter/PlayOnUsers/2021/12/x
-
\F1|Data\Export\PlayOnUsers\2022\01\x
становитсяgs://your-bucket/F1/Data/Exporter/PlayOnUsers/2022/01/x