Вы можете оказаться в ситуации, когда вам понадобится дешевое, но эффективное решение для хранения ваших файлов. Но где найти такое решение? Обратите внимание на хранилище двоичных больших объектов (blob) от Microsoft Azure! Blob-хранилище является одним из сервисов хранения Azure, которое позволяет вам хранить большие объемы текстовых и бинарных файлов, потоковое содержимое или даже статическое содержимое для распределения.
В этом руководстве вы узнаете, как работать с blob-хранилищем в Azure, следуя нескольким распространенным примерам.
Читайте далее, чтобы начать!
Предварительные требования
Этот учебник будет демонстрацией на практике. Если вы хотите следовать за ним, убедитесь, что у вас установлены и доступны следующие компоненты.
- PowerShell 7 установлен.
- Модуль PowerShell Az установлен в вашей среде PowerShell 7.
- Исполняемый файл AzCopy загружен и доступен.
- Подписка Azure – Есть несколько способов использовать определенные ресурсы Azure с минимальными или нулевыми затратами.
Создание среды Azure
Прежде чем использовать хранилище блобов для хранения ваших файлов, вам сначала нужно импортировать модули PowerShell Core, подключиться к вашей подписке Azure и создать среду Azure.
1. Запустите PowerShell 7 и выполните следующую команду, чтобы импортировать модули, которые вы будете использовать для хранения файлов в хранилище блобов.

2. Затем войдите в свою тенант Azure Active Directory (AD), а затем выполните нижеприведенную команду, чтобы завершить интерактивную аутентификацию в вашем веб-браузере, как показано ниже.
Хотя это выходит за рамки данного руководства, существуют и другие методы аутентификации, такие как Сервисный Принципал или использование токена доступа.

Всегда убедитесь, что арендатор и подписка, отображаемые после входа, соответствуют тем, которые вы намерены использовать. При необходимости вы можете изменить свой контекст.
3. Теперь выполните нижеприведенную команду, чтобы создать новую группу ресурсов с именем demo
, и добавьте к нему пять случайных чисел (Get-Random -Maximum 99999
). Группы ресурсов иерархически находятся ниже подписок и содержат ресурсы, которые позволяют более детальное управление.
Обратите внимание, что -Местоположение
группы ресурсов установлено на Central US
в этом примере. Когда команда завершит выполнение, она сохраняет результат в переменную $resourceGroup
.

4. Запустите следующую команду для выполнения следующих задач и создания нового учетной записи хранилища Azure. В этом примере учетная запись хранилища называется storage и дополняется пятью случайными числами (Get-Random -Maximum 99999
). Переменная $storageAccount
будет содержать возвращенный объект после завершения выполнения команды.

5. Выполните следующую команду для выполнения нескольких задач по назначению роли Azure AD:
- Значение
-SignInName
использует учетную запись, под которой вы в настоящее время вошли через свойствоUserID
, возвращаемое командойGet-AzAccessToken
. - Значение
-RoleDefinitionName
является встроенной ролью Участник данных блобов хранилища, которую вы назначаете. - Значение
-Scope
устанавливает область назначения роли для созданного вами хранилища (показано storage10029) через свойствоId
переменной$storageAccount
.
Вы всегда можете указать более детальные назначения ролей для отдельных контейнеров по мере необходимости.

6. Наконец, выполните серию команд ниже, чтобы создать файл с именем temp.dat на вашей локальной системе. Вы будете загружать и загружать этот файл из хранилища в следующих разделах, чтобы продемонстрировать, как работает хранилище блобов.

Загрузка файлов через PowerShell
Теперь, когда вы создали среду Azure и создали образец файла, давайте начнем загрузку файла в хранилище блобов. Хранилище блобов работает по-разному, чем стандартные файловые системы. Каждый файл в хранилище блобов представляет собой объект и хранится в контейнерах.
Основные функции блобов схожи с другими файловыми системами, но существуют случаи использования, когда одно из них может быть лучшим решением. Блобы могут даже поддерживать виртуальные файловые системы (например, BlobFuse).
Microsoft предлагает несколько методов для загрузки файлов в учетные записи хранилища с помощью PowerShell, AzCopy и портала Azure. Но давайте загрузим образец файла (temp.dat) в хранилище блобов с помощью PowerShell для начала. PowerShell предоставляет вам последовательный опыт работы с учетными записями хранилища Azure.
Для выполнения этой демонстрации требуется выполнить определенные действия, которые повлекут за собой расходы. Следите за своим потреблением и удаляйте ресурсы, когда вы больше не собираетесь их использовать.
Запустите следующие команды для создания нового контейнера и загрузки файла temp.dat ($file
) в качестве объекта. В этом примере контейнер назван demo, но вы можете дать ему другое имя, как вам удобно.

Загрузка файлов через AzCopy
Возможно, у вас есть более сложные сценарии использования, такие как синхронизация контента или копирование контента между разными учетными записями в масштабе. Если да, то вам нужен инструмент командной строки AzCopy.
Запустите нижеприведенные команды, чтобы войти в свою учетную запись Azure и скопировать ваш локальный файл ($file
) на URL-адрес контейнера. Вы входите в учетную запись Azure, так как AzCopy не знает учетных данных, которые вы используете с PowerShell.

Вместо загрузки, возможно, вы хотите загрузить файлы через AzCopy. Если это так, выполните следующую команду, чтобы
копировать
указанные файлы (temp.dat
) из вашего контейнера в текущий локальный каталог:& .\azopy.exe copy "$($container.CloudBlobContainer.Uri.AbsoluteUri)/temp.dat" .\temp.dat
Загрузка файлов через портал Azure
Если вы предпочитаете графический метод загрузки ваших файлов, то Проводник хранилища Azure – ваш друг. Проводник хранилища Azure – один из лучших графических методов управления вашим хранилищем блобов. Вы можете получить доступ к проводнику хранилища из ресурса вашего хранилища в портале Azure.
1. Откройте ваш любимый веб-браузер и перейдите в Проводник хранилища в портале Azure.
2. Щелкните на контейнере demo в разделе КОНТЕЙНЕРЫ БЛОБОВ, как показано ниже, затем щелкните Загрузить, чтобы получить доступ к лезвию Загрузить блоб (правая панель).
3. Теперь щелкните по значку папки на панели Загрузить блоб, чтобы выбрать файлы для загрузки (temp.dat).
4. Наконец, нажмите Загрузить (синяя кнопка), чтобы загрузить свой файл.

После завершения загрузки вы можете закрыть панель Загрузить блоб и увидеть загруженный вами блоб, как на изображении ниже.

Загрузка файлов через портал Azure
Подобно загрузке контента в хранилище блобов, Azure поддерживает загрузку контента различными способами. Но поскольку вы только что загрузили файл (temp.dat) через портал Azure, давайте загрузим тот же файл, используя Проводник хранилища Azure в портале Azure.
Выберите файл (temp.dat) для загрузки и нажмите кнопку Загрузить в Проводнике хранилища Azure, как показано ниже. Это откроет новое диалоговое окно для подтверждения загрузки, которое вы увидите на следующем шаге.

Теперь нажмите кнопку Нажмите здесь, чтобы начать загрузку, чтобы загрузить выбранные вами файлы.

Загрузка файлов через PowerShell
Как и при загрузке файлов, у вас также есть возможность загрузить файлы из хранилища блобов, выполнив команды в PowerShell. С помощью PowerShell вы можете перечислить объекты в контейнере, а затем загрузить их.
Выполните нижеприведенные команды, чтобы перечислить все объекты в вашем контейнере и загрузить temp.dat в ваш локальный каталог.

Если вы предпочитаете использовать ссылки с коротким сроком действия для загрузки файлов, вы можете использовать токены Shared Access Signature (SAS), чтобы создать предварительно авторизованную ссылку для загрузки. Эти токены являются уникальными и приватными аутентификационными токенами, которые вы можете использовать для проверки вашего доступа.
Запустите команды ниже, чтобы создать новую ссылку для загрузки файла (temp.dat
), который вы хотите загрузить. Сгенерированная ссылка для загрузки истечет через 10 секунд и загрузит (Invoke-WebRequest $uri
) содержимое, используя эту ссылку, в переменную $temp
.

Размещение веб-страницы в общедоступном интернете из хранилища блобов
До этого момента вы видели примеры загрузки файлов аутентифицированными пользователями. Но знали ли вы, что хранилище блобов также может предоставить отличную опцию для публичного контента? Одним из примеров является использование блоба для размещения содержимого вашей веб-страницы, что вы и сделаете в этом примере.
Даже если содержимое вашей веб-страницы зашифровано как во время передачи, так и в покое, любой может получить доступ к этому содержимому, если установлен общедоступный доступ.
Поскольку вы настраиваете другой сценарий использования, вы будете использовать одно из основных преимуществ общедоступного облака – масштабирование и эластичность. Вы можете создать новый учетную запись хранилища для определенного случая использования и ограничить риск использования общедоступных контейнеров.
1. Запустите следующую команду для создания новой учетной записи хранилища, как вы делали на четвертом шаге раздела «Создание среды Azure». На этот раз передайте возвращенный объект переменной $publicStorageAccount
.

Теперь у вас есть отдельная учетная запись хранилища для вашего общедоступного контента, и вы можете настроить ее для размещения статического веб-контента с помощью следующей команды.
2. Затем выполните командлет Enable-AzStorageStaticWebsite
для настройки учетной записи хранилища ($publicStorageAccount
) для вашего нового случая использования. Параметр -IndexDocument
устанавливает страницу веб-сайта по умолчанию, которую вы хотите предоставить пользователям. Параметр -Context
будет новой учетной записью хранилища, которую вы только что создали.

3. Выполните следующие команды для создания нового HTML-документа в вашем текущем каталоге и загрузите этот документ в контейнер, специально предназначенный для размещения веб-контента. Тип содержимого установлен на HTML (ContentType="text/html"
), чтобы веб-браузеры могли правильно интерпретировать документ.
Доступ к документу в веб-браузере выводит сообщение Hello from <имя учетной записи хранилища>.

4. Теперь выполните следующую команду, чтобы получить URL, по которому пользователи смогут получить доступ к вашему контенту.

5. Наконец, откройте URL в вашем браузере, вы увидите что-то похожее на следующий снимок экрана.

Очистка ресурсов
Теперь, когда вы прошли тестирование этих новых концепций использования хранилища блобов, вам захочется очистить ваши ресурсы. Зачем? Это поможет вам поддерживать чистоту вашей подписки. Более того, вы прекратите понесение дополнительных расходов.
Поскольку все ресурсы, которые вы использовали в этом руководстве, находятся в одной группе ресурсов, вы можете очистить все ресурсы, удалив группу ресурсов.
Ресурсы не всегда будут находиться в одной группе ресурсов, что показывает, почему широкое использование логического сегментирования может быть полезным, особенно при частом тестировании или итерации.
Выполните командлет Remove-AzResourceGroup
ниже, указав свойство ResourceGroupName
переменной $resourceGroup
, чтобы удалить группу ресурсов и все ресурсы внутри.

Заключение
В этом руководстве вы коснулись загрузки и скачивания файлов в и из блобов в облачном хранилище на разных платформах. Вы также узнали, что возможно размещать веб-страницу из блобов, к которой пользователи могут обращаться публично.
Можно сделать гораздо больше с хранилищем блобов и другими типами хранилищ, так как можно развивать эти концепции? Возможно, работать с учетными записями файлового хранилища, предоставлять безсерверные файловые системы или использовать блобы страниц для виртуальных жестких дисков с виртуальными машинами Azure?