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-hybrid
till 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
Installera Git. Du hittar de officiella instruktionerna för att installera Git på Komma igång – Installera Git.
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.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:
Följ de officiella anvisningarna för att installera Git. Se Komma igång – Installera Git.
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.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>
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>_hybrid
om du vill använda en annan SDK-profil eller -version. För 2008-versionen är 2019_03_01
till 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.ex2020-09-01
. ändraapi-version
till2019-10-01
för resursprovidernmicrosoft.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
Exportera det självsignerade Azure Stack Hub-certifikatet till skrivbordet.
I en kommandotolk ändrar du katalogen till
%JAVA_HOME%\bin
.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
Klona lagringsplatsen med följande kommando:
git clone https://github.com/Azure-Samples/Hybrid-Java-Samples.git -b resourcegroup-2019-03-01-hybrid
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.
Hämta följande obligatoriska miljövariabler:
AZURE_TENANT_ID
AZURE_CLIENT_ID
AZURE_CLIENT_SECRET
AZURE_SUBSCRIPTION_ID
ARM_ENDPOINT
RESOURCE_LOCATION
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.
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);
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>
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: