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

Důležité

Sada Java SDK byla aktualizována ze skladby 1 na trasu 2. Doporučujeme migrovat na sadu Track 2 SDK co nejdříve. Pokyny najdete v tomto průvodci migrací.

Sada Java SDK pro službu Azure Stack Hub Resource Manager poskytuje nástroje, které vám pomůžou vytvořit 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 v Javě najdete na GitHubu. Tento článek vám pomůže s nastavením prostředí, získáním správných přihlašovacích údajů, získáním úložiště a vytvořením skupiny prostředků ve službě Azure Stack Hub.

Použití sady Java SDK umožňuje skutečné prostředí pro vývojáře hybridního cloudu. Přepínání závislostí verzí v POM.xml sadě Java SDK umožňuje vývoj hybridního cloudu tím, že pomáhá 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 jako závislost nejnovější profil.

Aplikaci můžete zacílit na prostředek ve službě Azure Tack Hub tak, že vezmete stávají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 služby 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, vezměte existující závislost com.azure.resourcemanager a změňte verzi na nejnovější. Nejnovější profilové balíčky Java 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 pomáhá při přenosu aplikace Azure do služby Azure Stack Hub. Další informace o koncových bodech používaných ve službě Azure Stack Hub jako par s hybridním profilem najdete v tématu Souhrn profilů rozhraní API.

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

Nastavíte vývojové prostředí

K přípravě prostředí na spuštění sady SDK můžete použít integrované vývojové prostředí, 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 na 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 stránce Začínáme – Instalace Gitu.

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

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

Profily verzí java a rozhraní API

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

  • 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 se zadává v souboru Pom.xml jako závislost, která automaticky načte moduly, pokud v rozevíracím seznamu zvolíte správnou třídu (stejně jako v případě .NET).
  • Závislosti vypadají 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 u konkrétního poskytovatele prostředků, použijte konkrétní verze rozhraní API definované prostřednictvím IntelliSense.

Všechny možnosti můžete kombinovat ve stejné aplikaci.

Instalace sady Azure Java SDK

Pokud chcete nainstalovat sadu Java SDK, postupujte takto:

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

  2. Postupujte podle pokynů k instalaci sady Java SDK a Mavenu. Správná verze je verze 8 sady Java Developer Kit. Správná verze Apache Mavenu je 3.0 nebo novější. K dokončení tohoto rychlého startu JAVA_HOME musí být proměnná prostředí nastavená na umístění instalace sady Java Development Kit. 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

Pokud chcete použít jiný profil nebo verzi sady SDK pro profily obsahující kalendářní data, nahraďte datum v com.microsoft.azure.profile<date>_hybridsouboru . Například pro verzi 2008 je profil a řetězec se 2019_03_01změní com.microsoft.azure.profile_2019_03_01_hybridna . Všimněte si, že tým SDK někdy změní název balíčků, takže jednoduché nahrazení data řetězce jiným datem nemusí fungovat. 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 2019_03_01

Další informace o službě Azure Stack Hub a profilech rozhraní API najdete v tématu Souhrn profilů rozhraní API.

Předplatné

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

Instanční objekt

Instanční objekt a jeho přidružené informace o prostředí by se měly někde vytvořit a uložit. Doporučuje se instanční objekt s owner rolí, ale v závislosti na ukázce 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 spuštěné ukázce se nedají použít všechny tyto hodnoty. Aktualizovaný vzorový kód nebo další informace najdete v ukázkovém úložišti .

ID tenanta

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

Registrace poskytovatelů prostředků

Podle pokynů v tomto dokumentu zaregistrujte požadované poskytovatele prostředků. Tito poskytovatelé prostředků budou vyžadováni v závislosti na ukázkách, které chcete spustit. Pokud například chcete spustit ukázku virtuálního počítače, vyžaduje se Microsoft.Compute registrace poskytovatele prostředků.

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 rámci jedné operace. Informace o metadatech můžete získat z koncového bodu Resource Manager. 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 plně kvalifikovaný název domény.
  • Načtení požadovaných metadat: <ResourceManagerUrl>/metadata/endpoints?api-version=1.0. Dostupné verze rozhraní API najdete v tématu Specifikace rozhraní Azure Rest API. Například ve 2020-09-01 verzi profilu můžete změnit api-version na 2019-10-01 pro poskytovatele microsoft.resourcesprostředků .

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 důvěřovat kořenovému certifikátu certifikační autority na vzdáleném počítači. Kořenový certifikát certifikační autority nemusíte důvěřovat integrovaným systémům Služby Azure Stack Hub.

Windows

  1. Exportujte certifikát služby Azure Stack Hub podepsaný svým držitelem na plochu.

  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 Službu Azure Stack Hub. Tento profil použijte k tomu, aby služby byly nejkompatibilně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 Službu Azure Stack Hub. Tento profil použijte k tomu, aby služby byly kompatibilní se službou Azure Stack Hub verze 1808 nebo novější.

  • com.microsoft.azure: Profil sestávající z nejnovějších verzí všech služeb. Používejte nejnovější verze všech služeb.

Další informace o službě Azure Stack Hub a profilech rozhraní API najdete v tématu Souhrn profilů rozhraní API.

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

Následující kód ověří 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 volání, které je provedeno:

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 testování jednotek

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

    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 PowerShell 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 z instančního objektu, 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 místo exportuset.

  5. Pomocí funkce getActiveDirectorySettings načtěte koncové body metadat Azure Resource Manager.

    // Get Azure Stack Hub cloud endpoints
    final HashMap<String, String> settings = getActiveDirectorySettings(armEndpoint);
    
  6. Do Pom.xml souboru 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. Na příkazovém řádku, který byl otevřen pro nastavení proměnných prostředí, zadejte následující příkaz:

    mvn clean compile exec:java
    

Ukázky

Ukázkový kód aktualizace k datu (sledování 2) najdete v tomto ukázkovém úložišti . V tomto ukázkovém úložišti najdete ukázkový kód track 1. Kořen README.md popisuje obecné požadavky a každý podadresář obsahuje konkrétní ukázku s vlastní README.md ukázkou, jak ji spustit.

Ukázku použitelnou pro verzi 2008 nebo profil 2019-03-01 služby Azure Stack najdete tady a níže.

Další kroky

Další informace o profilech rozhraní API: