Snabbstart: Använda Microsoft Planetary Computer Pro GeoCatalog i Azure Batch

I den här snabbstarten får du lära dig hur du använder en Microsoft Planetary Computer Pro GeoCatalog-resurs i Azure Batch för att bearbeta geospatiala data i stor skala.

Azure Batch är en molnbaserad jobbschemaläggningstjänst som gör att du kan köra storskaliga parallella och högpresterande databehandlingsarbetsbelastningar (HPC). Genom att kombinera Azure Batch med Microsoft Planetary Computer Pro kan du:

  • Bearbeta stora mängder geospatiala data parallellt över flera beräkningsnoder
  • Autentisera säkert till GeoCatalog-API:er med hanterade identiteter
  • Skala upp eller ned bearbetningskraft baserat på arbetsbelastningskrav
  • Automatisera geospatiala datapipelines utan att hantera infrastruktur

Den här snabbstarten visar hur du konfigurerar en Batch-pool med en användartilldelad hanterad identitet, konfigurerar behörigheter för åtkomst till din GeoCatalog och kör jobb som kör frågor mot STAC-API:et.

Tips/Råd

En översikt över programutvecklingsalternativ med Microsoft Planetary Computer Pro finns i Ansluta och skapa program med dina data.

Förutsättningar

Innan du börjar måste du uppfylla följande krav för att slutföra den här snabbstarten:

  • Ett Azure-konto med en aktiv prenumeration. Använd länken Skapa ett konto kostnadsfritt.
  • En resurs i Microsoft Planetary Computer Pro GeoCatalog. En Linux-dator med följande verktyg installerade:

Skapa ett Batch-konto

Skapa en resursgrupp:

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

Skapa ett lagringskonto:

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

Tilldela lagringskontot till den aktuella användaren:

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)

Skapa ett Batch-konto:

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

Viktigt!

Se till att du har tillräckligt med kvot för att skapa en pool med datornoder. Om du inte har tillräckligt med kvot kan du begära en ökning genom att följa anvisningarna i dokumentationen om Azure Batch-kvoter och -begränsningar .

Logga in på det nya Batch-kontot genom att köra följande kommando:

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

När du har autentiserat ditt konto med Batch använder efterföljande az batch kommandon i den här sessionen det Batch-konto som du skapade.

Skapa en användartilldelad hanterad identitet:

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

Skapa en pool med beräkningsnoder med hjälp av Azure-portalen:

  1. I Azure-portalen går du till ditt Batch-konto och väljer Pooler: Skärmbild av Azure-portalen som visar avsnittet Pooler för ett Batch-konto med alternativ för att lägga till och hantera pooler.
  2. Välj + Lägg till för att skapa en ny pool och välj Användartilldelad som poolens identitet: Skärmbild av Azure-portalen som visar sidan Lägg till pool, där användarna kan konfigurera inställningar för en ny pool, inklusive identitet, operativsystem och VM-storlek.
  3. Välj den användartilldelade hanterade identiteten som du skapade tidigare: Skärmbild av Azure-portalen som visar valet av en användartilldelad hanterad identitet för Batch-poolen.
  4. Välj önskat operativsystem och VM-storlek. I den här demonstrationen använder vi Ubuntu Server 20.04 LTS: Skärmbild av sidan för val av VM-storlek för Batch-poolen, där användarna kan välja storlek och konfiguration för virtuella datorer för sina beräkningsnoder.
  5. Aktivera Startaktivitet, ställ in följande kommandorad: bash -c "apt-get update && apt-get install jq python3-pip -y && curl -sL https://aka.ms/InstallAzureCLIDeb | bash" och ställ in höjnivå till Pool autouser, Admin: Screenshot of the Start Task configuration page for a Batch pool. Sidan innehåller fält för att ange ett kommandoradsskript, höjd nivån och andra inställningar för initiering av beräkningsnoder.
  6. Välj OK för att skapa poolen.

Tilldela behörigheter till den hanterade identiteten

Du behöver ge åtkomst till GeoCatalog för den hanterade identiteten. Gå till din GeoCatalog, välj på Åtkomstkontroll (IAM) och välj Lägg till rolltilldelning:

Skärmbild av Azure-portalen som visar sidan Lägg till rolltilldelning. Sidan innehåller fält för att välja en roll, tilldela åtkomst till en användare, grupp eller hanterad identitet och granska tilldelningen innan du bekräftar.

Välj lämplig roll baserat på dina behov eller GeoCatalog AdministratorGeoCatalog Readeroch välj Nästa:

Skärmbild av Azure-portalen som visar sidan Välj roll. Sidan innehåller en listmeny för att välja en roll, till exempel GeoCatalog-administratör eller GeoCatalog-läsare, och en knapp för att gå vidare till nästa steg.

Välj den hanterade identitet som du skapade och klicka sedan på Granska och tilldela.

Skärmbild av Azure-portalen som visar sidan Välj identitet. Sidan innehåller en lista över tillgängliga hanterade identiteter som gör det möjligt för användare att välja den identitet som de vill tilldela till Batch-poolen.

Förbereda Batch-jobbet

Skapa en container i lagringskontot:

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

Ladda upp skriptet till containern:

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

Kör Batch-jobben

Det finns två exempel i den här snabbstarten: ett Python-skript och ett Bash-skript. Du kan använda någon av dem för att skapa ett jobb.

Python-skriptjobb

Kör följande kommandon för att köra Python-skriptjobbet:

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-jobbet kör följande Python-skript:

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))

Som använder DefaultAzureCredential för att autentisera med den hanterade identiteten och hämtar samlingarna från GeoCatalog. Kör följande kommando för att få resultatet av jobbet:

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

Bash-jobb

Kör följande kommandon för att köra Bash-skriptjobbet:

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-jobbet kör följande Bash-skript:

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

Som använder az login --identity för att autentisera med den hanterade identiteten och hämtar samlingarna från GeoCatalog. Kör följande kommando för att få resultatet av jobbet:

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