Freigeben über


Verwenden von API-Versionsprofilen mit Java im Azure Stack Hub

Von Bedeutung

Das Java SDK wurde von Track 1 auf Track 2 aktualisiert. Es wird empfohlen, so bald wie möglich zum Track 2 SDK zu migrieren. Anweisungen finden Sie in diesem Migrationshandbuch.

Das Java SDK für den Azure Stack Hub Resource Manager bietet Tools, mit denen Sie Ihre Infrastruktur erstellen und verwalten können. Ressourcenanbieter im SDK umfassen Compute, Netzwerk, Speicher, App-Dienste und Azure Key Vault. Sie finden das Repository für Hybrid-Java-Beispiele auf GitHub. In diesem Artikel können Sie Ihre Umgebung einrichten, die richtigen Anmeldeinformationen abrufen, das Repository abrufen und eine Ressourcengruppe in Azure Stack Hub erstellen.

Die Verwendung des Java SDK ermöglicht eine echte Hybrid-Cloud-Entwicklerumgebung. Das Wechseln der Versionsabhängigkeiten im POM.xml Java SDK ermöglicht die Hybrid-Cloudentwicklung, indem Sie zwischen globalen Azure-Ressourcen zu Ressourcen im Azure Stack Hub wechseln.

Um die neueste Version der Dienste zu verwenden, verwenden Sie das neueste Profil als Abhängigkeit.

Sie können Ihre App auf Ressourcen in Azure tack Hub ausrichten, indem Sie Ihre vorhandene com.azure.resourcemanager-Abhängigkeit übernehmen und die Version von "in x.y.z " x.y.z-hybridändern. Die Hybridpakete, die Unterstützung für Azure Stack Hub bieten, verwenden ein -hybrid Suffix am Ende der Version, 1.0.0-hybridz. B. . . Dies verweist auf eine statische Auflistung von Endpunkten, die der Version zugeordnet sind.

Um das neueste Profil zu erhalten, nehmen Sie Ihre vorhandene com.azure.resourcemanager-Abhängigkeit ein, und ändern Sie die Version auf die neueste Version. Die neuesten Profil-Java-Pakete bieten eine konsistente Erfahrung mit Azure. Die Pakete verwenden dieselbe Gruppen-ID wie Azure com.azure.resourcemanager. Die Artefakt-ID und Namespaces sind auch die gleichen wie globale Azure. Dies hilft beim Portieren Ihrer Azure-App zu Azure Stack Hub. Weitere Informationen zu den endpunkten, die im Azure Stack Hub als Analyse des Hybridprofils verwendet werden, finden Sie in der Zusammenfassung der API-Profile.

Das Profil wird in der pom.xml Datei im Maven-Projekt als Abhängigkeit angegeben. Das Profil lädt Module automatisch, wenn Sie die richtige Klasse aus der Dropdownliste (wie bei .NET) auswählen.

Einrichten Ihrer Entwicklungsumgebung

Um Ihre Umgebung für die Ausführung des SDK vorzubereiten, können Sie eine IDE wie Eclipse oder Visual Studio Code verwenden, aber Sie müssen Git, das Java SDK und Apache Maven installiert haben. Details zu den Voraussetzungen für die Einrichtung Ihrer Entwicklungsumgebung finden Sie unter Verwendung des Azure SDK für Java

  1. Installieren Sie Git. Sie finden die offiziellen Anweisungen zum Installieren von Git bei Den ersten Schritten – Installieren von Git.

  2. Installieren Sie das Java SDK, und legen Sie die JAVA_HOME Umgebungsvariable auf den Speicherort der Binärdateien für Java Development Kit fest. Sie finden die herunterladbaren Installationsmedienanweisungen für das OpenJDK. Installieren Sie Version 8 oder höher des Java Developer Kit.

  3. Installieren Sie Apache Maven. Anweisungen finden Sie im Apache Maven Project. Installieren Sie Apache Maven ist 3.0 oder höher.

Java- und API-Versionsprofile

Um die neuesten Versionen aller Dienste zu verwenden, verwenden Sie das neueste Profil als Abhängigkeit.

  • Um das neueste Profil zu verwenden, lautet die Abhängigkeit "com.microsoft.azure".

  • Um die neuesten unterstützten Dienste zu verwenden, die in Azure Stack Hub verfügbar sind, verwenden Sie das com.microsoft.azure.profile_2019_03_01_hybrid Profil.

    • Das Profil wird in der Pom.xml Datei als Abhängigkeit angegeben, wodurch Module automatisch geladen werden, wenn Sie die richtige Klasse aus der Dropdownliste auswählen (wie bei .NET).
  • Abhängigkeiten werden wie folgt angezeigt:

    <dependency>
    <groupId>com.microsoft.azure.profile_2019_03_01_hybrid</groupId>
    <artifactId>azure</artifactId>
    <version>1.0.0-beta-1</version>
    </dependency>
    
  • Um bestimmte API-Versionen für einen Ressourcentyp in einem bestimmten Ressourcenanbieter zu verwenden, verwenden Sie die spezifischen API-Versionen, die über IntelliSense definiert sind.

Sie können alle Optionen in derselben App kombinieren.

Installieren des Azure Java SDK

Führen Sie die folgenden Schritte aus, um das Java SDK zu installieren:

  1. Befolgen Sie die offiziellen Anweisungen, um Git zu installieren. Weitere Informationen finden Sie unter "Erste Schritte" – Installieren von Git.

  2. Befolgen Sie die Anweisungen zum Installieren des Java SDK und Maven. Die richtige Version ist Version 8 des Java Developer Kit. Die richtige Version von Apache Maven ist 3.0 oder höher. Um die Schnellstartanleitung abzuschließen, muss die JAVA_HOME Umgebungsvariable auf den Installationsspeicherort des Java Development Kit festgelegt werden. Weitere Informationen finden Sie unter Erstellen Ihrer ersten Funktion mit Java und Maven.

  3. Um die richtigen Abhängigkeitspakete zu installieren, öffnen Sie die Pom.xml Datei in Ihrer Java-App. Fügen Sie eine Abhängigkeit hinzu, wie im folgenden Code gezeigt:

    <dependency>
    <groupId>com.microsoft.azure.profile_2019_03_01_hybrid</groupId>
    <artifactId>azure</artifactId>
    <version>1.0.0-beta-1</version>
    </dependency>
    
  4. Der Satz von Paketen, die installiert werden müssen, hängt von der Profilversion ab, die Sie verwenden möchten. Die Paketnamen für die Profilversionen sind:

    • com.microsoft.azure.profile_2019_03_01_hybrid
    • com.microsoft.azure
      • neueste

Profile

Wenn Profile, die Datumsangaben enthalten, ein anderes SDK-Profil oder eine andere Version verwenden möchten, ersetzen Sie das Datum in com.microsoft.azure.profile<date>_hybrid. For example, for the 2008 version, the profile is 2019_03_01, and the string is com.microsoft.azure.profile_2019_03_01_hybrid. Beachten Sie, dass das SDK-Team manchmal den Namen der Pakete ändert, sodass das Ersetzen des Datums einer Zeichenfolge durch ein anderes Datum möglicherweise nicht funktioniert. In der folgenden Tabelle finden Sie die Zuordnung von Profilen und Azure Stack-Versionen.

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

Weitere Informationen zu Azure Stack Hub- und API-Profilen finden Sie in der Zusammenfassung der API-Profile.

Abonnement

Wenn Sie noch nicht über ein Abonnement verfügen, erstellen Sie ein Abonnement, und speichern Sie die Abonnement-ID, die später verwendet werden soll. Informationen zum Erstellen eines Abonnements finden Sie in diesem Dokument.

Service Principal

