Есть ли способ фильтрации по уровням в хранилище больших двоичных объектов azure

#azure #azure-storage #azure-blob-storage #azure-cli

Вопрос:

Я хотел бы перечислить все файлы, хранящиеся на определенном уровне. Это то, что я пытался:

 az storage fs file list 
  --file-system 'cold-backup' 
  --query "[?contains(properties.blobTier, 'Cold')==`true`].properties.blobTier"
 

Но это не работает. Я также попробовал использовать только «blobTier». Не повезло.

Это ошибка, которую я получаю:

Недопустимый запрос jmespath, предоставленный для ‘—query’: В функции содержит(), недопустимый тип значения: Нет, ожидаемый один из: [‘массив’, ‘строка’], получено: «null»

Ответ №1:

Команда az storage fs file list предназначена для файловой системы ADLS Gen2, в выводе нет blobTier свойства, поэтому вы не могли выполнить запрос с ее помощью, также blobTier должно быть Cool вместо Cold .

Если вы хотите перечислить файлы blobTier , с помощью которых вы можете использовать фильтр az storage blob list , он применим к хранилищу больших двоичных объектов, но его также можно использовать для файловой системы ADLS Gen2.

Образец:

 az storage blob list --account-name '<storage-account-name>' --account-key 'xxxxxx' --container-name 'cold-backup' --query "[?properties.blobTier=='Cool']"
 

введите описание изображения здесь

Если вы хотите вывести blobTier , используйте --query "[?properties.blobTier=='Cool'].properties.blobTier" вместо этого в команде.