Скрипт 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, который включает:

  1. Ведро
  2. Структура папок с /вместо \
  3. Имя файла

то есть

  • \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
Другие вопросы по тегам