Freigeben über


Schnellstart: Verwenden von Microsoft Planetary Computer Pro GeoCatalog in Azure Batch

In dieser Schnellstartanleitung erfahren Sie, wie Sie eine GeoCatalog-Ressource von Microsoft Planetary Computer Pro in Azure Batch verwenden, um geospatiale Daten skaliert zu verarbeiten.

Azure Batch ist ein cloudbasierter Auftragsplanungsdienst, mit dem Sie umfangreiche parallele und hochleistungsbasierte Computing-Workloads (HPC) ausführen können. Durch die Kombination von Azure Batch mit Microsoft Planetary Computer Pro können Sie:

  • Verarbeiten großer Mengen geospatialer Daten parallel über mehrere Computeknoten hinweg
  • Sichere Authentifizierung bei GeoCatalog-APIs mithilfe von verwalteten Identitäten
  • Skalierung der Verarbeitungsleistung nach oben oder unten basierend auf Arbeitsauslastungsanforderungen
  • Automatisieren von Geospatialdatenpipelinen ohne Verwaltung der Infrastruktur

In dieser Schnellstartanleitung wird veranschaulicht, wie Sie einen Batchpool mit einer vom Benutzer zugewiesenen verwalteten Identität einrichten, Berechtigungen für den Zugriff auf Ihr GeoCatalog konfigurieren und Aufträge ausführen, die die STAC-API abfragen.

Tipp

Eine Übersicht über Anwendungsentwicklungsoptionen mit Microsoft Planetary Computer Pro finden Sie unter Verbinden und Erstellen von Anwendungen mit Ihren Daten.

Voraussetzungen

Bevor Sie beginnen, stellen Sie sicher, dass Sie die folgenden Anforderungen erfüllen, um diese Schnellstartanleitung abzuschließen:

  • Ein Azure-Konto mit einem aktiven Abonnement. Verwenden Sie den Link " Konto kostenlos erstellen".
  • Eine Microsoft Planetary Computer Pro GeoCatalog-Ressource. Ein Linux-Computer mit den folgenden installierten Tools:

Erstellen eines Batch-Kontos

Erstellen Sie eine Ressourcengruppe:

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

Erstellen eines Speicherkontos:

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

Weisen Sie dem Storage Blob Data Contributor aktuellen Benutzer das Speicherkonto zu:

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)

Batchkonto erstellen:

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

Von Bedeutung

Stellen Sie sicher, dass Sie über genügend Kontingent verfügen, um einen Pool mit Computerknoten zu erstellen. Wenn Sie nicht über genügend Kontingent verfügen, können Sie eine Erhöhung anfordern, indem Sie die Anweisungen in der Azure Batch-Quoten- und Limits-Dokumentation befolgen.

Melden Sie sich beim neuen Batchkonto an, indem Sie den folgenden Befehl ausführen:

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

Nachdem Sie Ihr Konto bei Batch authentifiziert haben, verwenden nachfolgende az batch Befehle in dieser Sitzung das von Ihnen erstellte Batchkonto.

Erstellen einer vom Benutzer zugewiesenen verwalteten Identität:

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

Erstellen Sie einen Pool mit Computeknoten mithilfe des Azure-Portals:

  1. Navigieren Sie im Azure-Portal zu Ihrem Batchkonto, und wählen Sie "Pools" aus: Screenshot des Azure-Portals mit dem Abschnitt
  2. Wählen Sie +Hinzufügen aus, um einen neuen Pool zu erstellen und "Benutzer zugewiesen" als Identität des Pools auszuwählen: Screenshot of the Azure portal showing the Add Pool page, where users can configure settings for a new pool, including identity, operating system, and VM size.
  3. Wählen Sie die zuvor erstellte vom Benutzer zugewiesene verwaltete Identität aus: Screenshot des Azure-Portals mit der Auswahl einer vom Benutzer zugewiesenen verwalteten Identität für den Batchpool.
  4. Wählen Sie Ihr bevorzugtes Betriebssystem und ihre VM-Größe aus. In dieser Demo verwenden wir Ubuntu Server 20.04 LTS: Screenshot der Auswahlseite der VM-Größe für den Batchpool, auf der Benutzer die Größe und Konfiguration des virtuellen Computers für ihre Computeknoten auswählen können.
  5. Aktivieren Sie Startaufgabe , legen Sie die folgende Befehlszeilefest: bash -c "apt-get update && apt-get install jq python3-pip -y && curl -sL https://aka.ms/InstallAzureCLIDeb | bash" und legen Sie die Erhöhungsebene auf Automatischer Poolbenutzer, Administrator fest: Screenshot der Seite
  6. Wählen Sie "OK" aus, um den Pool zu erstellen.

Zuweisen von Berechtigungen für die verwaltete Identität

Sie müssen den verwalteten Identitätszugriff auf den GeoCatalog bereitstellen. Wechseln Sie zu Ihrem GeoCatalog, wählen Sie unter Access Control (IAM) und dann "Rollenzuweisung hinzufügen" aus:

Screenshot des Azure-Portals mit der Seite

Wählen Sie die entsprechende Rolle basierend auf Ihren Anforderungen GeoCatalog Administrator oder GeoCatalog Readeraus, und wählen Sie "Weiter" aus:

Screenshot des Azure-Portals mit der Seite

Wählen Sie die von Ihnen erstellte verwaltete Identität und dann "Überprüfen+ Zuweisen" aus.

Screenshot des Azure-Portals mit der Seite

Vorbereiten des Batchauftrags

Erstellen Sie einen Container im Speicherkonto:

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

Laden Sie das Skript in den Container hoch:

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

Ausführen der Batch-Aufträge

In dieser Schnellstartanleitung gibt es zwei Beispiele: ein Python-Skript und ein Bash-Skript. Sie können eine der Beiden verwenden, um einen Auftrag zu erstellen.

Python-Skriptauftrag

Führen Sie zum Ausführen des Python-Skriptauftrags die folgenden Befehle aus:

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

Der Python-Auftrag führt das folgende Python-Skript aus:

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": "2025-04-30-preview"},
)
print(json.dumps(response.json(), indent=2))

Welche DefaultAzureCredential verwendet, um sich mit der verwalteten Identität zu authentifizieren und die Sammlungen aus dem GeoCatalog abzurufen. Führen Sie den folgenden Befehl aus, um die Ergebnisse des Auftrags abzurufen:

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

Bash-Auftrag

Führen Sie zum Ausführen des Bash-Skriptauftrags die folgenden Befehle aus:

geocatalog_url="<geocatalog url>"

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

Der Bash-Auftrag führt das folgende Bash-Skript aus:

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

Welche az login --identity verwendet, um sich mit der verwalteten Identität zu authentifizieren und die Sammlungen aus dem GeoCatalog abzurufen. Führen Sie den folgenden Befehl aus, um die Ergebnisse des Auftrags abzurufen:

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