Udostępnij za pośrednictwem


Używanie profilów wersji interfejsu API z językiem Java w usłudze Azure Stack Hub

Ważne

Zestaw JAVA SDK został zaktualizowany ze ścieżki 1 do śledzenia 2. Zalecamy jak najszybszą migrację do zestawu SDK śledzenia 2. Aby uzyskać instrukcje, zobacz ten przewodnik migracji.

Zestaw JAVA SDK dla usługi Azure Stack Hub Resource Manager udostępnia narzędzia ułatwiające tworzenie infrastruktury i zarządzanie nią. Dostawcy zasobów w zestawie SDK obejmują zasoby obliczeniowe, sieciowe, magazyn, usługi aplikacji i usługę Azure Key Vault. Repozytorium hybrydowych przykładów języka Java można znaleźć w witrynie GitHub. Ten artykuł pomoże Ci skonfigurować środowisko, uzyskać odpowiednie poświadczenia, pobrać repozytorium i utworzyć grupę zasobów w usłudze Azure Stack Hub.

Korzystanie z zestawu JAVA SDK umożliwia korzystanie z prawdziwego środowiska dewelopera chmury hybrydowej. Przełączanie zależności wersji w POM.xml zestawie JAVA SDK umożliwia tworzenie chmury hybrydowej, pomagając przełączać się między globalnymi zasobami platformy Azure do zasobów w usłudze Azure Stack Hub.

Aby użyć najnowszej wersji usług, użyj najnowszego profilu jako zależności.

Aplikację można skierować do zasobu w usłudze Azure Tack Hub, przyjmując istniejącą zależność com.azure.resourcemanager i zmieniając wersję z x.y.z na x.y.z-hybrid. Pakiety hybrydowe, które zapewniają obsługę usługi Azure Stack Hub, używają -hybrid sufiksu na końcu wersji, na przykład 1.0.0-hybrid. Spowoduje to wskazanie statycznej kolekcji punktów końcowych skojarzonych z wersją.

Aby uzyskać najnowszy profil, przejmij istniejącą zależność com.azure.resourcemanager i zmień wersję na najnowszą. Najnowsze pakiety Java profilu zapewniają spójne środowisko pracy z platformą Azure. Pakiety mają ten sam identyfikator grupy co azure.azure.resourcemanager. Identyfikator artefaktu i przestrzenie nazw są również takie same jak globalna platforma Azure. Ułatwia to przenoszenie aplikacji platformy Azure do usługi Azure Stack Hub. Aby dowiedzieć się więcej na temat punktów końcowych używanych w usłudze Azure Stack Hub jako parą profilu hybrydowego, zobacz Podsumowanie profilów interfejsu API.

Profil jest określony w pom.xml pliku w projekcie Maven jako zależność. Profil ładuje moduły automatycznie, jeśli wybierzesz odpowiednią klasę z listy rozwijanej (tak jak w przypadku platformy .NET).

Konfigurowanie środowiska projektowego

Aby przygotować środowisko do uruchamiania zestawu SDK, możesz użyć środowiska IDE, takiego jak Eclipse lub Visual Studio Code, ale musisz mieć zainstalowane oprogramowanie Git, zestaw Java SDK i narzędzie Apache Maven. Szczegółowe informacje na temat wymagań wstępnych dotyczących konfigurowania środowiska projektowego można znaleźć w temacie Use the Azure SDK for Java (Korzystanie z zestawu Azure SDK dla języka Java)

  1. Zainstaluj usługę Git. Oficjalne instrukcje dotyczące instalowania usługi Git można znaleźć na stronie Wprowadzenie — Instalowanie usługi Git.

  2. Zainstaluj zestaw JAVA SDK i ustaw JAVA_HOME zmienną środowiskową na lokalizację plików binarnych dla zestawu Java Development Kit. Instrukcje dotyczące nośnika instalacyjnego do pobrania można znaleźć w zestawie OpenJDK. Zainstaluj wersję 8 lub nowszą zestawu Java Developer Kit.

  3. Zainstaluj narzędzie Apache Maven. Instrukcje można znaleźć w projekcie Apache Maven. Zainstaluj narzędzie Apache Maven w wersji 3.0 lub nowszej.

