Condividi tramite


Guida introduttiva: Utilizzare Microsoft Planetary Computer Pro GeoCatalog nel Azure Batch

In questa guida introduttiva si apprenderà come usare la risorsa GeoCatalog Microsoft Planetary Computer Pro In Azure Batch per elaborare i dati geospaziali. Planetary Computer Pro GeoCatalog è un catalogo dati geospaziale che fornisce una visualizzazione unificata degli asset di dati geospaziali nell'organizzazione. È possibile usare Planetary Computer Pro GeoCatalog per individuare, gestire e analizzare i dati geospaziali.

Prerequisiti

Prima di iniziare, assicurarsi di soddisfare i requisiti seguenti per completare questa guida introduttiva:

Creare un account batch

Creare un gruppo di risorse:

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

Creare un account di archiviazione:

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

Attribuire l'oggetto Storage Blob Data Contributor all'utente corrente dell'account di archiviazione:

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)

Creare un account Batch:

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

Importante

Assicurarsi di avere una quota sufficiente per creare un pool di nodi computer. Se la quota non è sufficiente, è possibile richiedere un aumento seguendo le istruzioni riportate nella documentazione relativa alle quote e ai limiti di Azure Batch .

Accedere al nuovo account Batch eseguendo il comando seguente:

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

Dopo aver autenticato l'account con Batch, i comandi successivi az batch in questa sessione usano l'account Batch creato.

Creare un'identità gestita assegnata dall'utente:

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

Creare un pool di nodi di calcolo usando il portale di Azure:

  1. Nel portale di Azure passare all'account Batch e selezionare Pool: Screenshot del portale di Azure che mostra la sezione Pool di un account Batch, con opzioni per aggiungere e gestire pool.
  2. Selezionare + Aggiungi per creare un nuovo pool e selezionare Assegnata dall'utente come identità del pool: screenshot del portale di Azure che mostra la pagina Aggiungi pool, in cui gli utenti possono configurare le impostazioni per un nuovo pool, tra cui identità, sistema operativo e dimensioni della macchina virtuale.
  3. Selezionare l'identità gestita assegnata dall'utente creata in precedenza: screenshot del portale di Azure che mostra la selezione di un'identità gestita assegnata dall'utente per il pool di Batch.
  4. Selezionare il sistema operativo preferito e le dimensioni della macchina virtuale. In questa demo si usa Ubuntu Server 20.04 LTS: screenshot della pagina di selezione delle dimensioni della macchina virtuale per il pool di Batch, in cui gli utenti possono scegliere le dimensioni e la configurazione della macchina virtuale per i nodi di calcolo.
  5. Attivare Start Task, impostare il seguente Command line: bash -c "apt-get update && apt-get install jq python3-pip -y && curl -sL https://aka.ms/InstallAzureCLIDeb | bash" e impostare il Livello di elevazione su Pool autouser, Admin: Screenshot della pagina di configurazione di Start Task per un pool di Batch. La pagina include campi per specificare uno script della riga di comando, un livello di elevazione e altre impostazioni per l'inizializzazione dei nodi di calcolo.
  6. Selezionare OK per creare il pool.

Assegnare autorizzazioni all'identità gestita

È necessario fornire all'identità gestita l'accesso al GeoCatalog. Passare a GeoCatalog, selezionare Controllo di accesso (IAM) e selezionare Aggiungi assegnazione di ruolo:

Screenshot del portale di Azure che mostra la pagina Aggiungi assegnazione di ruolo. La pagina include campi per selezionare un ruolo, assegnare l'accesso a un utente, un gruppo o un'identità gestita ed esaminare l'assegnazione prima di confermare.

Selezionare il ruolo appropriato in base alle esigenze GeoCatalog Administrator o GeoCatalog Readere selezionare Avanti:

Screenshot del portale di Azure che mostra la pagina Seleziona ruolo. La pagina include un menu a discesa per scegliere un ruolo, ad esempio Amministratore GeoCatalog o Lettore GeoCatalog, e un pulsante per procedere con il passaggio successivo.

Selezionare l'identità gestita creata e quindi selezionare Rivedi e assegna.

Screenshot del portale di Azure che mostra la pagina Seleziona identità. La pagina include un elenco di identità gestite disponibili, consentendo agli utenti di scegliere l'identità da assegnare al pool di Batch.

Preparare il processo Batch

Creare un contenitore nell'account di archiviazione:

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

Caricare lo script nel contenitore:

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

Eseguire i lavori Batch

In questa guida introduttiva sono disponibili due esempi: uno script Python e uno script Bash. Puoi usare uno di loro per creare un lavoro.

Lavoro script Python

Per eseguire il processo di script Python, eseguire i comandi seguenti:

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

Il compito Python esegue il seguente script 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": "2025-04-30-preview"},
)
print(json.dumps(response.json(), indent=2))

Che usa DefaultAzureCredential per eseguire l'autenticazione con l'identità gestita e recupera le raccolte da GeoCatalog. Per ottenere i risultati del processo, eseguire il comando seguente:

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

Processo Bash

Per eseguire il processo di script Bash, eseguire i comandi seguenti:

geocatalog_url="<geocatalog url>"

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

Il processo Bash esegue lo script Bash seguente:

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

Che usa az login --identity per eseguire l'autenticazione con l'identità gestita e recupera le raccolte da GeoCatalog. Per ottenere i risultati del processo, eseguire il comando seguente:

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