Delen via


API-versieprofielen gebruiken met Java in Azure Stack Hub

Belangrijk

De Java SDK is bijgewerkt van track 1 naar track 2. U wordt aangeraden zo snel mogelijk naar de track 2 SDK te migreren. Zie deze migratiehandleiding voor instructies.

De Java SDK voor Azure Stack Hub Resource Manager biedt hulpprogramma's waarmee u uw infrastructuur kunt bouwen en beheren. Resourceproviders in de SDK omvatten rekenkracht, netwerken, opslag, app-services en Azure Key Vault. U kunt de Hybrid Java Samples repository op GitHub vinden. Dit artikel helpt u bij het instellen van uw omgeving, het ophalen van de juiste referenties, het ophalen van de opslagplaats en het maken van een resourcegroep in Azure Stack Hub.

Het gebruik van de Java SDK maakt een echte hybride cloudontwikkelaarservaring mogelijk. Door de versieafhankelijkheden in de POM.xml Java SDK over te schakelen, kunt u hybride cloudontwikkeling inschakelen door te schakelen tussen wereldwijde Azure-resources naar resources in Azure Stack Hub.

Als u de nieuwste versie van de services wilt gebruiken, gebruikt u het meest recente profiel als afhankelijkheid.

U kunt uw app richten op resources in Azure tack Hub door uw bestaande afhankelijkheid com.azure.resourcemanager te nemen en de versie te wijzigen van x.y.z naar x.y.z-hybrid. De hybride pakketten, die ondersteuning bieden voor Azure Stack Hub, gebruiken een -hybrid achtervoegsel aan het einde van de versie, bijvoorbeeld 1.0.0-hybrid. Dit verwijst naar een statische verzameling eindpunten die aan de versie zijn gekoppeld.

Als u het meest recente profiel wilt ophalen, neemt u de bestaande afhankelijkheid com.azure.resourcemanager op en wijzigt u de versie naar laatste. De nieuwste Java-pakketten voor profielen bieden een consistente ervaring met Azure. De pakketten delen dezelfde groeps-id als Azure com.azure.resourcemanager. De artefact-id en naamruimten zijn ook hetzelfde als globale Azure. Dit helpt bij het overzetten van uw Azure-app naar Azure Stack Hub. Zie de samenvatting van API-profielen voor meer informatie over de eindpunten die in Azure Stack Hub worden gebruikt als par van het hybride profiel.

Het profiel wordt opgegeven in het pom.xml bestand in het Maven-project als een afhankelijkheid. Het profiel laadt modules automatisch als u de juiste klasse kiest in de vervolgkeuzelijst (net als bij .NET).

Uw ontwikkelomgeving instellen

Als u uw omgeving wilt voorbereiden voor het uitvoeren van de SDK, kunt u een IDE zoals Eclipse of Visual Studio Code gebruiken, maar u moet Git, de Java SDK en Apache Maven installeren. Meer informatie over de vereisten voor het instellen van uw ontwikkelomgeving vindt u in De Azure SDK voor Java gebruiken

  1. Installeer Git. U vindt de officiële instructies voor het installeren van Git bij Aan de slag - Git installeren.

  2. Installeer de Java SDK en stel uw JAVA_HOME omgevingsvariabele in op de locatie van de binaire bestanden voor Java Development Kit. U vindt de downloadbare installatiemedia-instructies voor de OpenJDK. Installeer versie 8 of hoger van de Java Developer Kit.

  3. Installeer Apache Maven. U vindt instructies in het Apache Maven-project. Installeer Apache Maven versie 3.0 of hoger.

Java- en API-versieprofielen

Als u de nieuwste versies van alle services wilt gebruiken, gebruikt u het meest recente profiel als de afhankelijkheid.

  • Als u het meest recente profiel wilt gebruiken, is de afhankelijkheid com.microsoft.azure.

  • Als u de meest recente ondersteunde services wilt gebruiken die beschikbaar zijn in Azure Stack Hub, gebruikt u het com.microsoft.azure.profile_2019_03_01_hybrid-profiel .

    • Het profiel wordt in het Pom.xml-bestand opgegeven als een afhankelijkheid, waarmee modules automatisch worden geladen als u de juiste klasse in de vervolgkeuzelijst kiest (net als bij .NET).
  • Afhankelijkheden worden als volgt weergegeven:

    <dependency>
    <groupId>com.microsoft.azure.profile_2019_03_01_hybrid</groupId>
    <artifactId>azure</artifactId>
    <version>1.0.0-beta-1</version>
    </dependency>
    
  • Als u specifieke API-versies wilt gebruiken voor een resourcetype in een specifieke resourceprovider, gebruikt u de specifieke API-versies die zijn gedefinieerd via IntelliSense.

U kunt alle opties in dezelfde app combineren.

De Azure Java SDK installeren

Volg deze stappen om de Java SDK te installeren:

  1. Volg de officiële instructies om Git te installeren. Zie Aan de slag - Git installeren.

  2. Volg de instructies voor het installeren van de Java SDK en Maven. De juiste versie is versie 8 van de Java Developer Kit. De juiste versie van Apache Maven is 3.0 of hoger. Om de quickstart te voltooien, moet de JAVA_HOME omgevingsvariabele worden ingesteld op de installatielocatie van de Java Development Kit. Zie Uw eerste functie maken met Java en Maven voor meer informatie.

  3. Als u de juiste afhankelijkheidspakketten wilt installeren, opent u het Pom.xml-bestand in uw Java-app. Voeg een afhankelijkheid toe, zoals wordt weergegeven in de volgende code:

    <dependency>
    <groupId>com.microsoft.azure.profile_2019_03_01_hybrid</groupId>
    <artifactId>azure</artifactId>
    <version>1.0.0-beta-1</version>
    </dependency>
    
  4. De set pakketten die moeten worden geïnstalleerd, is afhankelijk van de profielversie die u wilt gebruiken. De pakketnamen voor de profielversies zijn:

    • com.microsoft.azure.profile_2019_03_01_hybrid
    • com.microsoft.azure
      • laatst

Profielen

Als u voor profielen met datums een ander SDK-profiel of een andere versie wilt gebruiken, vervangt u de datum in com.microsoft.azure.profile<date>_hybrid. Voor de versie van 2008 is het profiel bijvoorbeeld 2019_03_01, en de tekenreeks wordt com.microsoft.azure.profile_2019_03_01_hybrid. Houd er rekening mee dat het SDK-team soms de naam van de pakketten wijzigt, dus het vervangen van de datum van een tekenreeks met een andere datum werkt mogelijk niet. Zie de volgende tabel voor het koppelen van profielen en Azure Stack-versies.

Azure Stack-versie Profiel
2311 01-09-2020
2301 01-09-2020
2206 01-09-2020
2108 01-09-2020
2102 01-09-2020
2008 01-03-2019

Zie de samenvatting van API-profielen voor meer informatie over Azure Stack Hub- en API-profielen.

Abonnement

Als u nog geen abonnement hebt, maakt u een abonnement en slaat u de abonnements-id op die later moet worden gebruikt. Zie dit document voor meer informatie over het maken van een abonnement.

Service-principal

Een service-principal en de bijbehorende omgevingsgegevens moeten ergens worden gemaakt en opgeslagen. Service-principal met owner rol wordt aanbevolen, maar afhankelijk van het voorbeeld kan een contributor rol voldoende zijn. Raadpleeg het README-bestand in de voorbeeldenrepo voor de vereiste waarden. U kunt deze waarden lezen in elke indeling die wordt ondersteund door de SDK-taal, zoals uit een JSON-bestand (die in onze voorbeelden wordt gebruikt). Afhankelijk van het voorbeeld dat wordt uitgevoerd, kunnen niet al deze waarden worden gebruikt. Zie de voorbeeldopslagplaats voor bijgewerkte voorbeeldcode of meer informatie.

Huurder-ID

Volg de instructies in dit artikel om de map- of tenant-id voor uw Azure Stack Hub te vinden.

De leveranciers van bronnen registreren

Registreer de vereiste resourceproviders door dit document te volgen. Deze resourceproviders zijn vereist, afhankelijk van de voorbeelden die u wilt uitvoeren. Als u bijvoorbeeld een VM-voorbeeld wilt uitvoeren, is de registratie van de Microsoft.Compute resourceprovider vereist.

Azure Stack Resource Manager-eindpunt

Azure Resource Manager (ARM) is een beheerframework waarmee beheerders Azure-resources kunnen implementeren, beheren en bewaken. Azure Resource Manager kan deze taken verwerken als een groep in plaats van afzonderlijk, in één bewerking. U kunt de metagegevensgegevens ophalen uit het Resource Manager-eindpunt. Het eindpunt retourneert een JSON-bestand met de informatie die nodig is om uw code uit te voeren.

  • De ResourceManagerEndpointUrl in de Azure Stack Development Kit (ASDK) is als volgt: https://management.local.azurestack.external/.
  • De ResourceManagerEndpointUrl in geïntegreerde systemen is: https://management.region.<fqdn>/, waar <fqdn> is uw volledig gekwalificeerde domeinnaam.
  • De vereiste metagegevens ophalen: <ResourceManagerUrl>/metadata/endpoints?api-version=1.0. Zie Azure REST API-specificaties voor beschikbare API-versies. Bijvoorbeeld, in de profielversie kunt u de 2020-09-01 wijzigen naar api-version voor de resourceprovider 2019-10-01.

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

Het CA-basiscertificaat van Azure Stack Hub vertrouwen

Als u de Azure Stack Development Kit (ASDK) gebruikt, moet u het CA-basiscertificaat vertrouwen op uw externe computer. U hoeft het CA-basiscertificaat niet te vertrouwen met geïntegreerde Azure Stack Hub-systemen.

Ramen

  1. Exporteer het zelfondertekende Certificaat van Azure Stack Hub naar uw bureaublad.

  2. Wijzig de map in een opdrachtprompt in %JAVA_HOME%\bin.

  3. Voer de volgende opdracht uit:

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

Bestaande API-profielen

  • com.microsoft.azure.profile_2019_03_01_hybrid: Het meest recente profiel dat is gebouwd voor Azure Stack Hub. Gebruik dit profiel voor diensten voor maximale compatibiliteit met Azure Stack Hub, zolang u versie 1904 of hoger gebruikt.

  • com.microsoft.azure.profile_2018_03_01_hybrid: Profiel gebouwd voor Azure Stack Hub. Gebruik dit profiel voor services om compatibel te zijn met Azure Stack Hub-versies 1808 of hoger.

  • com.microsoft.azure: Profiel bestaande uit de nieuwste versies van alle services. Gebruik de nieuwste versies van alle services.

Zie de samenvatting van API-profielen voor meer informatie over Azure Stack Hub- en API-profielen.

Gebruik van Api-profiel voor Azure Java SDK

Met de volgende code wordt de service-principal in Azure Stack Hub geverifieerd. Er wordt een token gemaakt met behulp van de tenant-id en de verificatiebasis, die specifiek is voor 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());

Met deze code kunt u de API-profielafhankelijkheden gebruiken om uw app te implementeren in Azure Stack Hub.

Azure Stack Hub-omgevingsinstellingsfuncties definiëren

Als u de Azure Stack Hub-cloud wilt registreren met de juiste eindpunten, gebruikt u de volgende code:

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

Met getActiveDirectorySettings de aanroep in de vorige code worden de eindpunten opgehaald uit de metagegevenseindpunten. Hiermee worden de omgevingsvariabelen van de aanroep vermeld die wordt gemaakt:

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

Voorbeeldproject voor eenheidstesten

  1. Kloon de opslagplaats met behulp van de volgende opdracht:

    git clone https://github.com/Azure-Samples/Hybrid-Java-Samples.git -b resourcegroup-2019-03-01-hybrid
    
  2. Maak een Azure-service-principal en wijs een rol toe om toegang te krijgen tot het abonnement. Zie Azure PowerShell gebruiken om een service-principal met een certificaat te maken voor instructies voor het maken van een service-principal.

  3. Haal de volgende vereiste omgevingsvariabelen op:

    • AZURE_TENANT_ID
    • AZURE_CLIENT_ID
    • AZURE_CLIENT_SECRET
    • AZURE_SUBSCRIPTION_ID
    • ARM_ENDPOINT
    • RESOURCE_LOCATION
  4. Stel de volgende omgevingsvariabelen in met behulp van de informatie die u hebt opgehaald uit de service-principal die u hebt gemaakt met behulp van de opdrachtprompt:

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

    Gebruik in Windows set in plaats van exporteren.

  5. Gebruik de getActiveDirectorySettings functie om de Azure Resource Manager-metagegevenseindpunten op te halen.

    // Get Azure Stack Hub cloud endpoints
    final HashMap<String, String> settings = getActiveDirectorySettings(armEndpoint);
    
  6. Voeg in het Pom.xmlbestand de volgende dependency toe om het 2019-03-01-hybridprofiel voor Azure Stack Hub te gebruiken. Deze afhankelijkheid installeert de modules die aan dit profiel zijn gekoppeld voor de resourceproviders Compute, Networking, Storage, Key Vault en 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. Voer in de opdrachtprompt die is geopend om de omgevingsvariabelen in te stellen de volgende opdracht in:

    mvn clean compile exec:java
    

Voorbeelden

Zie deze voorbeeldopslagplaats voor voorbeeldcode voor update-to-date (track 2). Zie deze voorbeeldopslagplaats voor het bijhouden van 1 voorbeeldcode. In de hoofdmap README.md worden algemene vereisten beschreven en elke submap bevat een specifiek voorbeeld met README.md eigen instructies voor het uitvoeren van dat voorbeeld.

Zie hier voor het voorbeeld dat van toepassing is op azure Stack-versie 2008 of -profiel 2019-03-01 en hieronder.

Volgende stappen

Meer informatie over API-profielen: