Použití profilů verzí rozhraní API s Javou ve službě Azure Stack Hub

Důležité

Sada Java SDK byla aktualizována z tracku 1 na track 2. Doporučujeme přejít na sadu SDK Track 2 co nejdříve. Pokyny najdete v tomto průvodci migrací.

Sada Java SDK pro Azure Stack Hub Resource Manager poskytuje nástroje, které vám pomůžou sestavovat a spravovat infrastrukturu. Poskytovatelé prostředků v sadě SDK zahrnují výpočetní prostředky, sítě, úložiště, aplikační služby a Azure Key Vault. Úložiště hybridních ukázek Java najdete na GitHubu. Tento článek vám pomůže nastavit prostředí, získat správné přihlašovací údaje, získat úložiště a vytvořit skupinu prostředků ve službě Azure Stack Hub.

Použití sady Java SDK umožňuje skutečné hybridní prostředí pro vývojáře cloudu. Přepínání závislostí verzí v POM.xml sadě Java SDK umožňuje vývoj hybridního cloudu tím, že vám pomůže přepínat mezi globálními prostředky Azure na prostředky ve službě Azure Stack Hub.

Pokud chcete použít nejnovější verzi služeb, použijte profil nejnovější jako závislost.

Aplikaci můžete cílit na prostředek ve službě Azure Stack Hub tím, že vezmete existující závislost com.azure.resourcemanager a změníte verzi z x.y.z na x.y.z-hybrid. Hybridní balíčky, které poskytují podporu pro Azure Stack Hub, používají -hybrid příponu na konci verze, 1.0.0-hybridnapříklad . To bude odkazovat na statickou kolekci koncových bodů přidružených k verzi.

Pokud chcete získat nejnovější profil, převezměte stávající závislost com.azure.resourcemanager a změňte verzi na nejnovější. Nejnovější balíčky Java profilu poskytují konzistentní prostředí s Azure. Balíčky sdílejí stejné ID skupiny jako Azure com.azure.resourcemanager. ID artefaktu a obory názvů jsou také stejné jako globální Azure. To vám pomůže přenést aplikaci Azure do služby Azure Stack Hub. Další informace o koncových bodech používaných ve službě Azure Stack Hub jako par z hybridního profilu najdete v souhrnu profilů rozhraní API.

Profil je zadaný v pom.xml souboru v projektu Maven jako závislost. Profil načte moduly automaticky, pokud zvolíte správnou třídu z rozevíracího seznamu (stejně jako u .NET).

Nastavení vývojového prostředí

Pokud chcete připravit prostředí pro spuštění sady SDK, můžete použít integrované vývojové prostředí (IDE), jako je Eclipse nebo Visual Studio Code, ale budete muset mít nainstalovaný Git, sadu Java SDK a Apache Maven. Podrobnosti o požadavcích pro nastavení vývojového prostředí najdete v tématu Použití sady Azure SDK pro Javu.

  1. Nainstalujte Git. Oficiální pokyny k instalaci Gitu najdete na webu Začínáme – Instalace Gitu.

  2. Nainstalujte sadu Java SDK a nastavte proměnnou JAVA_HOME prostředí na umístění binárních souborů sady Java Development Kit. Pokyny ke stažení instalačního média pro OpenJDK najdete. Nainstalujte verzi 8 nebo vyšší sady Java Developer Kit.

  3. Nainstalujte Apache Maven. Pokyny najdete v projektu Apache Maven. Nainstalujte Apache Maven verze 3.0 nebo vyšší.

Profily verzí Javy a rozhraní API

Pokud chcete používat nejnovější verze všech služeb, použijte profil latest jako závislost.

  • Pokud chcete použít nejnovější profil, závislost je com.microsoft.azure.

  • Pokud chcete používat nejnovější podporované služby dostupné ve službě Azure Stack Hub, použijte profil com.microsoft.azure.profile_2019_03_01_hybrid .

    • Profil je zadaný v souboru Pom.xml jako závislost, který načte moduly automaticky, pokud zvolíte správnou třídu z rozevíracího seznamu (stejně jako u .NET).
  • Závislosti se zobrazí takto:

    <dependency>
    <groupId>com.microsoft.azure.profile_2019_03_01_hybrid</groupId>
    <artifactId>azure</artifactId>
    <version>1.0.0-beta-1</version>
    </dependency>
    
  • Pokud chcete použít konkrétní verze rozhraní API pro typ prostředku v konkrétním poskytovateli prostředků, použijte konkrétní verze rozhraní API definované prostřednictvím intellisense.

Můžete kombinovat všechny možnosti ve stejné aplikaci.

