Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Il caricamento di nuovi dati nella risorsa GeoCatalog di Microsoft Planetary Computer Pro viene chiamato inserimento. Un GeoCatalog necessita di autorizzazioni o origini di inserimento per accedere ai dati archiviati esternamente alla risorsa GeoCatalog. In questa guida si apprenderà come:
- Creare un'origine di inserimento tramite il portale di Azure
- Creare un'origine di inserimento tramite l'API Microsoft Planetary Computer Pro usando Azure Python SDK
Prerequisiti
GeoCatalog di Computer Planetario Pro di Microsoft implementato nella sottoscrizione Azure. Vedere Distribuire una risorsa GeoCatalog.
Configurazione di un contenitore Azure Blob con le autorizzazioni corrette per gestire identità gestite e richiedere un token SAS. Vedere Creare un account di archiviazione di Azure.
Identità gestita e token SAS
Le identità gestite forniscono un'identità gestita automaticamente in Microsoft Entra ID per le applicazioni da usare per la connessione alle risorse che supportano l'autenticazione di Microsoft Entra.
Le firme di accesso condiviso creano credenziali di crittografia per l'accesso a una risorsa, ad esempio Archiviazione BLOB di Azure.
Le identità gestite sono un meccanismo più sicuro e automatizzato per stabilire l'accesso permanente a un account di archiviazione e sono l'approccio consigliato per fornire l'accesso sicuro all'archiviazione BLOB di Azure per l'inserimento dati.
Le identità gestite funzionano solo all'interno di un singolo tenant di Microsoft Entra; pertanto, l'approccio SAS Token è utile quando si trasferiscono dati da un account di archiviazione situato al di fuori del proprio tenant. L'inserimento dati è specifico di un contenitore BLOB e i token SAS della risorsa di archiviazione radice non sono consentiti.
Configurare un'origine di inserimento tramite l'interfaccia utente
I token SAS possono essere ottenuti in diversi modi; in questa guida, utilizziamo il portale Azure. Azure Storage Explorer è anche un approccio alternativo basato sull'interfaccia utente che funziona in un computer locale. Vedere Azure Storage Explorer
Passare alla risorsa di archiviazione
Nel portale di Azure trovare la risorsa di archiviazione contenente il contenitore BLOB di Azure con i dati da inserire in Planetary Computer Pro. In Impostazioni risorsa selezionare l'impostazione "Contenitori" in "Archiviazione dati".
Seleziona il contenitore BLOB e richiedi un SAS Token
Selezionare il contenitore specifico da inserire, in questo esempio viene selezionato il contenitore "test".
Selezionare l'impostazione "Token di accesso condiviso" e aprire le impostazioni di configurazione.
Verificare che queste impostazioni siano configurate correttamente:
- Autorizzazioni = Lettura (verificare che non siano selezionate altre opzioni)
- La validità del token di firma di accesso condiviso copre il tempo necessario per l'inserimento dei dati (la procedura consigliata per la sicurezza consiste nell'avere questo token valido non più di sette giorni)
Dopo aver verificato le impostazioni, selezionare il pulsante "Genera token di firma di accesso condiviso e URL". Vengono visualizzati due elementi generati: il token SAS del BLOB e l'URL SAS del BLOB. Mantenere aperta la finestra o la scheda perché saranno necessarie queste informazioni per la sezione successiva.
Passare alle impostazioni
Usare l'URL di Planetary Computer Pro per passare alla pagina di destinazione e selezionare la scheda "Impostazioni" dalla barra di spostamento.
Creare un'origine di inserimento
- Selezionare il pulsante Crea sorgente di ingestione
- Immettere l'URL del contenitore BLOB nel campo URL contenitore
Includere solo l'URL e non includere la chiave. Il formato dell'URL deve essere:
https://(Storage Resource Name).blob.core.windows.net/(Blob Container Name)
- Taglia e incolla il token SAS nella casella Token credenziali.
Un token SAS è simile a una stringa di query. Includere tutto il testo che inizia con il
?
simbolo:Esempio:
?sv=<signed-version>&ss=<signed-services>&srt=<signed-resource-types>&sp=<signed-permissions>&se=<signed-expiry-time>&st=<signed-start-time>&spr=<signed-protocol>&sig=<signature>
- Selezionare il pulsante Crea
L'origine di inserimento ora è configurata per supportare l'inserimento dei dati.
Se l'inserimento scade o è necessario aggiungere token SAS per un contenitore BLOB diverso, ripetere il processo precedente.
Configurare l'origine di inserimento per i token SAS tramite l'API
Le origini di inserimento possono anche essere impostate tramite l'API usando il servizio di archiviazione di Azure SDK e l'API Planetary Computer. Vedere la documentazione dell'API sulle origini di inserimento.
Il blocco di codice seguente importa le librerie necessarie e configura le variabili chiave.
- Sostituire
<your_container_url>
con l'URL del contenitore BLOB di Azure contenente i dati da inserire. - Sostituire
<your_geocatalog_url>
con l'URL dell'endpoint della risorsa di Computer Planetario Pro. - Sostituire
<token_duration_in_hours>
con quante ore si vuole che il token di firma di accesso condiviso sia valido (il valore predefinito è 168 ore, ovvero 7 giorni).
import requests
from azure.identity import AzureCliCredential
from datetime import datetime, timedelta, timezone
import azure.storage.blob
from urllib.parse import urlparse
###################################
# Set Key Variables Here
## The Planetary Computer Pro App ID. Do not change.
MPCPRO_APP_ID = "https://geocatalog.spatio.azure.com"
## The API version. Do not change.
API_VERSION = "2025-04-30-preview"
## Replace with the URL of the Blob Container
CONTAINER_URL = "<your_container_url>" # e.g., "https://youraccount.blob.core.windows.net/yourcontainer"
## Replace with the URL of your GeoCatalog Resource
GEOCATALOG_URL = "<your_geocatalog_url>" # e.g., "https://yourgeocatalog.randomid.region.geocatalog.spatio.azure.com/"
## Replace with the desired duration of the token in hours (default: 168 hours = 7 days)
EXPIRATION_HOURS = <token_duration_in_hours> # e.g., 7 * 24
Il blocco di codice seguente utilizza l'SDK di Azure per richiedere un token SAS per il contenitore Blob specificato.
# Parse the container URL
parsed_url = urlparse(CONTAINER_URL)
account_url = f"{parsed_url.scheme}://{parsed_url.netloc}"
account_name = parsed_url.netloc.split(".")[0]
container_name = parsed_url.path.lstrip("/")
# Login to Azure using the Azure CLI
credential = azure.identity.AzureCliCredential()
# Set up Blob Service Client
with azure.storage.blob.BlobServiceClient(
account_url=account_url,
credential=credential,
) as blob_service_client:
now = datetime.now(timezone.utc).replace(microsecond=0)
key = blob_service_client.get_user_delegation_key(
key_start_time=now + timedelta(hours=-1),
key_expiry_time=now + timedelta(hours = EXPIRATION_HOURS), )
# Generate the SAS token
sas_token = azure.storage.blob.generate_container_sas(
account_name=account_name,
container_name=container_name,
user_delegation_key=key,
permission=azure.storage.blob.ContainerSasPermissions(
read=True,
list=True,
),
start=now + timedelta(hours=-1),
expiry=now + timedelta(hours = EXPIRATION_HOURS),)
Il blocco di codice successivo usa l'API Planetary Computer Pro per pubblicare le credenziali.
# Obtain an access token
credential = AzureCliCredential()
access_token = credential.get_token(f"{MPCPRO_APP_ID}/.default")
# Payload for the POST request
payload = {
"sourceType": "SasToken",
"connectionInfo": {
"containerUrl": CONTAINER_URL,
"sasToken": sas_token,
},
}
# STAC Collection API endpoint
endpoint = f"{GEOCATALOG_URL}/inma/ingestion-sources"
# Make the POST request
response = requests.post(
endpoint,
json=payload,
headers={"Authorization": f"Bearer {access_token.token}"},
params={"api-version": API_VERSION},
)
# Print the response
if response.status_code == 201:
print("Ingestion source created successfully")
else:
print(f"Failed to create ingestion: {response.text}")
Passaggi successivi
Ora che è stata configurata l'identità gestita, è il momento di importare i dati.
Per l'inserimento di un singolo elemento:
Per l'ingestione in massa: