Облачная функция Google python не может взаимодействовать с большими двоичными объектами

#python #google-cloud-platform #google-cloud-functions

#python #google-cloud-platform #google-cloud-функции

Вопрос:

Я пытаюсь загрузить файл в корзину, выполнить синтаксический анализ в формате json и вставить его в таблицу в bigquery. Я получаю эту ошибку

 AttributeError: 'str' object has no attribute 'blob'
  

Я считаю, что это проблема с зависимостью, но я не знаю, как ее решить.

Я кодирую непосредственно в графический интерфейс облачной функции.

 def create_gcs(event, context):
    """Triggered by a change to a Cloud Storage bucket.
    Args:
         event (dict): Event payload.
         context (google.cloud.functions.Context): Metadata for the event.
    """
    file = event
    print(f"********The file {file['name']} was created in {file['bucket']} at {event['timeCreated']}")
    
    
    bucket = file['bucket']
    blob = bucket.get_blob(file['name'])
    data = blob.download_as_string()
    table_id="tableid"
    client=bigquery.Client()
    client.insert_rows_json(table_id,[data])
    print(blob)
  

Комментарии:

1. Это тот же код, который вызвал эту ошибку? Я не вижу ничего, что могло бы его создать. Можете ли вы включить всю трассировку стека?

Ответ №1:

Я думаю, вам следует сначала создать объект клиента хранилища и вызвать get_blob функцию.

Большие двоичные объекты / Объекты

 from google.cloud import storage
client = storage.Client()
bucket = client.get_bucket(file['bucket'])
blob = bucket.get_blob(file['name'])