Profile wersji języka Java i interfejsu API

Aby użyć najnowszych wersji wszystkich usług, użyj najnowszego profilu jako zależności.

  • Aby użyć najnowszego profilu, zależność to com.microsoft.azure.

  • Aby korzystać z najnowszych obsługiwanych usług dostępnych w usłudze Azure Stack Hub, użyj profilu com.microsoft.azure.profile_2019_03_01_hybrid .

    • Profil jest określony w pliku Pom.xml jako zależność, która automatycznie ładuje moduły, jeśli wybierzesz odpowiednią klasę z listy rozwijanej (tak jak w przypadku platformy .NET).
  • Zależności są wyświetlane w następujący sposób:

    <dependency>
    <groupId>com.microsoft.azure.profile_2019_03_01_hybrid</groupId>
    <artifactId>azure</artifactId>
    <version>1.0.0-beta-1</version>
    </dependency>
    
  • Aby użyć określonych wersji interfejsu API dla typu zasobu w określonym dostawcy zasobów, użyj określonych wersji interfejsu API zdefiniowanych za pomocą funkcji IntelliSense.

Wszystkie opcje można połączyć w tej samej aplikacji.

Instalowanie zestawu Azure Java SDK

Wykonaj następujące kroki, aby zainstalować zestaw JAVA SDK:

  1. Postępuj zgodnie z oficjalnymi instrukcjami, aby zainstalować usługę Git. Zobacz Wprowadzenie — instalowanie usługi Git.

  2. Postępuj zgodnie z instrukcjami, aby zainstalować zestaw Java SDK i narzędzie Maven. Poprawna wersja to wersja 8 zestawu Java Developer Kit. Poprawna wersja narzędzia Apache Maven to 3.0 lub nowsza. Aby ukończyć przewodnik Szybki start, zmienna JAVA_HOME środowiskowa musi być ustawiona na lokalizację instalacji zestawu Java Development Kit. Aby uzyskać więcej informacji, zobacz Create your first function with Java and Maven (Tworzenie pierwszej funkcji przy użyciu języka Java i narzędzia Maven).

  3. Aby zainstalować poprawne pakiety zależności, otwórz plik Pom.xml w aplikacji Java. Dodaj zależność, jak pokazano w poniższym kodzie:

    <dependency>
    <groupId>com.microsoft.azure.profile_2019_03_01_hybrid</groupId>
    <artifactId>azure</artifactId>
    <version>1.0.0-beta-1</version>
    </dependency>
    
  4. Zestaw pakietów, które należy zainstalować, zależy od wersji profilu, której chcesz użyć. Nazwy pakietów dla wersji profilu to:

    • com.microsoft.azure.profile_2019_03_01_hybrid
    • com.microsoft.azure
      • Najnowsza

Profile

W przypadku profilów zawierających daty użyj innego profilu lub wersji zestawu SDK, zastąp datę w polu com.microsoft.azure.profile<date>_hybrid. Na przykład w wersji 2008 profil to 2019_03_01, a ciąg staje się ciągiem com.microsoft.azure.profile_2019_03_01_hybrid. Należy pamiętać, że czasami zespół zestawu SDK zmienia nazwę pakietów, więc po prostu zastąpienie daty ciągu inną datą może nie działać. W poniższej tabeli przedstawiono skojarzenie profilów i wersji usługi Azure Stack.

Wersja usługi Azure Stack Profil
2311 2020_09_01
2301 2020_09_01
2206 2020_09_01
2108 2020_09_01
2102 2020_09_01
2008 2019_03_01

Aby uzyskać więcej informacji na temat usługi Azure Stack Hub i profilów interfejsu API, zobacz Podsumowanie profilów interfejsu API.

Subskrypcja

Jeśli nie masz jeszcze subskrypcji, utwórz subskrypcję i zapisz identyfikator subskrypcji do późniejszego użycia. Aby uzyskać informacje o sposobie tworzenia subskrypcji, zobacz ten dokument.

Jednostka usługi

Jednostka usługi i skojarzone z nią informacje o środowisku powinny zostać utworzone i zapisane gdzieś. Zalecana jest jednostka usługi z owner rolą contributor , ale w zależności od przykładu może wystarczyć rola. Aby uzyskać wymagane wartości, zapoznaj się z plikiem README w repozytorium przykładowym . Możesz odczytać te wartości w dowolnym formacie obsługiwanym przez język zestawu SDK, na przykład z pliku JSON (którego używają nasze przykłady). W zależności od uruchamianego przykładu można użyć nie wszystkich tych wartości. Zobacz przykładowe repozytorium , aby uzyskać zaktualizowany przykładowy kod lub więcej informacji.

Identyfikator dzierżawy

Aby znaleźć katalog lub identyfikator dzierżawy dla usługi Azure Stack Hub, postępuj zgodnie z instrukcjami w tym artykule.

Rejestrowanie dostawców zasobów

Zarejestruj wymaganych dostawców zasobów, postępując zgodnie z tym dokumentem. Ci dostawcy zasobów będą zobowiązani w zależności od przykładów, które chcesz uruchomić. Jeśli na przykład chcesz uruchomić przykład maszyny wirtualnej, wymagana jest rejestracja dostawcy Microsoft.Compute zasobów.

Punkt końcowy menedżera zasobów usługi Azure Stack

Azure Resource Manager (ARM) to struktura zarządzania, która umożliwia administratorom wdrażanie i monitorowanie zasobów platformy Azure oraz zarządzanie nimi. Usługa Azure Resource Manager może obsługiwać te zadania jako grupę, a nie pojedynczo, w ramach jednej operacji. Informacje o metadanych można uzyskać z punktu końcowego Resource Manager. Punkt końcowy zwraca plik JSON z informacjami wymaganymi do uruchomienia kodu.

  • Element ResourceManagerEndpointUrl w zestawie Azure Stack Development Kit (ASDK) to: https://management.local.azurestack.external/.
  • Element ResourceManagerEndpointUrl w zintegrowanych systemach to: https://management.region.<fqdn>/, gdzie <fqdn> jest w pełni kwalifikowaną nazwą domeny.
  • Aby pobrać wymagane metadane: <ResourceManagerUrl>/metadata/endpoints?api-version=1.0. Aby uzyskać informacje o dostępnych wersjach interfejsu API, zobacz Specyfikacje interfejsu API REST platformy Azure. Na przykład w 2020-09-01 wersji profilu można zmienić wartość na api-version2019-10-01 dla dostawcy microsoft.resourceszasobów .

Przykładowy kod JSON:

{
   "galleryEndpoint": "https://portal.local.azurestack.external:30015/",
   "graphEndpoint": "https://graph.windows.net/",
   "portal Endpoint": "https://portal.local.azurestack.external/",
   "authentication": 
      {
         "loginEndpoint": "https://login.windows.net/",
         "audiences": ["https://management.yourtenant.onmicrosoft.com/3cc5febd-e4b7-4a85-a2ed-1d730e2f5928"]
      }
}

Ufaj certyfikatowi głównemu urzędu certyfikacji usługi Azure Stack Hub

Jeśli używasz zestawu Azure Stack Development Kit (ASDK), musisz ufać certyfikatowi głównemu urzędu certyfikacji na maszynie zdalnej. Nie musisz ufać certyfikatowi głównemu urzędu certyfikacji w zintegrowanych systemach usługi Azure Stack Hub.

Windows

  1. Wyeksportuj certyfikat z podpisem własnym usługi Azure Stack Hub na komputer.

  2. W wierszu polecenia zmień katalog na %JAVA_HOME%\bin.

  3. Uruchom następujące polecenie:

    .\keytool.exe -importcert -noprompt -file <location of the exported certificate here> -alias root -keystore %JAVA_HOME%\lib\security\cacerts -trustcacerts -storepass changeit
    

Istniejące profile interfejsu API

  • com.microsoft.azure.profile_2019_03_01_hybrid: najnowszy profil utworzony dla usługi Azure Stack Hub. Użyj tego profilu, aby usługi były najbardziej zgodne z usługą Azure Stack Hub, o ile jesteś w wersji 1904 lub nowszej.

  • com.microsoft.azure.profile_2018_03_01_hybrid: profil utworzony dla usługi Azure Stack Hub. Użyj tego profilu, aby usługi były zgodne z usługą Azure Stack Hub w wersji 1808 lub nowszej.

  • com.microsoft.azure: profil składający się z najnowszych wersji wszystkich usług. Użyj najnowszych wersji wszystkich usług.

Aby uzyskać więcej informacji na temat profilów usługi Azure Stack Hub i interfejsu API, zobacz Podsumowanie profilów interfejsu API.

Użycie profilu interfejsu API zestawu Java SDK platformy Azure

Poniższy kod uwierzytelnia jednostkę usługi w usłudze Azure Stack Hub. Tworzy token przy użyciu identyfikatora dzierżawy i bazy uwierzytelniania, która jest specyficzna dla usługi Azure Stack Hub:

AzureTokenCredentials credentials = new ApplicationTokenCredentials(client, tenant, key, AZURE_STACK)
                    .withDefaultSubscriptionID(subscriptionID);
Azure azureStack = Azure.configure()
                    .withLogLevel(com.microsoft.rest.LogLevel.BASIC)
                    .authenticate(credentials, credentials.defaultSubscriptionID());

Ten kod umożliwia pomyślne wdrożenie aplikacji w usłudze Azure Stack Hub przy użyciu zależności profilu interfejsu API.

Definiowanie funkcji ustawień środowiska usługi Azure Stack Hub

Aby zarejestrować chmurę usługi Azure Stack Hub przy użyciu poprawnych punktów końcowych, użyj następującego kodu:

// Get Azure Stack Hub cloud endpoints
final HashMap<String, String> settings = getActiveDirectorySettings(armEndpoint);

AzureEnvironment AZURE_STACK = new AzureEnvironment(new HashMap<String, String>() {
                {
                    put("managementEndpointUrl", settings.get("audience"));
                    put("resourceManagerEndpointUrl", armEndpoint);
                    put("galleryEndpointUrl", settings.get("galleryEndpoint"));
                    put("activeDirectoryEndpointUrl", settings.get("login_endpoint"));
                    put("activeDirectoryResourceID", settings.get("audience"));
                    put("activeDirectoryGraphResourceID", settings.get("graphEndpoint"));
                    put("storageEndpointSuffix", armEndpoint.substring(armEndpoint.indexOf('.')));
                    put("keyVaultDnsSuffix", ".vault" + armEndpoint.substring(armEndpoint.indexOf('.')));
                }
            });

Wywołanie getActiveDirectorySettings w poprzednim kodzie pobiera punkty końcowe z punktów końcowych metadanych. Określa zmienne środowiskowe z wywołania wykonanego:

public static HashMap<String, String> getActiveDirectorySettings(String armEndpoint) {

    HashMap<String, String> adSettings = new HashMap<String, String>();
    try {

        // create HTTP Client
        HttpClient httpClient = HttpClientBuilder.create().build();

        // Create new getRequest with below mentioned URL
        HttpGet getRequest = new HttpGet(String.format("%s/metadata/endpoints?api-version=1.0",
                             armEndpoint));

        // Add additional header to getRequest which accepts application/xml data
        getRequest.addHeader("accept", "application/xml");

        // Execute request and catch response
        HttpResponse response = httpClient.execute(getRequest);

        // Check for HTTP response code: 200 = success
        if (response.getStatusLine().getStatusCode() != 200) {
            throw new RuntimeException("Failed : HTTP error code : " + response.getStatusLine().getStatusCode());
        }

        String responseStr = EntityUtils.toString(response.getEntity());
        JSONObject responseJson = new JSONObject(responseStr);
        adSettings.put("galleryEndpoint", responseJson.getString("galleryEndpoint"));
        JSONObject authentication = (JSONObject) responseJson.get("authentication");
        String audience = authentication.get("audiences").toString().split("\"")[1];
        adSettings.put("login_endpoint", authentication.getString("loginEndpoint"));
        adSettings.put("audience", audience);
        adSettings.put("graphEndpoint", responseJson.getString("graphEndpoint"));

    } catch (ClientProtocolException cpe) {
        cpe.printStackTrace();
        throw new RuntimeException(cpe);
    } catch (IOException ioe) {
        ioe.printStackTrace();
        throw new RuntimeException(ioe);
    }
    return adSettings;
}

Przykładowy projekt testu jednostkowego

  1. Sklonuj repozytorium przy użyciu następującego polecenia:

    git clone https://github.com/Azure-Samples/Hybrid-Java-Samples.git -b resourcegroup-2019-03-01-hybrid
    
  2. Utwórz jednostkę usługi platformy Azure i przypisz rolę, aby uzyskać dostęp do subskrypcji. Aby uzyskać instrukcje dotyczące tworzenia jednostki usługi, zobacz Używanie Azure PowerShell do tworzenia jednostki usługi przy użyciu certyfikatu.

  3. Pobierz następujące wymagane zmienne środowiskowe:

    • AZURE_TENANT_ID
    • AZURE_CLIENT_ID
    • AZURE_CLIENT_SECRET
    • AZURE_SUBSCRIPTION_ID
    • ARM_ENDPOINT
    • RESOURCE_LOCATION
  4. Ustaw następujące zmienne środowiskowe przy użyciu informacji pobranych z jednostki usługi utworzonej przy użyciu wiersza polecenia:

    • export AZURE_TENANT_ID={your tenant ID}
    • export AZURE_CLIENT_ID={your client ID}
    • export AZURE_CLIENT_SECRET={your client secret}
    • export AZURE_SUBSCRIPTION_ID={your subscription ID}
    • export ARM_ENDPOINT={your Azure Stack Hub Resource Manager URL}
    • export RESOURCE_LOCATION={location of Azure Stack Hub}

    W systemie Windows użyj zestawu zamiast eksportu.

  5. getActiveDirectorySettings Użyj funkcji , aby pobrać punkty końcowe metadanych usługi Azure Resource Manager.

    // Get Azure Stack Hub cloud endpoints
    final HashMap<String, String> settings = getActiveDirectorySettings(armEndpoint);
    
  6. W pliku Pom.xml dodaj następującą zależność, aby użyć profilu hybrydowego 2019-03-01 dla usługi Azure Stack Hub. Ta zależność instaluje moduły skojarzone z tym profilem dla dostawców zasobów Compute, Networking, Storage, Key Vault i App Services:

    <dependency>
      <groupId>com.microsoft.azure.profile_2019_03_01_hybrid</groupId>
      <artifactId>azure</artifactId>
      <version>1.0.0-beta-1</version>
    </dependency>
    
  7. W wierszu polecenia otwartym w celu ustawienia zmiennych środowiskowych wprowadź następujące polecenie:

    mvn clean compile exec:java
    

Przykłady

Zobacz to przykładowe repozytorium, aby uzyskać przykładowy kod aktualizacji (śledzenie 2). Zobacz to przykładowe repozytorium, aby śledzić 1 przykładowy kod. Katalog główny README.md opisuje ogólne wymagania, a każdy podkatalog zawiera konkretny przykład z własnym README.md sposobem uruchamiania tego przykładu.

Zobacz tutaj, aby zapoznać się z przykładową wersją lub profilem 2019-03-01 usługi Azure Stack 2008 i poniżej.

Następne kroki

Dowiedz się więcej o profilach interfejsu API: