Udostępnij przez


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

Ważne

Zaktualizowano Java SDK ze ścieżki 1 do ścieżki 2. Zalecamy jak najszybsze przejście na zestaw SDK wersji 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 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 Java SDK umożliwia rozwój chmury hybrydowej, ułatwiając przełączanie pomiędzy globalnymi zasobami Azure i zasobami 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, stosują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 profilu Java zapewniają spójne doświadczenie z platformą Azure. Pakiety mają ten sam identyfikator grupy co azure.azure.resourcemanager. Identyfikator artefaktu i przestrzenie nazw są takie same jak w globalnym 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 część 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ć zainstalowany zestaw 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 Korzystanie z zestawu Azure SDK dla języka Java

  1. Zainstaluj narzędzie 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. Można znaleźć instrukcje dotyczące pobrania nośnika instalacyjnego dla 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ścią jest com.microsoft.azure.

  • Aby używać najnowszych obsługiwanych usług dostępnych w 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 ładuje moduły automatycznie, 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 programu Apache Maven to 3.0 lub nowsza. Aby ukończyć przewodnik szybkiego startu, zmienna środowiskowa JAVA_HOME 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 profilów to:

    • com.microsoft.azure.profile_2019_03_01_hybrid
    • com.microsoft.azure
      • najnowszy

Profile

W przypadku profilów zawierających daty, aby użyć 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ę 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 01-09-2020
2008 01.03.2019

Aby uzyskać więcej informacji na temat profilów usługi Azure Stack Hub i 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

Obiekt główny usługi oraz powiązane z nim informacje dotyczące środowiska powinny zostać utworzone i zapisane w określonym miejscu. Zalecany jest podmiot usługi z rolą owner, ale w zależności od przykładu może wystarczyć rola contributor. Zapoznaj się z plikiem README w przykładowym repozytorium , aby uzyskać wymagane wartości. Te wartości można odczytać 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 nie wszystkie te wartości mogą być używane. 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ą potrzebni w zależności od próbek, które chcesz uruchomić. Jeśli na przykład chcesz uruchomić przykład maszyny wirtualnej, wymagana Microsoft.Compute jest rejestracja dostawcy zasobów.

Punkt końcowy usługi Azure Stack resource manager

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 usługi 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/.
  • ResourceManagerEndpointUrl w systemach zintegrowanych to: https://management.region.<fqdn>/, gdzie <fqdn> jest w pełni kwalifikowaną nazwą domenową.
  • 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 wersji profilu 2020-09-01 możesz zmienić api-version na 2019-10-01 dla dostawcy zasobów microsoft.resources.

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"]
      }
}

Zaufaj certyfikatowi głównemu urzędu certyfikacji Azure Stack Hub

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

Windows

  1. Wyeksportuj certyfikat z podpisem własnym usługi Azure Stack Hub do pulpitu.

  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 API Java SDK dla platformy Azure

Poniższy kod uwierzytelnia podmiot usługi na platformie 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 odpowiednich 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 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 Tworzenie jednostki usługi przy użyciu programu Azure PowerShell 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 set zamiast export.

  5. Użyj funkcji getActiveDirectorySettings , aby pobrać punkty końcowe metadanych 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, który został otwarty w celu ustawienia zmiennych środowiskowych, wprowadź następujące polecenie:

    mvn clean compile exec:java
    

Przykłady

Zobacz to przykładowe repozytorium, aby znaleźć najbardziej aktualny przykładowy kod (ścieżka 2). Zobacz to przykładowe repozytorium z przykładowym kodem dla ścieżki 1. Katalog główny README.md opisuje ogólne wymagania, a każdy podkatalog zawiera konkretny przykład z własnymi README.md instrukcjami uruchamiania tego przykładu.

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

Dalsze kroki

Dowiedz się więcej o profilach interfejsu API: