Разархивируйте и прочтите файл .gz из облачного хранилища Google через Python (облачная функция) - PullRequest
0 голосов
/ 21 июня 2020

Мне нужно прочитать распакованный файл из облачного хранилища Google в python (облачная функция). Я пробовал метод ниже, но каждый раз CF вылетает. Файл в GCS: AB C .gz

import gzip  

def process(data, context):  
    filename = data['name']  
    with gzip.open("'"+filename+"'", 'rb') as f:  
        file_content = f.read()

Пожалуйста, предложите.

1 Ответ

0 голосов
/ 22 июня 2020

Это ожидаемое поведение. Когда ваша функция запускается событием Cloud Storage, вы получаете только словарь, содержащий data для события, а не сам объект.

Вы должны получить объект из Cloud Storage используя name и bucket из словаря data. Вот код, который поможет вам получить файл, взятый из здесь :

import gzip
from google.cloud import storage

def process(data, context):
    storage_client = storage.Client()

    bucket = storage_client.bucket(data['bucket'])
    blob = bucket.blob(data['name'])
    blob.download_to_filename("/tmp/" + data['name'])

    #Here goes your code to unzip the file

Учтите, что вам может потребоваться добавить необходимые библиотеки в файл requirements.txt и предоставить необходимые разрешения для учетной записи службы выполнения функции для доступа к облачному хранилищу.

...