Краткое руководство. Использование Microsoft Planetary Computer Pro GeoCatalog в пакетной службе Azure

Из этого краткого руководства вы узнаете, как использовать ресурс Microsoft Planetary Computer Pro GeoCatalog в Azure Batch для обработки геопространственных данных в большом масштабе.

Пакетная служба Azure — это облачная служба планирования заданий, которая позволяет выполнять крупномасштабные параллельные и высокопроизводительные вычислительные нагрузки (HPC). Сочетая пакетную службу Azure с Microsoft Planetary Computer Pro, вы можете:

  • Обработка больших объемов геопространственных данных параллельно между несколькими вычислительными узлами
  • Выполните безопасную проверку подлинности в API GeoCatalog с помощью управляемых удостоверений
  • Увеличение или уменьшение масштаба обработки на основе требований рабочей нагрузки
  • Автоматизация геопространственных конвейеров данных без управления инфраструктурой

В этом кратком руководстве показано, как настроить пул пакетной службы с управляемым удостоверением, назначаемое пользователем, настроить разрешения для доступа к GeoCatalog и выполнять задания, запрашивающие API STAC.

Подсказка

Общие сведения о вариантах разработки приложений с помощью Microsoft Planetary Computer Pro см. в статье "Подключение и сборка приложений с помощью данных".

Предпосылки

Прежде чем приступить к работе, убедитесь, что вы соблюдаете следующие требования для выполнения этой краткой инструкции.

Создание учетной записи Batch

Создайте группу ресурсов:

az group create \
    --name spatiobatchdemo \
    --location uksouth

Создайте учетную запись хранения:

az storage account create \
    --resource-group spatiobatchdemo \
    --name spatiobatchstorage \
    --location uksouth \
    --sku Standard_LRS

Storage Blob Data Contributor Назначьте текущему пользователю учетную запись хранения:

az role assignment create \
    --role "Storage Blob Data Contributor" \
    --assignee $(az account show --query user.name -o tsv) \
    --scope $(az storage account show --name spatiobatchstorage --resource-group spatiobatchdemo --query id -o tsv)

Создайте учетную запись Batch.

az batch account create \
    --name spatiobatch \
    --storage-account spatiobatchstorage \
    --resource-group spatiobatchdemo \
    --location uksouth

Это важно

Убедитесь, что у вас достаточно квоты для создания пула узлов компьютера. Если у вас недостаточно квоты, вы можете запросить увеличение, следуя инструкциям в документации по квотам и ограничениям пакетной службы Azure .

Войдите в новую учетную запись Batch, выполнив следующую команду:

az batch account login \
    --name spatiobatch \
    --resource-group spatiobatchdemo \
    --shared-key-auth

После того как вы подтвердите учетную запись с помощью Batch, последующие az batch команды в этом сеансе используют созданную вами учетную запись Batch.

Создайте назначенное пользователем управляемое удостоверение:

az identity create \
    --name spatiobatchidentity \
    --resource-group spatiobatchdemo

Создайте пул вычислительных узлов с помощью портала Azure:

  1. На портале Azure перейдите к учетной записи пакетной службы и выберите пулы: снимок экрана портала Azure с разделом пулов учетной записи пакетной службы с параметрами добавления пулов и управления ими.
  2. Нажмите кнопку "+ Добавить ", чтобы создать новый пул и выберите имя пользователя в качестве удостоверения пула: снимок экрана портала Azure, на котором показана страница
  3. Выберите управляемое удостоверение, назначенное пользователем, которое вы создали ранее: снимок экрана портала Azure, показывающий выбор назначенного пользователем управляемого удостоверения для пула Batch.
  4. Выберите предпочтительную операционную систему и размер виртуальной машины. В этой демонстрации мы используем Ubuntu Server 20.04 LTS: снимок экрана страницы выбора размера виртуальной машины для пула пакетной службы, где пользователи могут выбрать размер виртуальной машины и конфигурацию для своих вычислительных узлов.
  5. Включите Начать задачу, задайте следующую командную строку: bash -c "apt-get update && apt-get install jq python3-pip -y && curl -sL https://aka.ms/InstallAzureCLIDeb | bash" и установите уровень повышения прав на автопользователь пула, Админ: Снимок экрана страницы конфигурации задачи запуска для пула пакетной обработки. Страница содержит поля для указания скрипта командной строки, уровня повышения прав и других параметров для инициализации вычислительных узлов.
  6. Нажмите кнопку "ОК ", чтобы создать пул.

Назначение разрешений управляемому удостоверению

Необходимо предоставить управляемому удостоверению доступ к GeoCatalog. Перейдите в GeoCatalog, выберите элемент управления доступом (IAM) и выберите "Добавить назначение ролей":

Снимок экрана: портал Azure, на котором показана страница

Выберите соответствующую роль в зависимости от ваших потребностей GeoCatalog Administrator или GeoCatalog Readerнажмите кнопку "Далее".

Снимок экрана: портал Azure, на котором показана страница

Выберите созданное управляемое удостоверение и нажмите кнопку "Проверить и назначить".

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

Подготовка пакетной задачи

Создайте контейнер в учетной записи хранения:

az storage container create \
    --name scripts \
    --account-name spatiobatchstorage

Отправьте скрипт в контейнер:

az storage blob upload \
    --container-name scripts \
    --file src/task.py \
    --name task.py \
    --account-name spatiobatchstorage

Запустите пакетные задания

В этом кратком руководстве приведены два примера: скрипт Python и скрипт Bash. Для создания задания можно использовать любой из них.

Задание скрипта Python

Чтобы выполнить задание скрипта Python, выполните следующие команды:

geocatalog_url="<geocatalog url>"
token_expiration=$(date -u -d "30 minutes" "+%Y-%m-%dT%H:%M:%SZ")
python_task_url=$(az storage blob generate-sas --account-name spatiobatchstorage --container-name scripts --name task.py --permissions r --expiry $token_expiration --auth-mode login --as-user --full-uri -o tsv)

cat src/pythonjob.json | perl -pe "s,##PYTHON_TASK_URL##,$python_task_url,g" | perl -pe "s,##GEOCATALOG_URL##,$geocatalog_url,g" | az batch job create --json-file /dev/stdin

Задание Python выполняет следующий скрипт Python:

import json
from os import environ
import requests
from azure.identity import DefaultAzureCredential

MPCPRO_APP_ID = "https://geocatalog.spatio.azure.com"
credential = DefaultAzureCredential()
access_token = credential.get_token(f"{MPCPRO_APP_ID}/.default")

geocatalog_url = environ["GEOCATALOG_URL"]

response = requests.get(
    f"{geocatalog_url}/stac/collections",
    headers={"Authorization": "Bearer " + access_token.token},
    params={"api-version": "2026-04-15"},
)
print(json.dumps(response.json(), indent=2))

Использует DefaultAzureCredential для аутентификации с помощью управляемого удостоверения и извлекает коллекции из GeoCatalog. Чтобы получить результаты задания, выполните следующую команду:

az batch task file download \
    --job-id pythonjob1 \
    --task-id task1 \
    --file-path "stdout.txt" \
    --destination /dev/stdout

Задача Bash

Чтобы выполнить задание скрипта Bash, выполните следующие команды:

geocatalog_url="<geocatalog url>"

cat src/bashjob.json | perl -pe "s,##GEOCATALOG_URL##,$geocatalog_url,g" | az batch job create --json-file /dev/stdin

Задание Bash выполняет следующий скрипт Bash:

az login --identity --allow-no-subscriptions > /dev/null
token=$(az account get-access-token --resource https://geocatalog.spatio.azure.com --query accessToken --output tsv)
curl --header \"Authorization: Bearer $token\" $GEOCATALOG_URL/stac/collections | jq

Использует az login --identity для аутентификации с помощью управляемого удостоверения и извлекает коллекции из GeoCatalog. Чтобы получить результаты задания, выполните следующую команду:

az batch task file download \
    --job-id bashjob1 \
    --task-id task1 \
    --file-path "stdout.txt" \
    --destination /dev/stdout