Ein Dienstprinzipal und die zugehörigen Umgebungsinformationen sollten an einer beliebigen Stelle erstellt und gespeichert werden. Dienstprinzipal mit owner Rolle wird empfohlen, aber je nach Beispiel kann eine contributor Rolle ausreichen. Weitere Informationen finden Sie in der INFODATEI im Beispiel-Repository für die erforderlichen Werte. Sie können diese Werte in jedem Format lesen, das von der SDK-Sprache unterstützt wird, z. B. aus einer JSON-Datei (die unsere Beispiele verwenden). Je nachdem, wie das Beispiel ausgeführt wird, können nicht alle diese Werte verwendet werden. Weitere Informationen finden Sie im Beispiel-Repository für aktualisierte Beispielcode oder weitere Informationen.

Mieter-ID

Um das Verzeichnis oder die Mandanten-ID für Ihren Azure Stack Hub zu finden, befolgen Sie die Anweisungen in diesem Artikel.

Registrieren von Ressourcenanbietern

Registrieren Sie die erforderlichen Ressourcenanbieter, indem Sie diesem Dokument folgen. Diese Ressourcenanbieter sind abhängig von den Beispielen erforderlich, die Sie ausführen möchten. Wenn Sie beispielsweise ein VM-Beispiel ausführen möchten, ist die Registrierung des Microsoft.Compute Ressourcenanbieters erforderlich.

Azure Stack-Ressourcen-Manager-Endpunkt

Azure Resource Manager (ARM) ist ein Verwaltungsframework, mit dem Administratoren Azure-Ressourcen bereitstellen, verwalten und überwachen können. Azure Resource Manager kann diese Aufgaben als Gruppe und nicht einzeln in einem einzigen Vorgang verarbeiten. Sie können die Metadateninformationen vom Ressourcen-Manager-Endpunkt abrufen. Der Endpunkt gibt eine JSON-Datei mit den zum Ausführen des Codes erforderlichen Informationen zurück.

  • Der ResourceManagerEndpointUrl im Azure Stack Development Kit (ASDK) lautet: https://management.local.azurestack.external/.
  • Der ResourceManagerEndpointUrl in integrierten Systemen lautet: https://management.region.<fqdn>/, wo <fqdn> befindet sich Ihr vollqualifizierter Domänenname.
  • So rufen Sie die erforderlichen Metadaten ab: <ResourceManagerUrl>/metadata/endpoints?api-version=1.0. Verfügbare API-Versionen finden Sie unter Azure Rest API-Spezifikationen. In der 2020-09-01 Profilversion können Sie z. B. die Option für den api-version2019-10-01 Ressourcenanbieter microsoft.resourcesändern.

JSON-Beispiel:

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

Vertrauen Sie dem Stammzertifikat der Azure Stack Hub-Zertifizierungsstelle.

Wenn Sie das Azure Stack Development Kit (ASDK) verwenden, müssen Sie dem Stammzertifikat der Zertifizierungsstelle auf Ihrem Remotecomputer vertrauen. Sie müssen dem Stammzertifikat der Zertifizierungsstelle nicht vertrauen, indem Sie integrierte Azure Stack Hub-Systeme verwenden.

Fenster

  1. Exportieren Sie das selbstsignierte Azure Stack Hub-Zertifikat auf Ihren Desktop.

  2. Ändern Sie in einer Eingabeaufforderung das Verzeichnis in %JAVA_HOME%\bin.

  3. Führen Sie den folgenden Befehl aus:

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

Vorhandene API-Profile

  • com.microsoft.azure.profile_2019_03_01_hybrid: Neuestes Profil, das für Azure Stack Hub erstellt wurde. Verwenden Sie dieses Profil, damit Dienste mit Azure Stack Hub am besten kompatibel sind, solange Sie 1904 oder höher sind.

  • com.microsoft.azure.profile_2018_03_01_hybrid: Profil, das für Azure Stack Hub erstellt wurde. Verwenden Sie dieses Profil, damit Dienste mit Azure Stack Hub-Versionen 1808 oder höher kompatibel sind.

  • com.microsoft.azure: Profil, das aus den neuesten Versionen aller Dienste besteht. Verwenden Sie die neuesten Versionen aller Dienste.

Weitere Informationen zu Azure Stack Hub- und API-Profilen finden Sie in der Zusammenfassung der API-Profile.

Azure Java SDK-API-Profilverwendung

Der folgende Code authentifiziert den Dienstprinzipal im Azure Stack Hub. Es erstellt ein Token mit der Mandanten-ID und der Authentifizierungsbasis, die für Azure Stack Hub spezifisch ist:

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());

Mit diesem Code können Sie die API-Profilabhängigkeiten verwenden, um Ihre App erfolgreich auf Azure Stack Hub bereitzustellen.

Definieren von Einstellungsfunktionen für Azure Stack Hub-Umgebung

Verwenden Sie den folgenden Code, um die Azure Stack Hub-Cloud mit den richtigen Endpunkten zu registrieren:

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

Der getActiveDirectorySettings Aufruf im vorherigen Code ruft die Endpunkte aus den Metadatenendpunkten ab. Sie gibt die Umgebungsvariablen aus dem ausgeführten Aufruf an:

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

Beispiel-Komponententestprojekt

  1. Klonen Sie das Repository mit dem folgenden Befehl:

    git clone https://github.com/Azure-Samples/Hybrid-Java-Samples.git -b resourcegroup-2019-03-01-hybrid
    
  2. Erstellen Sie einen Azure-Dienstprinzipal, und weisen Sie eine Rolle für den Zugriff auf das Abonnement zu. Anweisungen zum Erstellen eines Dienstprinzipals finden Sie unter Verwenden von Azure PowerShell zum Erstellen eines Dienstprinzipals mit einem Zertifikat.

  3. Rufen Sie die folgenden erforderlichen Umgebungsvariablen ab:

    • AZURE_TENANT_ID
    • AZURE_CLIENT_ID
    • AZURE_CLIENT_SECRET
    • AZURE_SUBSCRIPTION_ID
    • ARM_ENDPOINT
    • RESOURCE_LOCATION
  4. Legen Sie die folgenden Umgebungsvariablen mithilfe der Informationen fest, die aus dem Dienstprinzipal abgerufen wurden, den Sie mithilfe der Eingabeaufforderung erstellt haben:

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

    Verwenden Sie in Windows "Set " anstelle des Exports.

  5. Verwenden Sie die getActiveDirectorySettings Funktion, um die Azure Resource Manager-Metadatenendpunkte abzurufen.

    // Get Azure Stack Hub cloud endpoints
    final HashMap<String, String> settings = getActiveDirectorySettings(armEndpoint);
    
  6. Fügen Sie in der dateiPom.xml die folgende Abhängigkeit hinzu, um das Hybridprofil 2019-03-01 für Azure Stack Hub zu verwenden. Diese Abhängigkeit installiert die Module, die diesem Profil zugeordnet sind, für die Ressourcenanbieter Compute, Networking, Storage, Key Vault und 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. Geben Sie in der Eingabeaufforderung, die geöffnet war, um die Umgebungsvariablen festzulegen, den folgenden Befehl ein:

    mvn clean compile exec:java
    

Beispiele

In diesem Beispiel-Repository finden Sie Beispielcode für update-to-date (Track 2). In diesem Beispiel-Repository finden Sie Beispielcode zum Nachverfolgen von 1. Der Stamm README.md beschreibt allgemeine Anforderungen, und jedes Unterverzeichnis enthält ein bestimmtes Beispiel mit eigenen README.md Informationen zum Ausführen dieses Beispiels.

Hier finden Sie das Beispiel, das für Azure Stack-Version 2008 oder -Profil 2019-03-01 und unten gilt.

Nächste Schritte

Weitere Informationen zu API-Profilen: