API-versieprofielen gebruiken met Java in Azure Stack Hub
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 omvatten rekenkracht, netwerken, opslag, app-services en Azure Key Vault. U vindt de opslagplaats 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 ervaring voor hybride cloudontwikkelaars mogelijk. Als u de versieafhankelijkheden in de POM.xml Java SDK overschakelt, kunt u hybride cloudontwikkeling inschakelen door 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 resources in Azure tack Hub door uw bestaande afhankelijkheid com.azure.resourcemanager te nemen en de versie te wijzigen van x.y.zx.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 uw bestaande afhankelijkheid com.azure.resourcemanager op en wijzigt u de versie in de nieuwste versie. 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 worden gebruikt in Azure Stack Hub als par van het hybride profiel.
Het profiel wordt opgegeven in het pom.xml bestand in het Maven-project als een afhankelijkheid. Met het profiel worden modules automatisch geladen als u de juiste klasse kiest in de vervolgkeuzelijst (zoals u dat zou doen met .NET).
De ontwikkelomgeving instellen
Als u uw omgeving wilt voorbereiden voor het uitvoeren van de SDK, kunt u de IDE gebruiken die u liever gebruikt, zoals Eclipse of Visual Studio Code. 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_HOMEomgevingsvariabele 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 op de 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 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 opgegeven in het Pom.xml-bestand als een afhankelijkheid, waarmee 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. Om de quickstart te voltooien, moet de
JAVA_HOMEomgevingsvariabele 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 profielen met datums wilt gebruiken, vervangt u de datum in com.microsoft.azure.profile<date>_hybrideen ander SDK-profiel of een andere versie. Voor de versie 2008 is 2019_03_01het profiel bijvoorbeeld en wordt com.microsoft.azure.profile_2019_03_01_hybridde tekenreeks. 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 |
|---|---|
| 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 de LEESMIJ in de voorbeeldopslagplaats 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.
Tenant-id
Volg de instructies in dit artikel om de map- of tenant-id voor uw Azure Stack Hub te vinden.
Resourceprovider 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.
- 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>/, 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. In profielversie kunt u bijvoorbeeld2020-09-01deapi-versionnaam2019-10-01wijzigen van de resourceprovidermicrosoft.resources.
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 basiscertificaat van de Azure Stack Hub-CA 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.
Windows
Exporteer het zelfondertekende certificaat van Azure Stack Hub naar uw bureaublad.
Wijzig in een opdrachtprompt de map 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: Het meest recente profiel dat is gebouwd voor Azure Stack Hub. Gebruik dit profiel voor services om het meest compatibel te zijn met Azure Stack Hub, zolang u op 1904 of hoger werkt.
com.microsoft.azure.profile_2018_03_01_hybrid: Profiel dat is 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 het overzicht 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 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
Gebruik de volgende code om de Azure Stack Hub-cloud te registreren bij de juiste eindpunten:
// 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 aangegeven van de aanroep die wordt uitgevoerd:
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;
}
Testproject voor voorbeeldeenheden
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-hybridMaak een Azure-service-principal en wijs een rol toe voor toegang 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.
Haal de volgende vereiste omgevingsvariabelen op:
AZURE_TENANT_IDAZURE_CLIENT_IDAZURE_CLIENT_SECRETAZURE_SUBSCRIPTION_IDARM_ENDPOINTRESOURCE_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
getActiveDirectorySettingsfunctie om de Azure Resource Manager metagegevenseindpunten 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, Netwerken, 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 is geopend om de omgevingsvariabelen in te stellen de volgende opdracht in:
mvn clean compile exec:java
Voorbeelden
Zie de voorbeeldopslagplaats voor voorbeeldcode voor update-to-date. In de hoofdmap README.md worden algemene vereisten beschreven en elke submap bevat een specifiek voorbeeld met een eigen README.md voorbeeld over 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: