Перечисление контейнеров
Операция List Containers
возвращает список контейнеров в указанной учетной записи хранения.
Запрос
Запрос можно создать List Containers
следующим образом. Рекомендуется использовать протокол HTTPS. Замените myaccount именем своей учетной записи хранения.
Метод | Универсальный код ресурса (URI) запроса | параметр "Версия HTTP" |
---|---|---|
GET |
https://myaccount.blob.core.windows.net/?comp=list |
HTTP/1.1 |
Обратите внимание, что URI должен всегда включать косую черту (/) для отделения имени узла от частей пути и запроса URI. В случае операции List Containers
часть пути в URI остается пустой.
Запрос службы эмулированного хранилища
При выполнении запроса к эмулированной службе хранилища укажите имя узла эмулятора и порт Хранилище BLOB-объектов Azure в качестве 127.0.0.1:10000
, за которым следует эмулированное имя учетной записи хранения.
Метод | Универсальный код ресурса (URI) запроса | параметр "Версия HTTP" |
---|---|---|
GET |
http://127.0.0.1:10000/devstoreaccount1?comp=list |
HTTP/1.1 |
Обратите внимание, что эмулированное хранилище поддерживает только большие двоичные объекты размером до 2 ГиБ.
Дополнительные сведения см. в разделах Использование эмулятора Azurite для разработки локальной службы хранилища Azure и Различия между эмулятором хранилища и службами хранилища Azure.
Параметры универсального кода ресурса (URI)
В URI запроса можно указать следующие дополнительные параметры.
Параметр | Описание |
---|---|
prefix |
Необязательный элемент. Фильтрует результаты, чтобы вернуть только контейнеры с именем, начинающимся с указанного префикса. |
marker |
Необязательный элемент. Строковое значение, определяющее часть списка контейнеров, возвращаемых при следующей операции перечисления. Операция возвращает NextMarker значение в тексте ответа, если операция перечисления не вернула все контейнеры, оставшиеся для перечисления с текущей страницей. Значение можно использовать NextMarker в качестве значения параметра marker в последующем вызове, чтобы запросить следующую страницу элементов списка.Значение маркера непрозрачно для клиента. |
maxresults |
Необязательный элемент. Указывает максимальное количество возвращаемых контейнеров. Если в запросе не указано maxresults или указано значение больше 5000, сервер вернет до 5000 элементов. Обратите внимание, что если операция перечисления пересекает границу секции, служба вернет маркер продолжения для получения оставшихся результатов. По этой причине возможно, что служба вернет меньше результатов, чем указано в maxresults параметре , или значение по умолчанию 5000. Если параметр имеет значение меньше или равно нулю, сервер возвращает код состояния 400 (недопустимый запрос). |
include={metadata,deleted,system} |
Необязательный элемент. Задает один или несколько наборов данных для включения в ответ. - metadata : обратите внимание, что метаданные, запрашиваемые с помощью этого параметра, должны храниться в соответствии с ограничениями именования, установленными в версии 2009-09-19 Хранилища BLOB-объектов. Начиная с этой версии все имена метаданных должны соответствовать соглашениям об именовании для идентификаторов C#.- deleted : версия 12.12.2019 и более поздние. Указывает, что обратимо удаленные контейнеры должны быть включены в ответ.- system : версия 2020-10-02 и более поздние. Указывает, следует ли включать системные контейнеры в ответ. Включение этого параметра приведет к выводу списка системных контейнеров, таких как $logs и $changefeed . Обратите внимание, что возвращаемые конкретные системные контейнеры зависят от того, какие функции службы включены в учетной записи хранения. |
timeout |
Необязательный элемент. Параметр timeout указывается в секундах. Дополнительные сведения см. в разделе Настройка времени ожидания для операций с хранилищем BLOB-объектов. |
Заголовки запросов
В следующей таблице перечислены обязательные и необязательные заголовки запросов.
Заголовок запроса | Описание |
---|---|
Authorization |
Обязательный. Указывает схему авторизации, имя учетной записи и подпись. Дополнительные сведения см. в статье Авторизация запросов к Службе хранилища Azure. |
Date или x-ms-date |
Обязательный. Задает время запроса в формате UTC. Дополнительные сведения см. в статье Авторизация запросов к Службе хранилища Azure. |
x-ms-version |
Требуется для всех авторизованных запросов. Задает версию операции, используемой для этого запроса. Дополнительные сведения см. в разделе Управление версиями для служб хранилища Azure. |
x-ms-client-request-id |
Необязательный элемент. Предоставляет созданное клиентом непрозрачное значение с ограничением в 1 кибибайт (КиБ), которое записывается в журналы при настройке ведения журнала. Мы настоятельно рекомендуем использовать этот заголовок для сопоставления действий на стороне клиента с запросами, получаемыми сервером. Дополнительные сведения см. в разделе Мониторинг Хранилище BLOB-объектов Azure. |
Текст запроса
Нет.
Ответ
Ответ включает код состояния HTTP, набор заголовков ответа и текст ответа в XML-формате.
Код состояния
Успешная операция возвращает код состояния 200 (ОК). Сведения о кодах состояния см. в разделе Коды состояния и ошибок.
Заголовки ответов
Ответ для этой операции включает следующие заголовки. Ответ также содержит дополнительные стандартные заголовки HTTP. Все стандартные заголовки соответствуют спецификации протокола HTTP/1.1.
Заголовок ответа | Описание |
---|---|
Content-Type |
Стандартный заголовок HTTP/1.1. Задает формат, в котором возвращаются результаты. В настоящее время это значение равно application/xml . |
x-ms-request-id |
Этот заголовок однозначно идентифицирует выполненный запрос и может использоваться для устранения неполадок с запросом. Дополнительные сведения см. в разделе Устранение неполадок операций API. |
x-ms-version |
Указывает версию хранилища BLOB-объектов, используемой для выполнения запроса. Этот заголовок возвращается для запросов к версии 2009-09-19 и более поздним версиям. |
Date |
Значение даты и времени в формате UTC, указывающее время, в которое был инициирован ответ. Служба создает это значение. |
x-ms-client-request-id |
Этот заголовок можно использовать для устранения неполадок с запросами и соответствующими ответами. Значение этого заголовка равно значению заголовка x-ms-client-request-id , если он присутствует в запросе. Значение равно не более 1024 видимых символов ASCII. Если заголовок x-ms-client-request-id отсутствует в запросе, этот заголовок не будет присутствовать в ответе. |
Текст ответа
Формат текста ответа следующий.
<?xml version="1.0" encoding="utf-8"?>
<EnumerationResults ServiceEndpoint="https://myaccount.blob.core.windows.net">
<Prefix>string-value</Prefix>
<Marker>string-value</Marker>
<MaxResults>int-value</MaxResults>
<Containers>
<Container>
<Name>container-name</Name>
<Version>container-version</Version>
<Deleted>true</Deleted>
<Properties>
<Last-Modified>date/time-value</Last-Modified>
<Etag>etag</Etag>
<LeaseStatus>locked | unlocked</LeaseStatus>
<LeaseState>available | leased | expired | breaking | broken</LeaseState>
<LeaseDuration>infinite | fixed</LeaseDuration>
<PublicAccess>container | blob</PublicAccess>
<HasImmutabilityPolicy>true | false</HasImmutabilityPolicy>
<HasLegalHold>true | false</HasLegalHold>
<DeletedTime>datetime</DeletedTime>
<RemainingRetentionDays>no-of-days</RemainingRetentionDays>
</Properties>
<Metadata>
<metadata-name>value</metadata-name>
</Metadata>
</Container>
</Containers>
<NextMarker>marker-value</NextMarker>
</EnumerationResults>
LeaseStatus
, LeaseState
и LeaseDuration
появляются только в версии 2012-02-12 и позднее.
Начиная с версии 2013-08-15, атрибут AccountName
для элемента EnumerationResults
переименован в ServiceEndpoint
. Элемент URL
также был удален из элемента Container
. Для версий, предшествующих 2013-08-15, URL-адрес контейнера, как указано в URL
поле , не включает restype=container
параметр . Если это значение используется для последующих запросов к перечисленным контейнерам, то следует обязательно добавлять этот параметр, чтобы указать, что тип ресурса — контейнер.
Элементы Prefix
, Marker
и MaxResults
присутствуют только в том случае, если они указаны в универсальном коде ресурса (URI). Элемент NextMarker
имеет значение только в том случае, если результаты списка не завершены.
Элемент Metadata
присутствует только в том случае, если вы указали include=metadata
параметр в URI. В элементе Metadata
значение для каждой пары "имя-значение" приводится с элементом, соответствующим имени в паре.
Если пара "имя-значение" метаданных нарушает ограничения именования, применяемые в версии 2009-09-19, текст ответа указывает на проблемное имя в элементе x-ms-invalid-name
. Это показано в следующем фрагменте XML:
<Metadata>
<MyMetadata1>first value</MyMetadata1>
<MyMetadata2>second value</MyMetadata2>
<x-ms-invalid-name>invalid-metadata-name</x-ms-invalid-name>
</Metadata>
Начиная с версии 31.05.2016 открытые разрешения контейнера предоставляются в свойстве PublicAccess
. Он указывает, можно ли получить общий доступ к данным в контейнере, а также уровень доступа. Возможные значения:
-
container
: указывает полный общий доступ на чтение для данных контейнера и BLOB-объектов. Клиенты могут перечислять большие двоичные объекты в контейнере с помощью анонимного запроса, но не могут перечислять контейнеры в учетной записи хранения. -
blob
: указывает общий доступ на чтение для BLOB-объектов. Данные BLOB-объектов в этом контейнере можно считывать с помощью анонимного запроса, но данные контейнера недоступны. Клиенты не могут перечислять большие двоичные объекты в контейнере с помощью анонимного запроса.
Если это свойство не указано в <properties>
разделе, контейнер является частным для владельца учетной записи.
HasImmutabilityPolicy
и HasLegalHold
отображаются только в версии 2017-11-09 и более поздних версиях.
HasImmutabilityPolicy
Имеет значение , true
если для контейнера задана политика неизменяемости, и false
в противном случае.
HasLegalHold
Имеет значение , true
если контейнер имеет один или несколько удержаний по юридическим причинам, и false
в противном случае.
Примечание
Начиная с версии 2009-09-19, текст ответа для List Containers
возвращает время последнего изменения контейнера в элементе с именем Last-Modified
. В предыдущих версиях этот элемент назывался LastModified
.
Элементы Version
, Deleted
, DeletedTime
и RemainingRetentiondays
отображаются только в версии 2019-12-12 и более поздних, если указано deleted
значение параметра include
запроса . Эти элементы отображаются только в том случае, если контейнер обратимо удален и может быть восстановлен. Элементы Version
, Deleted
, DeletedTime
и RemainingRetentiondays
отображаются только в версии 2019-12-12 и более поздних, если для параметра запроса указано include
удаленное значение, а контейнер обратимо удален и допускает восстановление.
Авторизация
При вызове любой операции доступа к данным в службе хранилища Azure требуется авторизация. Вы можете авторизовать List Containers
операцию, как описано ниже.
Важно!
Корпорация Майкрософт рекомендует использовать 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 пользователю, группе, управляемому удостоверению или субъекту-службе для вызова List Containers
операции, а также встроенная роль Azure RBAC с наименьшими привилегиями, которая включает это действие:
- Действие Azure RBAC:Microsoft.Storage/storageAccounts/blobServices/containers/read (в пределах учетной записи хранения или выше)
- Встроенная роль с наименьшими привилегиями:Участник данных BLOB-объектов хранилища (в пределах учетной записи хранения или выше)
Дополнительные сведения о назначении ролей с помощью Azure RBAC см. в статье Назначение роли Azure для доступа к данным BLOB-объектов.
Комментарии
Если задано значение параметра maxresults
, а количество возвращаемых контейнеров превышает это значение или превышает значение по умолчанию для maxresults
, текст ответа будет содержать NextMarker
элемент . (Это также называется маркером продолжения.
NextMarker
указывает следующий контейнер, возвращаемый при последующем запросе. Чтобы вернуть следующий набор элементов, укажите значение NextMarker
параметра marker
в универсальном коде ресурса (URI) для последующего запроса. Обратите внимание, что значение NextMarker
должно обрабатываться как непрозрачное.
Если операция перечисления пересекает границу секции, служба вернет значение для NextMarker
элемента для получения оставшихся результатов из следующей секции. Операция перечисления, охватывающая несколько секций, приводит к тому, что возвращается меньший набор элементов, чем указано в maxresults
параметре , или значение по умолчанию 5000. Приложение всегда должно проверка наличие элемента при выполнении операции перечисления NextMarker
и обрабатывать его соответствующим образом.
Контейнеры в тексте ответа перечисляются в алфавитном порядке.
Время ожидания для операции List Containers
истекает через 30 секунд.
Выставление счетов
Запросы на ценообразование могут исходить от клиентов, использующих API хранилища BLOB-объектов, напрямую через REST API хранилища BLOB-объектов или из клиентской библиотеки службы хранилища Azure. Эти запросы начисляют плату за каждую транзакцию. Тип транзакции влияет на способ оплаты учетной записи. Например, транзакции чтения начисляются на категорию выставления счетов, отличную от категории операций записи. В следующей таблице показана категория выставления счетов для List Containers
запросов на основе типа учетной записи хранения.
Операция | Тип учетной записи хранения | Категория выставления счетов |
---|---|---|
Перечисление контейнеров | Блочный BLOB-объект (ценовая категории "Премиум") Общего назначения версии 2 (цен. категория "Стандартный") Стандартная общего назначения версии 1 |
Операции со списком и Create контейнерами |
Дополнительные сведения о ценах для указанной категории выставления счетов см. в разделе Цены на Хранилище BLOB-объектов Azure.
Пример запроса и ответа
В следующем примере URI запрашивается список контейнеров для учетной записи, устанавливая максимальное количество возвращаемых результатов для начальной операции на три.
GET https://myaccount.blob.core.windows.net/?comp=list&maxresults=3 HTTP/1.1
Запрос отправлен с такими заголовками.
x-ms-version: 2016-05-31
x-ms-date: Wed, 26 Oct 2016 22:08:44 GMT
Authorization: SharedKey myaccount:CY1OP3O3jGFpYFbTCBimLn0Xov0vt0khH/D5Gy0fXvg=
Возвращены следующие код состояния и заголовки ответа.
HTTP/1.1 200 OK
Transfer-Encoding: chunked
Content-Type: application/xml
Date: Wed, 26 Oct 2016 22:08:54 GMT
x-ms-version: 2016-05-31
Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
XML ответа для этого запроса будет следующим. Обратите внимание, что NextMarker
элемент следует за набором контейнеров и включает имя следующего возвращаемого контейнера.
<?xml version="1.0" encoding="utf-8"?>
<EnumerationResults ServiceEndpoint="https://myaccount.blob.core.windows.net/">
<MaxResults>3</MaxResults>
<Containers>
<Container>
<Name>audio</Name>
<Properties>
<Last-Modified>Wed, 26 Oct 2016 20:39:39 GMT</Last-Modified>
<Etag>0x8CACB9BD7C6B1B2</Etag>
<PublicAccess>container</PublicAccess>
</Properties>
</Container>
<Container>
<Name>images</Name>
<Properties>
<Last-Modified>Wed, 26 Oct 2016 20:39:39 GMT</Last-Modified>
<Etag>0x8CACB9BD7C1EEEC</Etag>
</Properties>
</Container>
<Container>
<Name>textfiles</Name>
<Properties>
<Last-Modified>Wed, 26 Oct 2016 20:39:39 GMT</Last-Modified>
<Etag>0x8CACB9BD7BACAC3</Etag>
</Properties>
</Container>
</Containers>
<NextMarker>video</NextMarker>
</EnumerationResults>
Последующая операция для списка определяет маркер в URI запроса следующим образом. Возвращается следующий набор результатов, начиная с контейнера, указанного маркером.
https://myaccount.blob.core.windows.net/?comp=list&maxresults=3&marker=video
См. также раздел
Авторизация запросов к службе хранилища Azure
Коды состояний и ошибок
Коды ошибок хранилища BLOB-объектов
Перечисление ресурсов BLOB-объектов
Использование эмулятора службы хранилища Azure для разработки и тестирования
Установка времени ожидания для операций с хранилищем BLOB-объектов