Как получить доступ к метаданным файла, для файлов в облачном хранилище Google, из облачной функции Google Python - PullRequest
0 голосов
/ 29 мая 2019

Я пытаюсь получить доступ к пользовательским метаданным файла в облачном хранилище Google из облачной функции, но он всегда возвращает «Нет».

  • Файл определенно содержит собственные метаданные - пользовательские метаданные можно увидеть в браузере GCS.

  • Я могу получить доступ к пользовательским метаданным, если я выполню свой код в среде облачной оболочки.

  • Но если я запускаю один и тот же код в облачной функции, возвращаемое значение blob.metadata всегда равно "None".

Что я делаю не так? Что я должен делать по-другому в облачной функции по сравнению с облачной оболочкой.

from google.cloud import storage
client = storage.Client()
bucket = client.bucket(<my bucket name>)
blob = bucket.get_blob(<my filename>)
metadata = blob.metadata

Обратите внимание, что blob.download_as_string () правильно выводит мне содержимое файла - это просто пользовательские метаданные, которые я не могу получить.

1 Ответ

1 голос
/ 29 мая 2019

blob.metadata возвращает только пользовательских метаданных объекта хранения (dict). None означает, что нет пользовательских метаданных. См. документы metadata:

Извлечение произвольных / специфичных для приложения метаданных для объекта.

В документации ресурса Object (API) указано, что metadata:

Метаданные, предоставленные пользователем, в парах ключ / значение.

Обратите внимание, что пользовательские метаданные отличаются от метаданных с фиксированным ключом , которые также можно редактировать с помощью кнопки Редактировать метаданные в Google Cloud Console. Метаданные с фиксированным ключом содержат:

  • Content-Type
  • Content-Encoding
  • Content-Disposition
  • Content-Language
  • Cache-Control

Этот конкретный вид метаданных может быть доступен через blob.content_type, blob.content_encoding, ... (отметьте полный пример ).

Чтобы добавить собственные метаданные, просто нажмите кнопку Добавить элемент в том же окне ( Редактировать метаданные ) или используйте gsutil (см. Редактирование документов метаданных объекта ):

gsutil setmeta -h "x-goog-meta-examplekey:examplevalue" gs://<your-bucket>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...