Sdílet prostřednictvím


Rychlý start: Použití Microsoft Planetary Computer Pro GeoCatalog ve službě Azure Batch

V tomto rychlém startu se naučíte používat prostředek Microsoft Planety Computer Pro GeoCatalog ve službě Azure Batch ke zpracování geoprostorových dat ve velkém měřítku.

Azure Batch je cloudová služba pro plánování úloh, která umožňuje spouštět rozsáhlé paralelní a vysokovýkonné výpočetní úlohy (HPC). Kombinací služby Azure Batch s Microsoft Planetary Computer Pro můžete:

  • Paralelní zpracování velkých objemů geoprostorových dat napříč několika výpočetními uzly
  • Zabezpečené ověřování v rozhraních GEOCatalog API s využitím spravovaných identit
  • Škálování výpočetního výkonu nahoru nebo dolů na základě požadavků na úlohy
  • Automatizace geoprostorových datových kanálů bez správy infrastruktury

Tento rychlý start ukazuje, jak nastavit fond Batch se spravovanou identitou přiřazenou uživatelem, nakonfigurovat oprávnění pro přístup k geoCatalogu a spouštět úlohy, které se dotazují na rozhraní STAC API.

Návod

Přehled možností vývoje aplikací pomocí aplikace Microsoft Planety Computer Pro najdete v tématu Připojení a vytváření aplikací s vašimi daty.

Požadavky

Než začnete, ujistěte se, že splňujete následující požadavky pro dokončení tohoto rychlého startu:

  • Účet Azure s aktivním předplatným. Použijte odkaz Vytvořit účet zdarma.
  • Zdroj Microsoft Planetary Computer Pro GeoCatalog. Počítač s Linuxem s nainstalovanými následujícími nástroji:

Vytvoření účtu služby Batch

Vytvořte skupinu prostředků:

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

Vytvoření účtu úložiště:

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

Přiřaďte účet úložiště aktuálnímu uživateli: 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)

Vytvoření účtu Batch:

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

Důležité

Ujistěte se, že máte dostatečnou kvótu pro vytvoření skupiny počítačových uzlů. Pokud nemáte dostatečnou kvótu, můžete požádat o navýšení podle pokynů v dokumentaci k kvótám a omezením služby Azure Batch .

Přihlaste se k novému účtu Batch spuštěním následujícího příkazu:

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

Po ověření vašeho účtu ve službě Batch použijí následující az batch příkazy v této relaci účet Batch, který jste vytvořili.

Vytvořit uživatelsky přiřazenou spravovanou identitu:

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

Vytvořte fond výpočetních uzlů pomocí webu Azure Portal:

  1. Na webu Azure Portal přejděte na svůj účet Batch a vyberte Fondy: Snímek obrazovky webu Azure Portal zobrazující část Fondy účtu Batch s možnostmi pro přidání a správu fondů.
  2. Vyberte + Přidat a vytvořte nový fond a jako identitu fondu vyberte Uživatelem přiřazený : Snímek obrazovky webu Azure Portal se stránkou Přidat fond, kde můžou uživatelé konfigurovat nastavení pro nový fond, včetně identity, operačního systému a velikosti virtuálního počítače.
  3. Vyberte uživatelem přiřazenou spravovanou identitu, kterou jste vytvořili dříve: Snímek obrazovky Azure portal znázorňující výběr uživatelem přiřazené spravované identity pro fond Batch.
  4. Vyberte upřednostňovaný operační systém a velikost virtuálního počítače. V této ukázce používáme Ubuntu Server 20.04 LTS: Snímek obrazovky se stránkou výběru velikosti virtuálního počítače pro fond Batch, kde uživatelé můžou zvolit velikost a konfiguraci virtuálního počítače pro své výpočetní uzly.
  5. Povolte spustit úlohu, nastavte následující příkazový řádek: bash -c "apt-get update && apt-get install jq python3-pip -y && curl -sL https://aka.ms/InstallAzureCLIDeb | bash" a nastavte úroveň zvýšení oprávnění na automatického uživatele fondu, Správce: Snímek obrazovky se stránkou Konfigurace spouštěcí úlohy pro fond Batch. Stránka obsahuje pole pro zadání skriptu příkazového řádku, úrovně zvýšení oprávnění a dalších nastavení pro inicializaci výpočetních uzlů.
  6. Vyberte OK a vytvořte fond.

Přiřazení oprávnění ke spravované identitě

Musíte poskytnout spravované identitě přístup k GeoCatalogu. Přejděte na GeoCatalog, vyberte řízení přístupu (IAM) a vyberte Přidat přiřazení role:

Snímek obrazovky webu Azure Portal se stránkou Přidat přiřazení role Stránka obsahuje pole pro výběr role, přiřazení přístupu k uživateli, skupině nebo spravované identitě a kontrolu přiřazení před potvrzením.

Vyberte v závislosti na vašich potřebách příslušnou roli, GeoCatalog Administrator nebo GeoCatalog Readervyberte Další:

Snímek obrazovky webu Azure Portal se stránkou Vybrat roli Stránka obsahuje rozevírací nabídku pro výběr role, jako je správce GeoCatalogu nebo Čtenář GeoCatalogu, a tlačítko pro pokračování k dalšímu kroku.

Vyberte spravovanou identitu, kterou jste vytvořili, a pak vyberte Zkontrolovat a přiřadit.

Snímek obrazovky webu Azure Portal se stránkou Vybrat identitu Stránka obsahuje seznam dostupných spravovaných identit, které uživatelům umožňují zvolit identitu, kterou chtějí přiřadit k fondu Batch.

Příprava úlohy Batch

Vytvořte kontejner v účtu úložiště:

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

Nahrajte skript do kontejneru:

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

Spustit úlohy Batch

V tomto rychlém startu jsou dva příklady: skript Pythonu a skript Bash. K vytvoření úlohy můžete použít některý z nich.

Úloha skriptu Pythonu

Pokud chcete spustit úlohu skriptu Pythonu, spusťte následující příkazy:

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

Úloha Pythonu spustí následující skript Pythonu:

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

Pomocí DefaultAzureCredential se provádí ověření s využitím spravované identity a načtení kolekcí z GeoCatalogu. Pokud chcete získat výsledky úlohy, spusťte následující příkaz:

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

Úloha Bash

Pokud chcete spustit úlohu skriptu Bash, spusťte následující příkazy:

geocatalog_url="<geocatalog url>"

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

Úloha Bash spustí následující skript 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

Pomocí az login --identity se provádí ověření s využitím spravované identity a načtení kolekcí z GeoCatalogu. Pokud chcete získat výsledky úlohy, spusťte následující příkaz:

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