Dela via


Använda API-versionsprofiler med Java i Azure Stack Hub

Viktigt

Java SDK har uppdaterats från spår 1 till spår 2. Vi rekommenderar att du migrerar till spår 2 SDK så snart som möjligt. Anvisningar finns i den här migreringsguiden.

Java SDK för Azure Stack Hub-Resource Manager innehåller verktyg som hjälper dig att skapa och hantera din infrastruktur. Resursprovidrar i SDK:n omfattar beräkning, nätverk, lagring, apptjänster och Azure Key Vault. Du hittar lagringsplatsen För Java-hybridexempel på GitHub. Den här artikeln hjälper dig att konfigurera din miljö, hämta rätt autentiseringsuppgifter, hämta lagringsplatsen och skapa en resursgrupp i Azure Stack Hub.

Användning av Java SDK möjliggör en sann hybridmolnutvecklarupplevelse. Genom att byta versionsberoenden i POM.xml i Java SDK kan du utveckla hybridmoln genom att hjälpa dig att växla mellan globala Azure-resurser till resurser i Azure Stack Hub.

Om du vill använda den senaste versionen av tjänsterna använder du den senaste profilen som beroende.

Du kan rikta din app till resurs i Azure Tack Hub genom att ta ditt befintliga com.azure.resourcemanager-beroende och ändra versionen från x.y.z till x.y.z-hybrid. Hybridpaketen, som ger stöd för Azure Stack Hub, använder ett -hybrid suffix i slutet av versionen, 1.0.0-hybridtill exempel . Detta pekar på en statisk samling slutpunkter som är associerade med versionen.

Hämta den senaste profilen genom att ta ditt befintliga com.azure.resourcemanager-beroende och ändra versionen till den senaste. De senaste Java-profilpaketen ger en konsekvent upplevelse med Azure. Paketen delar samma grupp-ID som Azure com.azure.resourcemanager. Artefakt-ID och namnrymder är också samma som globala Azure. Detta hjälper dig att portera din Azure-app till Azure Stack Hub. Mer information om de slutpunkter som används i Azure Stack Hub som par för hybridprofilen finns i Sammanfattning av API-profiler.

Profilen anges i pom.xml filen i Maven-projektet som ett beroende. Profilen läser in moduler automatiskt om du väljer rätt klass i listrutan (som med .NET).

Ställt in din utvecklingsmiljö

För att förbereda din miljö för att köra SDK:t kan du använda en IDE som Eclipse eller Visual Studio Code, men du måste ha Git, Java SDK och Apache Maven installerat. Du hittar information om förutsättningarna för att konfigurera din utvecklingsmiljö i Använda Azure SDK för Java

  1. Installera Git. Du hittar de officiella instruktionerna för att installera Git på Komma igång – Installera Git.

  2. Installera Java SDK och ange JAVA_HOME miljövariabeln till platsen för binärfilerna för Java Development Kit. Du hittar de nedladdningsbara installationsmedieinstruktionerna för OpenJDK. Installera version 8 eller senare av Java Developer Kit.

  3. Installera Apache Maven. Du hittar instruktioner i Apache Maven-projektet. Installera Apache Maven är 3.0 eller senare.

Versionsprofiler för Java och API

Om du vill använda de senaste versionerna av alla tjänster använder du den senaste profilen som beroende.

  • Om du vill använda den senaste profilen är beroendet com.microsoft.azure.

  • Om du vill använda de senaste tjänsterna som stöds i Azure Stack Hub använder du profilen com.microsoft.azure.profile_2019_03_01_hybrid .

    • Profilen anges i denPom.xml filen som ett beroende, som läser in moduler automatiskt om du väljer rätt klass i listrutan (precis som med .NET).
  • Beroenden visas på följande sätt:

    <dependency>
    <groupId>com.microsoft.azure.profile_2019_03_01_hybrid</groupId>
    <artifactId>azure</artifactId>
    <version>1.0.0-beta-1</version>
    </dependency>
    
  • Om du vill använda specifika API-versioner för en resurstyp i en specifik resursprovider använder du de specifika API-versioner som definierats via IntelliSense.

Du kan kombinera alla alternativ i samma app.

Installera Azure Java SDK

Följ dessa steg för att installera Java SDK:

  1. Följ de officiella anvisningarna för att installera Git. Se Komma igång – Installera Git.

  2. Följ anvisningarna för att installera Java SDK och Maven. Rätt version är version 8 av Java Developer Kit. Rätt version av Apache Maven är 3.0 eller senare. För att slutföra snabbstarten JAVA_HOME måste miljövariabeln anges till installationsplatsen för Java Development Kit. Mer information finns i Skapa din första funktion med Java och Maven.

  3. Om du vill installera rätt beroendepaket öppnar du filenPom.xml i Java-appen. Lägg till ett beroende enligt följande kod:

    <dependency>
    <groupId>com.microsoft.azure.profile_2019_03_01_hybrid</groupId>
    <artifactId>azure</artifactId>
    <version>1.0.0-beta-1</version>
    </dependency>
    
  4. Vilken uppsättning paket som måste installeras beror på vilken profilversion du vill använda. Paketnamnen för profilversionerna är:

    • com.microsoft.azure.profile_2019_03_01_hybrid
    • com.microsoft.azure
      • senaste

Profiler

För profiler som innehåller datum ersätter du datumet i com.microsoft.azure.profile<date>_hybridom du vill använda en annan SDK-profil eller -version. För 2008-versionen är 2019_03_01till exempel profilen och strängen blir com.microsoft.azure.profile_2019_03_01_hybrid. Observera att SDK-teamet ibland ändrar namnet på paketen, så att helt enkelt ersätta datumet för en sträng med ett annat datum kanske inte fungerar. Se följande tabell för association av profiler och Azure Stack-versioner.

Azure Stack-version 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

Mer information om Azure Stack Hub- och API-profiler finns i Sammanfattning av API-profiler.

Prenumeration

Om du inte redan har en prenumeration skapar du en prenumeration och sparar prenumerations-ID:t som ska användas senare. Information om hur du skapar en prenumeration finns i det här dokumentet.

Tjänstens huvudnamn

Ett huvudnamn för tjänsten och dess associerade miljöinformation bör skapas och sparas någonstans. Tjänstens huvudnamn med owner roll rekommenderas, men beroende på exemplet kan en contributor roll räcka. Referera till README i exempellagringsplatsen för de värden som krävs. Du kan läsa dessa värden i valfritt format som stöds av SDK-språket, till exempel från en JSON-fil (som våra exempel använder). Beroende på vilket exempel som körs kan inte alla dessa värden användas. Se exempellagringsplatsen för uppdaterad exempelkod eller ytterligare information.

Klientorganisations-ID

Följ anvisningarna i den här artikeln om du vill hitta katalogen eller klientorganisations-ID:t för din Azure Stack Hub.

Registrera resursprovidrar

Registrera nödvändiga resursprovidrar genom att följa det här dokumentet. Dessa resursprovidrar krävs beroende på vilka exempel du vill köra. Om du till exempel vill köra ett virtuellt datorexempel krävs registreringen av resursprovidern Microsoft.Compute .

Azure Stack Resource Manager-slutpunkt

Azure Resource Manager (ARM) är ett hanteringsramverk som gör det möjligt för administratörer att distribuera, hantera och övervaka Azure-resurser. Azure Resource Manager kan hantera dessa uppgifter som en grupp, snarare än individuellt, i en enda åtgärd. Du kan hämta metadatainformationen från Resource Manager slutpunkten. Slutpunkten returnerar en JSON-fil med den information som krävs för att köra koden.

  • ResourceManagerEndpointUrl i Azure Stack Development Kit (ASDK) är: https://management.local.azurestack.external/.
  • ResourceManagerEndpointUrl i integrerade system är: https://management.region.<fqdn>/, där <fqdn> är ditt fullständigt kvalificerade domännamn.
  • Så här hämtar du de metadata som krävs: <ResourceManagerUrl>/metadata/endpoints?api-version=1.0. Tillgängliga API-versioner finns i Specifikationer för Rest API i Azure. I profilversion kan du t.ex 2020-09-01 . ändra api-version till 2019-10-01 för resursprovidern microsoft.resources.