Instalace sady Azure Java SDK

Pokud chcete nainstalovat sadu Java SDK, postupujte takto:

  1. Podle oficiálních pokynů nainstalujte Git. Viz Začínáme – Instalace Gitu.

  2. Postupujte podle pokynů k instalaci Java SDK a Maven. Správná verze je verze 8 sady Java Developer Kit. Správná verze Apache Mavenu je 3.0 nebo vyšší. K dokončení rychlého startu musí být proměnná prostředí JAVA_HOME nastavena na umístění instalace sady nástrojů pro vývoj Java. Další informace najdete v tématu Vytvoření první funkce pomocí Javy a Mavenu.

  3. Pokud chcete nainstalovat správné balíčky závislostí, otevřete v aplikaci Java soubor Pom.xml . Přidejte závislost, jak je znázorněno v následujícím kódu:

    <dependency>
    <groupId>com.microsoft.azure.profile_2019_03_01_hybrid</groupId>
    <artifactId>azure</artifactId>
    <version>1.0.0-beta-1</version>
    </dependency>
    
  4. Sada balíčků, které je potřeba nainstalovat, závisí na verzi profilu, kterou chcete použít. Názvy balíčků pro verze profilu jsou:

    • com.microsoft.azure.profile_2019_03_01_hybrid
    • com.microsoft.azure
      • nejnovější

Profily

Pro profily obsahující data nahraďte datum v com.microsoft.azure.profile<date>_hybrid, chcete-li použít jiný profil nebo verzi sady SDK. Například u verze 2008 je profil 2019_03_01, a řetězec se stává com.microsoft.azure.profile_2019_03_01_hybrid. Všimněte si, že tým sady SDK někdy změní název balíčků, takže pouhé nahrazení data v řetězci jiným datem nemusí vždy fungovat. Informace o přidružení profilů a verzí služby Azure Stack najdete v následující tabulce.

Verze služby Azure Stack Profil
2311 2020_09_01
2301 2020_09_01
2206 2020_09_01
2108 2020_09_01
2102 2020_09_01
2008 01.03.2019

Další informace o profilech služby Azure Stack Hub a rozhraní API najdete v souhrnu profilů rozhraní API.

Předplatné

Pokud ještě nemáte předplatné, vytvořte předplatné a uložte ID předplatného, které se použije později. Informace o tom, jak vytvořit předplatné, najdete v tomto dokumentu.

Hlavní služba

Servisní principál a jeho související informace o prostředí by se měly vytvořit a uložit na vhodném místě. Doporučuje se použít služební účet s rolí owner, ale podle konkrétního příkladu může stačit role contributor. Požadované hodnoty najdete v souboru README v ukázkovém úložišti . Tyto hodnoty můžete číst v libovolném formátu podporovaném jazykem sady SDK, například ze souboru JSON (který používají naše ukázky). V závislosti na spouštěném vzorku nemusí být všechny tyto hodnoty použity. Informace o aktualizovaném ukázkovém kódu nebo dalších informacích najdete v ukázkovém úložišti .

Identifikátor nájemce

Pokud chcete najít ID adresáře nebo tenanta pro službu Azure Stack Hub, postupujte podle pokynů v tomto článku.

Registrace poskytovatelů prostředků

Podle tohoto dokumentu zaregistrujte požadované poskytovatele prostředků. Tito poskytovatelé prostředků budou potřeba v závislosti na vzorcích, které chcete spustit. Pokud například chcete spustit ukázku virtuálního počítače, je vyžadována registrace poskytovatele prostředků Microsoft.Compute.

Koncový bod Azure Stack Resource Manageru

Azure Resource Manager (ARM) je architektura pro správu, která správcům umožňuje nasazovat, spravovat a monitorovat prostředky Azure. Azure Resource Manager může tyto úlohy zpracovávat jako skupinu, nikoli jednotlivě, v jedné operaci. Informace o metadatech můžete získat z koncového bodu Resource Manageru. Koncový bod vrátí soubor JSON s informacemi potřebnými ke spuštění kódu.

  • ResourceManagerEndpointUrl v sadě Azure Stack Development Kit (ASDK) je: https://management.local.azurestack.external/.
  • ResourceManagerEndpointUrl v integrovaných systémech je: https://management.region.<fqdn>/, kde <fqdn> je váš plně kvalifikovaný název domény.
  • K načtení požadovaných metadat: <ResourceManagerUrl>/metadata/endpoints?api-version=1.0. Dostupné verze rozhraní API najdete ve specifikacích rozhraní REST API Azure. Například ve 2020-09-01 verzi profilu můžete změnit api-version na 2019-10-01 u poskytovatele prostředků microsoft.resources.

Ukázkový KÓD 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"]
      }
}

Důvěřovat kořenovému certifikátu certifikační autority služby Azure Stack Hub

Pokud používáte sadu Azure Stack Development Kit (ASDK), musíte na vzdáleném počítači důvěřovat kořenovému certifikátu certifikační autority. Nemusíte důvěřovat kořenovému certifikátu certifikační autority v integrovaných systémech služby Azure Stack Hub.

Windows

  1. Exportujte certifikát podepsaný svým držitelem (self-signed certificate) služby Azure Stack Hub do počítače.

  2. V příkazovém řádku změňte adresář na %JAVA_HOME%\bin.

  3. Spusťte následující příkaz:

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

Existující profily rozhraní API

  • com.microsoft.azure.profile_2019_03_01_hybrid: Nejnovější profil vytvořený pro Azure Stack Hub. Tento profil použijte pro služby, které budou nejkomppatibilnější se službou Azure Stack Hub, pokud používáte verzi 1904 nebo novější.

  • com.microsoft.azure.profile_2018_03_01_hybrid: Profil vytvořený pro Azure Stack Hub. Tento profil použijte pro služby kompatibilní se službou Azure Stack Hub verze 1808 nebo novější.

  • com.microsoft.azure: Profil se skládá z nejnovějších verzí všech služeb. Použijte nejnovější verze všech služeb.

Další informace o profilech služby Azure Stack Hub a rozhraní API najdete v souhrnu profilů rozhraní API.

Využití profilu rozhraní API sady Azure Java SDK

Následující kód ověřuje instanční objekt ve službě Azure Stack Hub. Vytvoří token pomocí ID tenanta a ověřovacího základu, který je specifický pro 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());

Tento kód umožňuje použít závislosti profilu rozhraní API k úspěšnému nasazení aplikace do služby Azure Stack Hub.

Definování funkcí nastavení prostředí služby Azure Stack Hub

Pokud chcete zaregistrovat cloud Služby Azure Stack Hub se správnými koncovými body, použijte následující kód:

// 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('.')));
                }
            });

Volání getActiveDirectorySettings v předchozím kódu načte koncové body z koncových bodů metadat. Uvádí proměnné prostředí z provedeného volání:

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;
}

Ukázkový projekt jednotkového testu

  1. Naklonujte úložiště pomocí následujícího příkazu:

    git clone https://github.com/Azure-Samples/Hybrid-Java-Samples.git -b resourcegroup-2019-03-01-hybrid
    
  2. Vytvořte instanční objekt Azure a přiřaďte roli pro přístup k předplatnému. Pokyny k vytvoření instančního objektu najdete v tématu Použití Azure PowerShellu k vytvoření instančního objektu s certifikátem.

  3. Načtěte následující požadované proměnné prostředí:

    • AZURE_TENANT_ID
    • AZURE_CLIENT_ID
    • AZURE_CLIENT_SECRET
    • AZURE_SUBSCRIPTION_ID
    • ARM_ENDPOINT
    • RESOURCE_LOCATION
  4. Nastavte následující proměnné prostředí pomocí informací načtených ze service principal, který jste vytvořili pomocí příkazového řádku.

    • 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}

    Ve Windows použijte set místo export.

  5. Použijte funkci getActiveDirectorySettings k načtení koncových bodů metadat Azure Resource Manageru.

    // Get Azure Stack Hub cloud endpoints
    final HashMap<String, String> settings = getActiveDirectorySettings(armEndpoint);
    
  6. Do souboru Pom.xml přidejte následující závislost, která použije profil 2019-03-01-hybrid pro Azure Stack Hub. Tato závislost nainstaluje moduly přidružené k tomuto profilu pro poskytovatele prostředků Compute, Networking, Storage, Key Vault a 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. Do příkazového řádku, který byl otevřen pro nastavení proměnných prostředí, zadejte následující příkaz:

    mvn clean compile exec:java
    

Vzorky

V tomto ukázkovém úložišti najdete vzorový kód update-to-date (track 2). Podívejte se na toto ukázkové úložiště, kde najdete vzorový kód pro Trať 1. Kořenový adresář README.md popisuje obecné požadavky a každý podadresáři obsahuje konkrétní ukázku s vlastním způsobem README.md spuštění této ukázky.

Ukázku, která se vztahuje na verzi nebo profil 2008 služby Azure Stack, najdete 2019-03-01 a níže.

Další kroky

Další informace o profilech rozhraní API: