This README is based on the released stable version (1.1.0). If you are looking for other releases, see More Information
The Azure Management Libraries for Java is a higher-level, object-oriented API for managing Azure resources.
Service | feature | Available as GA | Available as Preview | Coming soon |
---|---|---|---|
Compute | Virtual machines and VM extensions Virtual machine scale sets Managed disks |
Azure container services Azure container registry |
|
Storage | Storage accounts | Encryption | |
SQL Database | Databases Firewalls Elastic pools |
More features | |
Networking | Virtual networks Network interfaces IP addresses Routing table Network security groups Application gateways DNS Traffic managers |
Load balancers | VPN Network watchers More application gateway features |
More services | Resource Manager Key Vault Redis CDN Batch |
Web apps Function Apps Service bus Graph RBAC DocumentDB |
Monitor Scheduler Functions management Search More Graph RBAC features |
Fundamentals | Authentication - core Async methods |
Preview features are marked with the @Beta annotation at the class or interface or method level in libraries. These features are subject to change. They can be modified in any way, or even removed, in the future.
The Azure
class is the simplest entry point for creating and interacting with Azure resources.
Azure azure = Azure.authenticate(credFile).withDefaultSubscription();
You can create a Cosmos DB account by using a define() … create()
method chain.
DocumentDBAccount documentDBAccount = azure.documentDBs().define(docDBName)
.withRegion(Region.US_EAST)
.withNewResourceGroup(rgName)
.withKind(DatabaseAccountKind.GLOBAL_DOCUMENT_DB)
.withSessionConsistency()
.withWriteReplication(Region.US_WEST)
.withReadReplication(Region.US_CENTRAL)
.create()
You can create a virtual machine instance by using a define() … create()
method chain.
System.out.println("Creating a Linux VM");
VirtualMachine linuxVM = azure.virtualMachines().define("myLinuxVM")
.withRegion(Region.US_EAST)
.withNewResourceGroup(rgName)
.withNewPrimaryNetwork("10.0.0.0/28")
.withPrimaryPrivateIPAddressDynamic()
.withNewPrimaryPublicIPAddress("mylinuxvmdns")
.withPopularLinuxImage(KnownLinuxVirtualMachineImage.UBUNTU_SERVER_16_04_LTS)
.withRootUsername("tirekicker")
.withSsh(sshKey)
.withSize(VirtualMachineSizeTypes.STANDARD_D3_V2)
.create();
System.out.println("Created a Linux VM: " + linuxVM.id());
You can update a virtual machine instance by using an update() … apply()
method chain.
linuxVM.update()
.withNewDataDisk(20, lun, CachingTypes.READ_WRITE)
.apply();
You can create a virtual machine scale set instance by using another define() … create()
method chain.
VirtualMachineScaleSet virtualMachineScaleSet = azure.virtualMachineScaleSets()
.define(vmssName)
.withRegion(Region.US_EAST)
.withExistingResourceGroup(rgName)
.withSku(VirtualMachineScaleSetSkuTypes.STANDARD_D3_V2)
.withExistingPrimaryNetworkSubnet(network, "Front-end")
.withPrimaryInternetFacingLoadBalancer(loadBalancer1)
.withPrimaryInternetFacingLoadBalancerBackends(backendPoolName1, backendPoolName2)
.withPrimaryInternetFacingLoadBalancerInboundNatPools(natPool50XXto22, natPool60XXto23)
.withoutPrimaryInternalLoadBalancer()
.withPopularLinuxImage(KnownLinuxVirtualMachineImage.UBUNTU_SERVER_16_04_LTS)
.withRootUsername(userName)
.withSsh(sshKey)
.withNewDataDisk(100)
.withNewDataDisk(100, 1, CachingTypes.READ_WRITE)
.withNewDataDisk(100, 2, CachingTypes.READ_WRITE, StorageAccountTypes.STANDARD_LRS)
.withCapacity(3)
.create();
You can create a network security group instance by using another define() … create()
method chain.
NetworkSecurityGroup frontEndNSG = azure.networkSecurityGroups().define(frontEndNSGName)
.withRegion(Region.US_EAST)
.withNewResourceGroup(rgName)
.defineRule("ALLOW-SSH")
.allowInbound()
.fromAnyAddress()
.fromAnyPort()
.toAnyAddress()
.toPort(22)
.withProtocol(SecurityRuleProtocol.TCP)
.withPriority(100)
.withDescription("Allow SSH")
.attach()
.defineRule("ALLOW-HTTP")
.allowInbound()
.fromAnyAddress()
.fromAnyPort()
.toAnyAddress()
.toPort(80)
.withProtocol(SecurityRuleProtocol.TCP)
.withPriority(101)
.withDescription("Allow HTTP")
.attach()
.create();
You can create a application gateway instance by using another define() … create()
method chain.
ApplicationGateway applicationGateway = azure.applicationGateways().define("myFirstAppGateway")
.withRegion(Region.US_EAST)
.withExistingResourceGroup(resourceGroup)
// Request routing rule for HTTP from public 80 to public 8080
.defineRequestRoutingRule("HTTP-80-to-8080")
.fromPublicFrontend()
.fromFrontendHttpPort(80)
.toBackendHttpPort(8080)
.toBackendIpAddress("11.1.1.1")
.toBackendIpAddress("11.1.1.2")
.toBackendIpAddress("11.1.1.3")
.toBackendIpAddress("11.1.1.4")
.attach()
.withExistingPublicIpAddress(publicIpAddress)
.create();
You can create a Web App instance by using another define() … create()
method chain.
WebApp webApp = azure.webApps()
.define(appName)
.withRegion(Region.US_WEST)
.withNewResourceGroup(rgName)
.withNewWindowsPlan(PricingTier.STANDARD_S1)
.create();
You can create a SQL server instance by using another define() … create()
method chain.
SqlServer sqlServer = azure.sqlServers().define(sqlServerName)
.withRegion(Region.US_EAST)
.withNewResourceGroup(rgName)
.withAdministratorLogin("adminlogin123")
.withAdministratorPassword("myS3cureP@ssword")
.withNewFirewallRule("10.0.0.1")
.withNewFirewallRule("10.2.0.1", "10.2.0.10")
.create();
Then, you can create a SQL database instance by using another define() … create()
method chain.
SqlDatabase database = sqlServer.databases().define("myNewDatabase")
.create();
You can find plenty of sample code that illustrates management scenarios (80+ end-to-end scenarios) for Azure Virtual Machines, Virtual Machine Scale Sets, Managed Disks, Active Directory Azure Container Service and Registry, Storage, Networking, Resource Manager, SQL Database, Cosmos DB, App Service (Web Apps on Windows and Linux), Functions, Service Bus, Key Vault, Redis, CDN and Batch …
1.1.0
If you are using released builds from 1.1.0, add the following to your POM file:
<dependency>
<groupId>com.microsoft.azure</groupId>
<artifactId>azure</artifactId>
<version>1.1.0</version>
</dependency>
- A Java Developer Kit (JDK), v 1.7 or later
- Maven
- Azure Service Principal - see how to create authentication info.
If you are migrating your code to 1.1.0, you can use these notes for preparing your code for 1.1.0 from 1.0.0.
If you encounter any bugs with these libraries, please file issues via Issues or checkout StackOverflow for Azure Java SDK.
If you would like to become an active contributor to this project please follow the instructions provided in Microsoft Azure Projects Contribution Guidelines.
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request
- Javadoc
- http://azure.com/java
- If you don't have a Microsoft Azure subscription you can get a FREE trial account here
Previous Releases and Corresponding Repo Branches
Version | SHA1 | Remarks |
---|---|---|
1.0.0 | 1.0.0 | Tagged release for 1.0.0 version of Azure management libraries |
1.0.0-beta5 | 1.0.0-beta5 | Tagged release for 1.0.0-beta5 version of Azure management libraries |
1.0.0-beta4.1 | 1.0.0-beta4.1 | Tagged release for 1.0.0-beta4.1 version of Azure management libraries |
1.0.0-beta3 | 1.0.0-beta3 | Tagged release for 1.0.0-beta3 version of Azure management libraries |
1.0.0-beta2 | 1.0.0-beta2 | Tagged release for 1.0.0-beta2 version of Azure management libraries |
1.0.0-beta1 | 1.0.0-beta1 | Maintenance branch for AutoRest generated raw clients |
1.0.0-beta1+fixes | 1.0.0-beta1+fixes | Stable build for AutoRest generated raw clients |
0.9.x-SNAPSHOTS | 0.9 | Maintenance branch for service management libraries |
0.9.3 | 0.9.3 | Latest release for service management libraries |
This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact [email protected] with any additional questions or comments.