Exempel på 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"]
      }
}

Lita på Azure Stack Hub CA-rotcertifikatet

Om du använder Azure Stack Development Kit (ASDK) måste du lita på CA-rotcertifikatet på fjärrdatorn. Du behöver inte lita på CA-rotcertifikatet med Azure Stack Hub-integrerade system.

Windows

  1. Exportera det självsignerade Azure Stack Hub-certifikatet till skrivbordet.

  2. I en kommandotolk ändrar du katalogen till %JAVA_HOME%\bin.

  3. Kör följande kommando:

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

Befintliga API-profiler

  • com.microsoft.azure.profile_2019_03_01_hybrid: Senaste profilen som skapats för Azure Stack Hub. Använd den här profilen för att tjänster ska vara mest kompatibla med Azure Stack Hub, så länge du är på 1904 eller senare.

  • com.microsoft.azure.profile_2018_03_01_hybrid: Profil som skapats för Azure Stack Hub. Använd den här profilen för att tjänster ska vara kompatibla med Azure Stack Hub version 1808 eller senare.

  • com.microsoft.azure: Profil som består av de senaste versionerna av alla tjänster. Använd de senaste versionerna av alla tjänster.

Mer information om Azure Stack Hub- och API-profiler finns i Sammanfattning av API-profiler.

Api-profilanvändning för Azure Java SDK

Följande kod autentiserar tjänstens huvudnamn på Azure Stack Hub. Den skapar en token med klient-ID:t och autentiseringsbasen, som är specifik för 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());

Med den här koden kan du använda API-profilberoendena för att distribuera appen till Azure Stack Hub.

Definiera miljöinställningsfunktioner för Azure Stack Hub

Om du vill registrera Azure Stack Hub-molnet med rätt slutpunkter använder du följande kod:

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

Anropet getActiveDirectorySettings i föregående kod hämtar slutpunkterna från metadataslutpunkterna. Den anger miljövariablerna från anropet som görs:

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

Exempel på enhetstestprojekt

  1. Klona lagringsplatsen med följande kommando:

    git clone https://github.com/Azure-Samples/Hybrid-Java-Samples.git -b resourcegroup-2019-03-01-hybrid
    
  2. Skapa ett Huvudnamn för Azure-tjänsten och tilldela en roll för åtkomst till prenumerationen. Anvisningar om hur du skapar ett huvudnamn för tjänsten finns i Använda Azure PowerShell för att skapa ett huvudnamn för tjänsten med ett certifikat.

  3. Hämta följande obligatoriska miljövariabler:

    • AZURE_TENANT_ID
    • AZURE_CLIENT_ID
    • AZURE_CLIENT_SECRET
    • AZURE_SUBSCRIPTION_ID
    • ARM_ENDPOINT
    • RESOURCE_LOCATION
  4. Ange följande miljövariabler med hjälp av informationen som hämtats från tjänstens huvudnamn som du skapade med kommandotolken:

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

    I Windows använder du set i stället för export.

  5. getActiveDirectorySettings Använd funktionen för att hämta Slutpunkter för Azure-Resource Manager metadata.

    // Get Azure Stack Hub cloud endpoints
    final HashMap<String, String> settings = getActiveDirectorySettings(armEndpoint);
    
  6. I filenPom.xml lägger du till följande beroende för att använda hybridprofilen 2019-03-01 för Azure Stack Hub. Det här beroendet installerar de moduler som är associerade med den här profilen för resursprovidrar för beräkning, nätverk, lagring, Key Vault och 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. I kommandotolken som var öppen för att ange miljövariablerna anger du följande kommando:

    mvn clean compile exec:java
    

Exempel

Se den här exempellagringsplatsen för uppdatering till datum (spår 2) exempelkod. Se den här exempellagringsplatsen för att spåra 1 exempelkod. Roten README.md beskriver allmänna krav, och varje underkatalog innehåller ett specifikt exempel med egen README.md information om hur du kör exemplet.

Se här för exemplet som gäller för Azure Stack-version 2008 eller -profil 2019-03-01 och nedan.

Nästa steg

Läs mer om API-profiler: