Sdílet prostřednictvím


Nastavení zdroje ingestu pro Microsoft Planetary Computer Pro pomocí tokenů SAS

Načítání nových dat do prostředku Microsoft Planety Computer Pro GeoCatalog se nazývá příjem dat. GeoCatalog potřebuje oprávnění nebo zdroje příjmu dat pro přístup k datům uloženým externě k prostředku GeoCatalog.   V této příručce se naučíte:

  • Vytvoření zdroje příjmu dat prostřednictvím webu Azure Portal
  • Vytvoření zdroje ingestování prostřednictvím rozhraní Microsoft Planetary Computer Pro API pomocí sady Azure Python SDK.

Požadavky

  • Planetární počítač Microsoftu Pro GeoCatalog nasazený do vašeho předplatného Azure. Viz Nasazení prostředku GeoCatalog.

  • Nastavení kontejneru objektů blob Azure se správnými oprávněními k přiřazování spravovaných identit a vyžádání tokenu SAS Viz Vytvoření účtu úložiště Azure.

Spravovaná identita vs. tokeny SAS

Spravované identity poskytují automaticky spravovanou identitu v Microsoft Entra ID pro aplikace, které se mají použít při připojování k prostředkům, které podporují ověřování Microsoft Entra.

Sdílené přístupové podpisy (SAS) vytvářejí kryptografické přihlašovací údaje pro přístup k prostředku, jako je Azure Blob Storage.

Spravované identity jsou bezpečnější a automatizovanější mechanismus pro vytvoření trvalého přístupu k účtu úložiště a jsou doporučeným přístupem k zajištění zabezpečeného přístupu ke službě Azure Blob Storage pro příjem dat.

Spravované identity fungují jenom v rámci jednoho tenanta Microsoft Entra, takže přístup k tokenu SAS je užitečný při přesunu dat z úložiště, které jsou v účtu úložiště mimo vašeho tenanta. Příjem dat je specifický pro kontejner Blob a tokeny SAS z kořenového úložiště nejsou povolené.

Nastavení zdroje příjmu dat prostřednictvím uživatelského rozhraní

Tokeny SAS lze získat několika způsoby; v této příručce to provedeme pomocí webu Azure Portal. Průzkumník služby Azure Storage je také alternativní nástroj s uživatelským rozhraním, který funguje na místním počítači. Viz Průzkumník služby Azure Storage

V portálu Azure najděte prostředek úložiště obsahující kontejner Blob Azure s daty, která chcete zpracovat do Planetary Computer Pro. V nastavení prostředku vyberte v části Úložiště dat nastavení Kontejnery.

Snímek obrazovky webu Azure Portal zobrazující oddíl Kontejnery v části Úložiště dat pro vybraný účet úložiště

Vyberte kontejner objektů blob a požádejte o token SAS.

Vyberte konkrétní kontejner, který chcete ingestovat, v tomto příkladu vybereme kontejner "test".

Snímek obrazovky webu Azure Portal se stránkou konfigurace sdílených přístupových tokenů pro vybraný kontejner objektů blob

Vyberte nastavení Sdílené přístupové tokeny a otevřete nastavení konfigurace.

Snímek obrazovky webu Azure Portal se stránkou konfigurace sdílených přístupových tokenů pro vybraný kontejner objektů blob Stránka obsahuje pole pro nastavení oprávnění, časy spuštění a vypršení platnosti a tlačítka pro vygenerování tokenu SAS a adresy URL.

Ujistěte se, že jsou tato nastavení správně nastavená:

  • Oprávnění = Čtení (ověřte, že nejsou vybrány žádné další možnosti)
  • Platnost tokenu SAS pokrývá čas potřebný k ingestování dat (osvědčeným postupem zabezpečení je mít tento token platný maximálně sedm dní).

Po ověření nastavení vyberte tlačítko Generovat token SAS a adresu URL . Zobrazí se dva vygenerované prvky: token SAS objektu blob a adresa URL SAS objektu blob. Nechte okno nebo kartu otevřenou, jelikož tyto informace budete potřebovat pro další sekci.

Pomocí adresy URL planetárního počítače Pro přejděte na cílovou stránku a na navigačním panelu vyberte kartu Nastavení .

Snímek obrazovky portálu GeoCatalog zobrazující umístění tlačítka Nastavení

Vytvoření zdroje příjmu dat

  • Výběr tlačítka Vytvořit zdroj příjmu dat
  • Do pole Adresa URL kontejneru zadejte adresu URL kontejneru Blob.
    • Zahrňte jenom adresu URL a nezahrnujte klíč. Formát adresy URL by měl být:

      https://(Storage Resource Name).blob.core.windows.net/(Blob Container Name)

  • Vyjmout a vložit token SAS do pole Pole pro přihlašovací token.
    • Token SAS vypadá jako řetězec dotazu. Zahrňte veškerý text začínající ? symbolem:

      Příklad:?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>

  • Výběr tlačítka Vytvořit

Snímek obrazovky se stránkou Nastavení planetárního počítače Pro zobrazující úspěšně vytvořený zdroj příjmu dat Na stránce se zobrazí adresa URL kontejneru, token přihlašovacích údajů a datum vypršení platnosti přihlašovacích údajů.

Váš zdroj příjmu dat je teď nastavený tak, aby podporoval příjem dat.

Pokud vyprší platnost vašeho příjmu dat nebo potřebujete přidat tokeny SAS pro jiný kontejner objektů blob, opakujte předchozí proces.

Nastavení zdroje příjmu dat pro tokeny SAS prostřednictvím rozhraní API

Zdroje příjmu dat je také možné nastavit prostřednictvím rozhraní API pomocí služby Azure SDK Storage a rozhraní API planetárního počítače. Viz dokumentace k rozhraní API zdrojů příjmu dat.

Následující blok kódu importuje požadované knihovny a nastaví klíčové proměnné.

  • Nahraďte <your_container_url> adresou URL kontejneru objektů blob Azure obsahující data, která chcete ingestovat.
  • Nahraďte <your_geocatalog_url> adresou URL koncového bodu prostředku Planetary Computer Pro.
  • Nahraďte <token_duration_in_hours> počet hodin, po které má být token SAS platný (výchozí hodnota je 168 hodin, což je 7 dní).
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

Další blok kódu používá sadu Azure SDK k vyžádání tokenu SAS pro zadaný kontejner objektů blob.

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

Další blok kódu používá rozhraní API planetárního počítače Pro k publikování přihlašovacích údajů.

# 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}")

Další kroky

Teď, když jste nastavili spravovanou identitu, je čas ingestovat data.

Příjem jedné položky:

Pro hromadný příjem dat: