Udostępnij za pośrednictwem


Skonfigurować źródło przyjmowania danych dla Microsoft Planetary Computer Pro przy użyciu tokenów SAS.

Ładowanie nowych danych do zasobu Microsoft Planetary Computer Pro GeoCatalog jest nazywane pozyskiwaniem. GeoCatalog wymaga uprawnień lub źródeł pozyskiwania, aby uzyskać dostęp do danych przechowywanych zewnętrznie w zasobie GeoCatalog.   Z tego przewodnika dowiesz się, jak wykonywać następujące działania:

  • Tworzenie źródła pozyskiwania za pośrednictwem witryny Azure Portal
  • Tworzenie źródła pozyskiwania za pomocą interfejsu API Microsoft Planetary Computer Pro przy użyciu zestawu Sdk języka Python platformy Azure

Wymagania wstępne

  • Narzędzie Microsoft Planetary Computer Pro GeoCatalog wdrożone w ramach subskrypcji platformy Azure. Zobacz Wdrażanie zasobu GeoCatalog.

  • Konfiguracja kontenera obiektów blob platformy Azure z odpowiednimi uprawnieniami do przypisywania tożsamości zarządzanych i żądania tokenu SAS. Zobacz Tworzenie konta usługi Azure Storage.

Tożsamość zarządzana a tokeny SAS

Tożsamości zarządzane zapewniają automatyczną tożsamość zarządzaną w usłudze Microsoft Entra ID dla aplikacji używanych podczas nawiązywania połączenia z zasobami obsługującymi uwierzytelnianie firmy Microsoft Entra.

Sygnatury dostępu współdzielonego (SAS) tworzą poświadczenia kryptograficzne na potrzeby dostępu do zasobu, takiego jak usługa Azure Blob Storage.

Zarządzane tożsamości to bezpieczniejszy, zautomatyzowany mechanizm, który pozwala na stały dostęp do kont magazynowych i jest zalecanym sposobem na zapewnienie bezpiecznego dostępu do Azure Blob Storage dla celów pozyskiwania danych.

Tożsamości zarządzane działają tylko w ramach jednej dzierżawy Microsoft Entra, dlatego podejście z użyciem tokenu SAS jest przydatne podczas przenoszenia danych z magazynu znajdującego się na koncie magazynowym poza dzierżawą. Import danych jest dedykowany dla kontenera obiektów blob, a tokeny SAS z głównego zasobu przechowywania są niedozwolone.

Konfigurowanie źródła pozyskiwania za pośrednictwem interfejsu użytkownika

Tokeny SAS można uzyskać na wiele sposobów; w tym przewodniku korzystamy z witryny Azure Portal. Eksplorator usługi Azure Storage jest również alternatywnym podejściem opartym na interfejsie użytkownika, które działa na komputerze lokalnym. Zobacz Eksplorator usługi Azure Storage

W portalu Azure znajdź zasób magazynowy zawierający kontener obiektów blob w platformie Azure z danymi, które chcesz pozyskać do Planetary Computer Pro. W obszarze Ustawienia zasobu wybierz ustawienie "Kontenery" w obszarze "Magazyn danych".

Zrzut ekranu portalu Azure pokazujący sekcję Kontenery w obszarze Magazyn danych dla wybranego Konta magazynowego.

Wybierz zasobnik obiektów blob i zażądaj tokenu SAS

Wybierz konkretny kontener, który chcesz przetworzyć; w tym przykładzie wybieramy kontener "test".

Zrzut ekranu portalu Azure przedstawiający stronę konfiguracji tokenów dostępu współdzielonego dla wybranego kontenera Blob.

Wybierz ustawienie "Tokeny dostępu współdzielonego" i otwórz ustawienia konfiguracji.

Zrzut ekranu portalu Azure przedstawiający stronę konfiguracji tokenów SAS dla przykładowego kontenera obiektów blob. Strona obejmuje pola do ustawiania uprawnień, czasu rozpoczęcia i wygaśnięcia oraz przyciski do generacji tokenu i adresu URL sygnatury dostępu współdzielonego.

Upewnij się, że te ustawienia są poprawnie skonfigurowane:

  • Uprawnienia = Odczyt (sprawdź, czy nie wybrano żadnych innych opcji)
  • Ważność tokenu SAS obejmuje czas wymagany do pozyskiwania danych (najlepszym rozwiązaniem w zakresie zabezpieczeń jest posiadanie tego tokenu ważnego nie więcej niż siedem dni)

Po zweryfikowaniu ustawień wybierz przycisk "Generuj token SAS i adres URL". Zobaczysz dwa wygenerowane elementy: token SAS obiektu Blob i adres URL SAS obiektu Blob. Pozostaw otwarte okno/kartę, ponieważ będą potrzebne te informacje dla następnej sekcji.

Użyj adresu URL komputera planetarnego Pro, aby przejść do strony docelowej i wybrać kartę "Ustawienia" na pasku nawigacyjnym.

Zrzut ekranu portalu GeoCatalog przedstawiający lokalizację przycisku Ustawienia.

Utwórz źródło pobierania danych

  • Wybierz przycisk Utwórz źródło pozyskiwania
  • Wprowadź adres URL Blob Container w polu Adres URL kontenera
    • Dołącz tylko adres URL i nie dołączaj klucza. Format adresu URL powinien być następujący:

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

  • Wytnij i wklej token SAS do pola Token poświadczeń.
    • Token SAS wygląda jak ciąg zapytania. Dołącz cały tekst rozpoczynający się od symbolu ? :

      Przykład:?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>

  • Wybierz przycisk Utwórz

Zrzut ekranu przedstawiający stronę Ustawienia komputera Planetary Pro, na której pomyślnie utworzono źródło pozyskiwania. Na stronie wyświetlane są adres URL kontenera, token uwierzytelniający oraz data wygaśnięcia tokenu.

Źródło pozyskiwania jest teraz skonfigurowane do obsługi pozyskiwania danych!

Jeśli importowanie danych wygaśnie lub musisz dodać tokeny SAS dla innego kontenera BLOB, powtórz poprzedni proces.

Konfigurowanie źródła pozyskiwania tokenów SAS za pośrednictwem interfejsu API

Źródła pozyskiwania można również ustawić za pomocą interfejsu API przy użyciu usługi Azure SDK Storage i interfejsu API komputera planetarnego. Zobacz dokumentację API źródeł ingestii.

Poniższy blok kodu importuje wymagane biblioteki i konfiguruje kluczowe zmienne.

  • Zastąp ciąg <your_container_url> adresem URL kontenera obiektów blob platformy Azure zawierającymi dane, które chcesz pozyskać.
  • Zastąp <your_geocatalog_url> adresem URL punktu końcowego zasobu Planetary Computer Pro.
  • Zastąp <token_duration_in_hours> ciąg liczbą godzin, przez które token SAS ma być prawidłowy (wartość domyślna to 168 godzin, czyli 7 dni).
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

Następny blok kodu używa zestawu Azure SDK do żądania tokenu SAS dla określonego kontenera obiektów 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),)

Następny blok kodu stosuje interfejs API Planetary Computer Pro do opublikowania poświadczenia.

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

Dalsze kroki

Po skonfigurowaniu tożsamości zarządzanej, teraz czas na pozyskiwanie danych.

W przypadku przyjmowania pojedynczego przedmiotu:

Dla zbiorczego wprowadzania: