Поделиться через


Get Block List (Получение списка блокировки)

Операция Get Block List извлекает список блокировок, которые были загружены как часть блочного BLOB-объекта.

Существует два списка блокировок для большого двоичного объекта:

  • Список блокировок фиксации: список блоков, успешно зафиксированных в указанном большом двоичном объекте с помощью команды Поместить список блокировок.

  • Незафиксированный список блокировок. Список блоков, которые были отправлены для большого двоичного объекта с помощью put block, но еще не зафиксированы. Эти блоки хранятся в Azure вместе с большим двоичным объектом, но пока не являются частью большого двоичного объекта.

Можно вызвать метод Get Block List , чтобы вернуть список зафиксированных блокировок, незафиксированный список блокировок или оба списка. Вы также можете вызвать эту операцию, чтобы получить список зафиксированных блокировок для snapshot.

Запрос

Запрос Get Block List можно составить следующим образом. Рекомендуется использовать ПРОТОКОЛ HTTPS. Замените myaccount именем своей учетной записи хранения:

URI запроса метода GET параметр "Версия HTTP"
https://myaccount.blob.core.windows.net/mycontainer/myblob?comp=blocklist

https://myaccount.blob.core.windows.net/mycontainer/myblob?comp=blocklist&snapshot=<DateTime>

https://myaccount.blob.core.windows.net/mycontainer/myblob?comp=blocklist&versionid=<DateTime>
HTTP/1.1

Запрос службы эмулированного хранилища

При построении запроса к эмулированной службе хранилища укажите имя узла эмулятора и порт службы BLOB-объектов как 127.0.0.1:10000, затем укажите имя эмулированной учетной записи хранилища.

URI запроса метода GET параметр "Версия HTTP"
http://127.0.0.1:10000/devstoreaccount1/mycontainer/myblob?comp=blocklist HTTP/1.1

Дополнительные сведения см. в статье Использование эмулятора Azurite для разработки и тестирования службы хранилища Azure.

Параметры универсального кода ресурса (URI)

В запросе URI можно указать следующие дополнительные параметры.

Параметр универсального кода ресурса (URI) Описание
snapshot Необязательный элемент. Параметр моментального снимка является непрозрачным значением DateTime, которое, если присутствует, указывает список BLOB-объектов для получения. Дополнительные сведения о работе с моментальными снимками BLOB-объектов см. в разделе Create snapshot BLOB-объекта.
versionid Необязательно для версий 2019-12-12 и более поздних версий. Параметр versionid является непрозрачным DateTime значением, которое при его наличии указывает версию извлекаемого большого двоичного объекта.
blocklisttype Указывает, следует вернуть список зафиксированных блокировок, список незафиксированных блокировок или оба списка одновременно. Допустимые значения: committed, uncommitted или all. Если этот параметр не указан, Get Block List возвращает список зафиксированных блокировок.
timeout Необязательный элемент. Параметр timeout указывается в секундах. Дополнительные сведения см. в разделе Настройка времени ожидания для операций с хранилищем BLOB-объектов.

Заголовки запросов

В следующей таблице перечислены обязательные и необязательные заголовки запросов.

Заголовок запроса Описание
Authorization Обязательный. Указывает схему авторизации, имя учетной записи и подпись. Дополнительные сведения см. в статье Авторизация запросов к Службе хранилища Azure.
Date или x-ms-date Обязательный. Задает время запроса в формате UTC. Дополнительные сведения см. в статье Авторизация запросов к Службе хранилища Azure.
x-ms-version Обязательный для всех авторизованных запросов, необязательный для анонимных запросов. Задает версию операции, используемой для этого запроса. Дополнительные сведения см. в разделе Управление версиями для служб хранилища Azure.
x-ms-lease-id:<ID> Необязательный элемент. Если этот заголовок указан, то операция будет выполнена, только если выполняются оба следующих условия.

— Аренда BLOB-объекта в настоящее время активна.
— идентификатор аренды, указанный в запросе, соответствует идентификатору большого двоичного объекта.

Если этот заголовок указан и любое из условий не выполнено, запрос завершается ошибкой и операция завершается с кодом состояния 412 (сбой условия).
x-ms-client-request-id Необязательный элемент. Предоставляет созданное клиентом непрозрачное значение с ограничением в 1 кибибайт (КиБ), которое записывается в журналы при настройке ведения журнала. Мы настоятельно рекомендуем использовать этот заголовок для сопоставления действий на стороне клиента с запросами, получаемыми сервером. Дополнительные сведения см. в разделе Мониторинг Хранилище BLOB-объектов Azure.

Эта операция также поддерживает использование условных заголовков для выполнения операции при выполнении определенного условия. Дополнительные сведения см. в разделе Указание условных заголовков для операций с хранилищем BLOB-объектов.

Текст запроса

Нет.

Пример запроса

Следующий пример URI запроса возвращает список зафиксированных блокировок для большого двоичного объекта с именем MOV1.avi:

GET http://myaccount.blob.core.windows.net/movies/MOV1.avi?comp=blocklist&blocklisttype=committed HTTP/1.1

Следующий пример URI запроса возвращает как зафиксированный, так и незафиксированный список блокировок:

GET http://myaccount.blob.core.windows.net/movies/MOV1.avi?comp=blocklist&blocklisttype=all HTTP/1.1

Следующий пример URI запроса возвращает список зафиксированных блокировок для snapshot. Snapshot состоит только из зафиксированных блоков, поэтому с ним не связаны незафиксированные блоки.

GET http://myaccount.blob.core.windows.net/mycontainer/myblob?comp=blocklist&snapshot=2009-09-30T20%3a11%3a15.2735974Z

Ответ

Ответ включает код состояния HTTP, набор заголовков ответов и текст ответа, содержащий список блоков.

Код состояния

Успешная операция возвращает код состояния 200 (ОК).

Сведения о кодах состояния см. в разделе Коды состояния и ошибок.

Заголовки ответов

Ответ для этой операции включает следующие заголовки. Ответ также может содержать дополнительные стандартные заголовки HTTP. Все стандартные заголовки соответствуют спецификации протокола HTTP/1.1.

Заголовок ответа Описание
Last-Modified Дата и время последнего изменения большого двоичного объекта. Дата в формате согласно RFC 1123. Дополнительные сведения см. в разделе Представление значений даты и времени в заголовках. Возвращается только в том случае, если большой двоичный объект содержит зафиксированные блоки.

Любая операция, которая изменяет BLOB-объект, в том числе обновления метаданных или свойств BLOB-объекта, изменяет время последнего изменения BLOB-объекта.
ETag ETag BLOB-объекта. Возвращается только в том случае, если большой двоичный объект содержит зафиксированные блоки.
Content-Type MIME-тип содержимого BLOB-объекта. Значение по умолчанию — application/xml.
x-ms-blob-content-length Размер большого двоичного объекта в байтах.
x-ms-request-id Этот заголовок однозначно идентифицирует выполненный запрос и может использоваться для устранения неполадок запроса. Дополнительные сведения см. в разделе Устранение неполадок с операциями API.
x-ms-version Указывает версию службы, которая использовалась для выполнения запроса. Этот заголовок возвращается для запросов к версии 2009-09-19 и более поздним версиям.

Этот заголовок также возвращается для анонимных запросов без указанной версии, если контейнер был помечен как общедоступный с помощью Хранилища BLOB-объектов версии 2009-09-19. Примечание. С помощью анонимного запроса можно вернуть только зафиксированный список блокировок.
Date Значение даты и времени в формате UTC, созданное службой, указывающее время, когда был инициирован ответ.
x-ms-client-request-id Может использоваться для устранения неполадок с запросами и соответствующими ответами. Значение этого заголовка равно значению заголовка x-ms-client-request-id , если он присутствует в запросе и содержит не более 1024 видимых символов ASCII. Если заголовок x-ms-client-request-id отсутствует в запросе, он отсутствует в ответе.

Эта операция также поддерживает использование условных заголовков для получения списка блокировок, только если выполняется указанное условие. Дополнительные сведения см. в разделе Указание условных заголовков для операций с хранилищем BLOB-объектов.

Текст ответа

Формат текста ответа для запроса, который возвращает только зафиксированные блокировки, выглядит следующим образом:

<?xml version="1.0" encoding="utf-8"?>
<BlockList>
  <CommittedBlocks>
    <Block>
      <Name>base64-encoded-block-id</Name>
      <Size>size-in-bytes</Size>
    </Block>
  <CommittedBlocks>
</BlockList>

Формат текста ответа для запроса, который возвращает как зафиксированные, так и незафиксированные блокировки, выглядит следующим образом:


<?xml version="1.0" encoding="utf-8"?>
<BlockList>
  <CommittedBlocks>
     <Block>
        <Name>base64-encoded-block-id</Name>
        <Size>size-in-bytes</Size>
     </Block>
  </CommittedBlocks>
  <UncommittedBlocks>
    <Block>
      <Name>base64-encoded-block-id</Name>
      <Size>size-in-bytes</Size>
    </Block>
  </UncommittedBlocks>
 </BlockList>

Пример ответа

В следующем примере параметр blocklisttype имеет значение committed, поэтому в ответе возвращаются только незафиксированные блокировки.

HTTP/1.1 200 OK
Transfer-Encoding: chunked
Content-Type: application/xml
Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
x-ms-request-id: 42da571d-34f4-4d3e-b53e-59a66cb36f23
Date: Sun, 25 Sep 2011 00:33:19 GMT

<?xml version="1.0" encoding="utf-8"?>
<BlockList>
  <CommittedBlocks>
    <Block>
      <Name>BlockId001</Name>
      <Size>4194304</Size>
    </Block>
    <Block>
      <Name>BlockId002</Name>
      <Size>4194304</Size>
    </Block>
  </CommittedBlocks>
</BlockList>

В этом примере параметр blocklisttype имеет значение all и в ответе возвращаются и зафиксированные и незафиксированные блокировки.

HTTP/1.1 200 OK
Transfer-Encoding: chunked
Content-Type: application/xml
Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
x-ms-request-id: 42da571d-34f4-4d3e-b53e-59a66cb36f23
Date: Sun, 25 Sep 2011 00:35:56 GMT

<?xml version="1.0" encoding="utf-8"?>
<BlockList>
  <CommittedBlocks>
    <Block>
      <Name>BlockId001</Name>
      <Size>4194304</Size>
    </Block>
    <Block>
      <Name>BlockId002</Name>
      <Size>4194304</Size>
    </Block>
  </CommittedBlocks>
  <UncommittedBlocks>
    <Block>
      <Name>BlockId003</Name>
      <Size>4194304</Size>
    </Block>
    <Block>
      <Name>BlockId004</Name>
      <Size>1024000</Size>
    </Block>
  </UncommittedBlocks>
</BlockList>

В следующем примере blocklisttype параметру присвоено значение all, но большой двоичный объект еще не зафиксирован, поэтому CommittedBlocks элемент пуст.

HTTP/1.1 200 OK
Transfer-Encoding: chunked
Content-Type: application/xml
Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
x-ms-request-id: 42da571d-34f4-4d3e-b53e-59a66cb36f23
Date: Wed, 14 Sep 2011 00:40:22 GMT

<?xml version="1.0" encoding="utf-8"?>
<BlockList>
  <CommittedBlocks />
  <UncommittedBlocks>
    <Block>
      <Name>BlockId001</Name>
      <Size>1024</Size>
    </Block>
    <Block>
      <Name>BlockId002</Name>
      <Size>1024</Size>
    </Block>
    <Block>
      <Name>BlockId003</Name>
      <Size>1024</Size>
    </Block>
    <Block>
      <Name>BlockId004</Name>
      <Size>1024</Size>
    </Block>
  </UncommittedBlocks>
</BlockList>

Авторизация

При вызове любой операции доступа к данным в службе хранилища Azure требуется авторизация. Вы можете авторизовать Get Block List операцию, как описано ниже.

Важно!

Корпорация Майкрософт рекомендует использовать Microsoft Entra ID с управляемыми удостоверениями для авторизации запросов к службе хранилища Azure. Microsoft Entra ID обеспечивает более высокий уровень безопасности и простоту использования по сравнению с авторизацией с общим ключом.

Служба хранилища Azure поддерживает использование Microsoft Entra ID для авторизации запросов к данным BLOB-объектов. С помощью Microsoft Entra ID можно использовать управление доступом на основе ролей Azure (Azure RBAC) для предоставления разрешений субъекту безопасности. Субъект безопасности может быть пользователем, группой, субъектом-службой приложения или управляемым удостоверением Azure. Субъект безопасности проходит проверку подлинности с помощью Microsoft Entra ID для возврата маркера OAuth 2.0. Затем маркер можно использовать для авторизации запроса к службе BLOB-объектов.

Дополнительные сведения об авторизации с помощью Microsoft Entra ID см. в статье Авторизация доступа к BLOB-объектам с помощью Microsoft Entra ID.

Разрешения

Ниже перечислены действия RBAC, необходимые Microsoft Entra пользователю, группе, управляемому удостоверению или субъекту-службе для вызова Get Block List операции, а также встроенная роль Azure RBAC с наименьшими привилегиями, которая включает это действие:

Дополнительные сведения о назначении ролей с помощью Azure RBAC см. в статье Назначение роли Azure для доступа к данным BLOB-объектов.

Комментарии

Вызовите Get Block List метод , чтобы вернуть список блоков, которые были зафиксированы в блочных BLOB-объектах, список блоков, которые еще не были зафиксированы, или оба списка. Используйте параметр blocklisttype, чтобы указать, какой список блокировок нужно вернуть. Список зафиксированных блоков возвращается в том же порядке, в который они были зафиксированы операцией "Поместить список блокировок ".

Вы можете использовать незафиксированный список блокировок, чтобы определить, какие блоки отсутствуют в большом двоичном объекте в случаях, когда вызовы к Put Block или Put Block List завершились сбоем. Список незафиксированных блоков возвращается в алфавитном порядке. Если идентификатор блокировки загружен более одного раза, в списке отображается только последняя загруженная блокировка.

Примечание

Если большой двоичный объект еще не зафиксирован, вызов Get Block List метода с blocklisttype=all возвращает незафиксированные блоки CommittedBlocks , а элемент пуст.

Get Block List не поддерживает параллелизм при чтении списка незафиксированных блоков. Вызовы , Get Block List где blocklisttype=uncommitted или blocklisttype=all имеют более низкую максимальную частоту запросов, чем другие операции чтения. Дополнительные сведения о целевой пропускной способности для операций чтения см. в статье Целевые показатели масштабируемости и производительности службы хранилища Azure.

Начиная с версии 2019-12-12 блочный BLOB-объект может содержать блоки размером до 4000 мебибайт (МиБ). Для защиты приложений, использующих 32-разрядное целое число со знаком для представления размера блока, вызов Get Block List блочного BLOB-объекта, содержащего блок размером более 100 МиБ с версией REST, предшествующей 12.12.2019, приводит к коду состояния 409 (конфликт).

Get Block List относится только к блочным BLOB-объектам. Вызов Get Block List для страничного BLOB-объекта вызывает код состояния 400 (неправильный запрос).

Get Block List для архивированного блочного BLOB-объекта произойдет сбой.

Выставление счетов

Запросы на ценообразование могут исходить от клиентов, использующих API хранилища BLOB-объектов, напрямую через REST API хранилища BLOB-объектов или из клиентской библиотеки службы хранилища Azure. Эти запросы начисляют плату за каждую транзакцию. Тип транзакции влияет на способ оплаты учетной записи. Например, транзакции чтения начисляются на категорию выставления счетов, отличную от категории операций записи. В следующей таблице показана категория выставления счетов для Get Block List запросов на основе типа учетной записи хранения.

Операция Тип учетной записи хранения Категория выставления счетов
Get Block List (Получение списка блокировки) Блочный BLOB-объект (ценовая категории "Премиум")
Общего назначения версии 2 (цен. категория "Стандартный")
Другие операции
Get Block List (Получение списка блокировки) Стандартная общего назначения версии 1 Операции чтения

Дополнительные сведения о ценах для указанной категории выставления счетов см. в разделе Цены на Хранилище BLOB-объектов Azure.

См. также раздел

Авторизация запросов к состоянию службы хранилища Azureи коды ошибокхранилища BLOB-объектов. Установкатайм-аутов для операций с хранилищем BLOB-объектов