Kom i gang med Azure Management Libraries for Java


Denne bloggposten finnes også som video her

 

Fra 0.5.0-releasen av Microsoft Azure SDK'et for Java har support for service management vært bygget inn i Java SDK'et. Dette var allerede implementert i Azure SDK for .NET og Azure SDK for Node.js, men var nytt i vårt Java SDK. Det finnes som open-source på GitHub, akkurat som .NET og Node.js SDK'ene og Storage teamet sitt Java SDK. I denne bloggposten vil vi introdusere deg til management bibliotekene for Java og guide deg gjennom prosessen at sette opp et Eclipse prosjekt som du senere kan ekspandere og bruke til å håndtere ditt eget Azure abonnement og ressurser fra.

 

Hva er Management Libraries for Java?

Disse bibliotekene gir dine Java-applikasjoner muligheten å automatisere setup, teardown, provisjonering og andre management oppgaver for Azure ressurser. Tanken er at utviklere skal kunne utføre operasjoner på deres Azure-abonnement direkte i kode i stedet for å bruke management portalen. Du kan bruke bibliotekene til å:

  • Skape, ta bort og oppdatere instillinger for ressurser som web apps, SQL databaser, cloud services, scheduler job collections, virtual machines og storage
  • Starte og stoppe web apps
  • Ta backup av databaser til storage accounts
  • Automatisere opprettelsen av virtuelle maskiner

Management bibliotekene for Java finnes på Maven, så de er lett tilgjengelige i de fleste moderne Java utviklingsverktøy. Denne posten vil dog fokusere på bruk av Eclipse.

 

Forberedelser

1. Installere seneste Java SDK: <www.oracle.com/technetwork/java/javase/downloads/index.html>

2. Sett miljøvariabel JAVA_HOME til SDK installasjonsmappe, f eks JAVA_HOME=C:\Program Files\Java\jdk1.8.0_73\       (Windows + Break for å komme til System -> Advanced System Settings -> Environment Variables)

3. Installere Eclipse IDE for Java EE Developer:  <www.eclipse.org/downloads/>

4. Installere og sett miljøvariabler for Apache Maven for Windows. Følg instruksjonene her: <www.mkyong.com/maven/how-to-install-maven-in-windows/>

 

Skap et Eclipse Maven Project

Hvis du har tidligere erfaring med Java/Eclipse/Maven kan dette være vel grunnleggende, men vi starter allikevel fra scratch med å skape et nytt Maven prosjekt i Eclipse.

 

Vi trenger ikke noen archetypes (en type mal i Maven), men bruker "simple project".

 

Da dette er et Eclipse Maven prosjekt (det går an å bruke andre prosjekter, bare vi kan laste inn Azure Maven pakkene) trenger vi å angi litt mer info for å konfigurere prosjektet. Her angir vi bare litt grunnleggende informasjon for å flagge at dette er demokode.

 

 

Installere Azure Management Libraries med Maven

Nå når vi har satt opp et Eclipseprosjekt med støtte for Mavenpakker trenger vi å installere Azure Management-pakkene. Vi klikker på pom.xml filen nederst i prosjektet, og velger Dependencies for å se pakkene som er installert for dette prosjektet. Da det er et nytt prosjekt bør listen være tom. Klikk på Add for å legge til pakker.

 

Hvis du er erfaren med Maven og Eclipse er dette sikkert ikke ukjent for deg, men akkurat nå finner Eclipse kun Maven pakker i sitt lokale Workspace.

 

For å få bort "Index downloads are disabled, search results may be incomplete" - velg Windows->Preferences og krysse i Maven->Download repository index updates on startup.

 

Vi må nå oppdatere listen over Maven repositorier som vår nåværende instans av Eclipse kan finne. Klikk på Window->Show View->Other. .

 

Velg deretter Maven->Maven Repositories.

 

Dette åpner en Maven Repositories view hvor du kan finne frem det sentrale Maven Repository. Klikk på Global Repositories, høyreklikk deretter på central (https://repo.maven.apache.org/maven2) og velg Rebuild Index. Du bygger nå om det lokale indekset for å inkludere pakker fra det sentrale Repository. Det vil ta noen minutter da Maven har et stort antall pakker som må søkes igjennom og mappes opp.

 

Når vårt index er ferdigbygget får vi opp Microsoft Azure pakker fra det sentrale Maven repository. En søkning på Azure resulterer i en oversikt over alle Azurepakker og her velger vi "bas"-pakken som heter Azure management.

 

Nå er Azure management-pakken valgt som dependency.

 

Javakod for å koble til Azure's API'er

Nå når vi har referert til Azure SDK'et kan vi begynne å skrive kode. Vi starter med å legge til en ny Java class fil til prosjektet vårt. I første omgang kommer vi bare til å anrope Azure API'et for å få en liste over regionene hvor vi kan deploye vårt prosjekt, og printe disse navnene til konsollen. Ikke mye, men vi får se at applikasjonen autentiserer og kobler til Azure API'et på en riktig måte.

 

Vi må krysse i public static void main(String[] args) for å legge til en main-metode som fungerer som entry-point for vår applikasjon.

 

Vi legger til følgende imports til vår class-fil så vi får tilgang til klassene i management bibliotekene for Azure API endpoints.

 

Autentisering mot Azure API'et med sertifikat

Java SDK'et gjør det enkelt å anrope API'et, men vi trenger å sette opp et management sertifikat i vårt Azure abonnement som vi kan bruke for å autentisere mot API'et. Her er en strålende guide til sertifikat, hvordan de fungerer i Azure og hvordan du skaper dem: https://www.simple-talk.com/cloud/security-and-compliance/windows-azure-management-certificates/

Vi forutsetter herifra at du lastet opp ditt sertifikat (CER-filen generert av makecert.exe) til dit Azure-abonnement, samt eksportert det til en PFX-fil med certmgr.msc. Vi kan nå bruke PFX-filen til autentisering i vår applikasjon.

 

Anrope Azure API'et for å få en liste over regioner

Strengen subscriptionId får vi fra Azure Management Portal, og vi setter keyStoreLocation og keyStorePassword til aktuelle verdier for sertifikatet. Vi anroper deretter Azure API'et for å få listen over geografiske regioner. Denne bruker vi siden til å printe navnet fra hver og et region til konsollen.

 

Når vi kjører applikasjonen i Eclipse ser vi en liste på regioner i konsollen og får bekreftet at alt fungerer som forventet. Dette demonstrerer at vi har konvertert management sertifikatet i vårt Azure abbonement til PFX-format, og bruker det i vår applikasjon for å koble til og autentisere mot Azure API'et gjennom management bibliotekene. Du kommer sannsynligvis til å få opp flere regioner enn de jeg har å velge mellom, noe som har å gjøre med ulike abonnementstyper.

 

Oppsummering og neste steg

Forhåpentligvis viser denne posten hvor lett det er å hente Java SDK'et via Maven og bruke det til å autentisere mot Azure's API og kjøre noe simple calls. SDK'et kan selvfølgelig gjøre mye mer enn å liste regioner. Du kan provisjonere virtuelle maskiner for utvikling og test, webapps som kjører din Javakode (og du kan bruke Eclipse Java Toolkit til å deploye kode til), eller storage accounts for å lagre dine ressurser. Java SDK'et har også funksjonalitet for å automatisere Azure-tjenester.

Sammen med Storage SDK'et for Java og de andre SDK'ene tilgjengelige på Azure-hjemmesiden er det lett å se at mulighetene for Javautvikling på Azure bare fortsetter å vokse. Vi håper du prøver disse verktøy og SDK'er og gir oss tilbakemelding på hva du synes!

Mer om Java på Azure finner du her: azure.microsoft.com/en-us/develop/java.

Originalartikel av Brady Gaster på engelsk: https://azure.microsoft.com/en-gb/blog/getting-started-with-the-azure-java-management-libraries/

 

Komplett kode som referanse

 

 import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.ArrayList;
import javax.xml.parsers.ParserConfigurationException;
import org.xml.sax.SAXException;
import com.microsoft.windowsazure.core.utils.KeyStoreType;
import com.microsoft.windowsazure.exception.ServiceException;
import com.microsoft.windowsazure.management.*;
import com.microsoft.windowsazure.Configuration;
import com.microsoft.windowsazure.management.configuration.ManagementConfiguration;
import com.microsoft.windowsazure.management.models.LocationsListResponse;
import com.microsoft.windowsazure.management.models.LocationsListResponse.Location;

public class Mgmtdemo {

 static String uri = “https://management.core.windows.net/”;
 static String subscriptionId = “XXXXXXXXXXXXXXXXXXXX”; // from the azure portal
 static String keyStoreLocation = “c:\\cert\\mgmtdemo.pfx”; // file path to our certificate in PFX-format
 static String keyStorePassword = “Mgmt123″; // certificate password
 
 public static void main(String[] args)
   throws IOException, URISyntaxException, ServiceException, ParserConfigurationException, SAXException{

    Configuration config = ManagementConfiguration.configure(
       new URI(uri), 
       subscriptionId,
       keyStoreLocation, 
       keyStorePassword, 
       KeyStoreType.pkcs12  // flags that I’m using a PKCS12 (.pfx) keystore
     );

     // create a management client to call the API
     ManagementClient client = ManagementService.create(config);

     // get the list of regions
     LocationsListResponse response = client.getLocationsOperations().list();
     ArrayList<Location> locations = response.getLocations();


     // print them to the console
     for( int i=0; i<locations.size(); i++){
       System.out.println(locations.get(i).getDisplayName());
     }   
 } 
}