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 te migreren naar de track 2 SDK. Zie deze migratiehandleiding voor instructies.
De Java SDK voor de Azure Stack Hub Resource Manager biedt hulpprogramma's waarmee u uw infrastructuur kunt bouwen en beheren. Resourceproviders in de SDK zijn onder andere compute, netwerken, opslag, app-services en Azure Key Vault. U vindt de opslagplaats voor hybride Java-voorbeelden op GitHub. 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. Het schakelen tussen versieafhankelijkheden in de POM.xml
in de Java SDK maakt hybride cloudontwikkeling mogelijk door u te helpen over te schakelen tussen globale 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 de afhankelijkheid.
U kunt uw app richten op resource in Azure Tack Hub door uw bestaande com.azure.resourcemanager-afhankelijkheid te nemen en de versie te wijzigen van x.y.z
in 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 zijn gekoppeld aan de versie.
Als u het meest recente profiel wilt ophalen, neemt u uw bestaande com.azure.resourcemanager-afhankelijkheid en wijzigt u de versie in nieuwste. De nieuwste Profiel Java-pakketten 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 Samenvatting van API-profielen voor meer informatie over de eindpunten die worden gebruikt in Azure Stack Hub als par van het hybride profiel.
Het profiel wordt in het pom.xml
bestand in het Maven-project opgegeven als een afhankelijkheid. Het profiel laadt modules automatisch als u de juiste klasse kiest in de vervolgkeuzelijst (net als bij .NET).
De ontwikkelomgeving instellen
Als u uw omgeving wilt voorbereiden op 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 hebben geïnstalleerd. Meer informatie over de vereisten voor het instellen van uw ontwikkelomgeving vindt u in De Azure SDK voor Java gebruiken
Installeer Git. U vindt de officiële instructies voor het installeren van Git op Aan de slag - Git installeren.
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.Installeer Apache Maven. U vindt instructies in het Apache Maven-project. Apache Maven installeren is 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 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 profiel com.microsoft.azure.profile_2019_03_01_hybrid .
- Het profiel wordt in het Pom.xml-bestand opgegeven als een afhankelijkheid, waardoor modules automatisch worden geladen als u de juiste klasse kiest in de vervolgkeuzelijst (zoals u zou doen met .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:
Volg de officiële instructies om Git te installeren. Zie Aan de slag - Git installeren.
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. Als u de quickstart wilt 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.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>
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
- meest recente
Profielen
Als u een ander SDK-profiel of -versie wilt gebruiken voor profielen die datums bevatten, vervangt u de datum in com.microsoft.azure.profile<date>_hybrid
. Voor versie 2008 is het profiel bijvoorbeeld , en wordt 2019_03_01
de tekenreeks 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 door een andere datum werkt mogelijk niet. Zie de volgende tabel voor het koppelen van profielen en Azure Stack-versies.
Azure Stack-versie | Profiel |
---|---|
2311 | 2020_09_01 |
2301 | 2020_09_01 |
2206 | 2020_09_01 |
2108 | 2020_09_01 |
2102 | 2020_09_01 |
2008 | 2019_03_01 |
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 u later wilt gebruiken. 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 leesmij in de voorbeeldopslagplaats voor de vereiste waarden. U kunt deze waarden lezen in elke indeling die wordt ondersteund door de SDK-taal, zoals in een JSON-bestand (dat 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.
Tenant-id
Volg de instructies in dit artikel om de map of tenant-id voor uw Azure Stack Hub te vinden.
Resourceprovider registreren
Registreer 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 kunnen deze taken als een groep in plaats van afzonderlijk in één bewerking verwerken. 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:
https://management.local.azurestack.external/
. - De ResourceManagerEndpointUrl in geïntegreerde systemen is:
https://management.region.<fqdn>/
, waarbij<fqdn>
uw fully qualified domain name is. - Om de vereiste metagegevens op te halen:
<ResourceManagerUrl>/metadata/endpoints?api-version=1.0
. Zie Azure REST API-specificaties voor beschikbare API-versies. In de profielversie kunt u bijvoorbeeld2020-09-01
de wijzigen in2019-10-01
voor resourceprovidermicrosoft.resources
api-version
.
Voorbeeld van 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 op uw externe computer vertrouwen. U hoeft het CA-basiscertificaat niet te vertrouwen met geïntegreerde Azure Stack Hub-systemen.
Windows
Exporteer het zelfondertekende Azure Stack Hub-certificaat naar uw bureaublad.
Wijzig de map in een opdrachtprompt in
%JAVA_HOME%\bin
.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: meest recente profiel dat is gemaakt voor Azure Stack Hub. Gebruik dit profiel voor services die het meest compatibel zijn met Azure Stack Hub, zolang u 1904 of hoger gebruikt.
com.microsoft.azure.profile_2018_03_01_hybrid: profiel dat is gemaakt voor Azure Stack Hub. Gebruik dit profiel om services compatibel te maken met Azure Stack Hub versie 1808 of hoger.
com.microsoft.azure: profiel dat bestaat uit de nieuwste versies van alle services. Gebruik de nieuwste versies van alle services.
Zie Samenvatting van API-profielen voor meer informatie over Azure Stack Hub- en API-profielen.
Azure Java SDK API-profielgebruik
Met de volgende code wordt de service-principal geverifieerd in Azure Stack Hub. 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
Gebruik de volgende code om de Azure Stack Hub-cloud met de juiste eindpunten te registreren:
// 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. De omgevingsvariabelen van de aanroep die wordt gedaan, worden weergegeven:
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;
}
Voorbeeld van een testproject
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
Maak een Azure-service-principal en wijs een rol toe voor toegang tot het abonnement. Zie Use Azure PowerShell to create a service principal with a certificate (Gebruik Azure PowerShell om een service-principal met een certificaat te maken) voor instructies over het maken van een service-principal.
Haal de volgende vereiste omgevingsvariabelen op:
AZURE_TENANT_ID
AZURE_CLIENT_ID
AZURE_CLIENT_SECRET
AZURE_SUBSCRIPTION_ID
ARM_ENDPOINT
RESOURCE_LOCATION
Stel de volgende omgevingsvariabelen in met behulp van de gegevens die zijn 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.
Gebruik de
getActiveDirectorySettings
functie om de eindpunten voor metagegevens van Azure Resource Manager op te halen.// Get Azure Stack Hub cloud endpoints final HashMap<String, String> settings = getActiveDirectorySettings(armEndpoint);
Voeg in het bestandPom.xml de volgende afhankelijkheid toe om het hybride profiel 2019-03-01 voor Azure Stack Hub te gebruiken. Met deze afhankelijkheid worden de modules geïnstalleerd die zijn gekoppeld aan dit profiel 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>
Voer in de opdrachtprompt die was 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. De hoofdmap README.md
beschrijft de algemene vereisten en elke submap bevat een specifiek voorbeeld met een eigen README.md
voorbeeld over het uitvoeren van dat voorbeeld.
Kijk 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: