Учебник. Доступ к Хранилищу BLOB-объектов Azure с помощью Azure Databricks и Azure Key Vault
Из этого руководства вы узнаете, как получить доступ к Хранилищу BLOB-объектов Azure из Azure Databricks с использованием секретов, которые хранятся в Azure Key Vault.
В этом руководстве описано следующее:
- Создание контейнера больших двоичных объектов и учетной записи хранения с помощью Azure CLI
- создание Key Vault и настройка секрета;
- Создание рабочей области Azure Databricks и добавление области секретов Key Vault
- получение доступа к контейнеру больших двоичных объектов из рабочей области Azure Databricks.
Необходимые компоненты
Если у вас нет подписки Azure, создайте бесплатную учетную запись, прежде чем приступить к работе.
Перед началом работы с этим руководством установите Azure CLI.
Создание контейнера больших двоичных объектов и учетной записи хранения с помощью Azure CLI
Для использования больших двоичных объектов сначала необходимо создать учетную запись хранения общего назначения. Если у вас нет группы ресурсов, создайте ее перед выполнением команды. Приведенная ниже команда позволяет создать и отобразить метаданные контейнера хранилища. Скопируйте указанный здесь идентификатор.
az storage account create --name contosoblobstorage5 --resource-group contosoResourceGroup --location eastus --sku Standard_ZRS --encryption-services blob
Прежде чем создать контейнер, в который вы отправите большой двоичный объект, необходимо назначить себе роль Участник данных BLOB-объектов хранилища. В нашем примере эта роль будет назначена ранее созданной учетной записи хранения.
az role assignment create --role "Storage Blob Data Contributor" --assignee t-trtr@microsoft.com --scope "/subscriptions/{subscription-id}/resourceGroups/contosoResourceGroup5/providers/Microsoft.Storage/storageAccounts/contosoblobstorage5
Теперь, когда вы назначили роль учетной записи хранения, можете создать контейнер для большого двоичного объекта.
az storage container create --account-name contosoblobstorage5 --name contosocontainer5 --auth-mode login
После создания контейнера в него можно передать большой двоичный объект (любой файл на ваш выбор). В нашем примере это TXT-файл с текстом helloworld.
az storage blob upload --account-name contosoblobstorage5 --container-name contosocontainer5 --name helloworld --file helloworld.txt --auth-mode login
Получите список больших двоичных объектов в контейнере и убедитесь, что этот файл находится в контейнере.
az storage blob list --account-name contosoblobstorage5 --container-name contosocontainer5 --output table --auth-mode login
Получите значение key1 для контейнера хранилища с помощью приведенной ниже команды. Скопируйте это значение.
az storage account keys list -g contosoResourceGroup5 -n contosoblobstorage5
создание Key Vault и настройка секрета;
Чтобы создать Key Vault, выполните приведенную ниже команду. Эта команда также выдаст метаданные Key Vault. Скопируйте значения ID и vaultUri.
az keyvault create --name contosoKeyVault10 --resource-group contosoResourceGroup5 --location eastus
Чтобы создать секрет, выполните приведенную ниже команду. Присвойте секрету значение key1, полученное из учетной записи хранения.
az keyvault secret set --vault-name contosoKeyVault10 --name storageKey --value "value of your key1"
Создание рабочей области Azure Databricks и добавление области секретов Key Vault
Действия, описанные в этом разделе, нельзя выполнить из командной строки. Вам потребуется применить портал Azure для выполнения следующих действий:
- создание ресурса Azure Databricks;
- запуск рабочей области;
- создание области секретов с поддержкой Key Vault.
получение доступа к контейнеру больших двоичных объектов из рабочей области Azure Databricks.
Действия, описанные в этом разделе, нельзя выполнить из командной строки. Вам придется применить рабочую область Azure Databricks, чтобы выполнить следующие действия:
- создание нового кластера;
- создание нового Notebook;
- заполнение полей в скрипте Python;
- выполнение скрипта Python.
dbutils.fs.mount(
source = "wasbs://<your-container-name>@<your-storage-account-name>.blob.core.windows.net",
mount_point = "/mnt/<mount-name>",
extra_configs = {"<conf-key>":dbutils.secrets.get(scope = "<scope-name>", key = "<key-name>")})
df = spark.read.text("/mnt/<mount-name>/<file-name>")
df.show()
Следующие шаги
Убедитесь, что хранилище ключей можно восстановить: