Začínáme s vývojem pro cloud s využitím Javy v Azure

Tento článek vás provede nastavením vývojového prostředí pro vývoj pro Azure v Javě. Pak vytvoříte nějaké prostředky Azure a připojíte se k nim, abyste měli základní úkoly, jako je nahrání souboru nebo nasazení webové aplikace. Až budete hotovi, budete připraveni začít používat služby Azure ve vlastních aplikacích v Javě.

Požadavky

Nastavení ověřování

Ke spouštění vzorového kódu v tomto kurzu vaše aplikace v Javě musí mít ve vašem předplatném Azure oprávnění ke čtení a vytváření. Vytvořte objekt služby a nakonfigurujte aplikaci tak, aby se spouštěl s jeho přihlašovacími údaji. Objekty služby poskytují způsob, jak vytvořit neinteraktivní účet přidružený k vaší identitě, kterému udělíte pouze oprávnění, která vaše aplikace potřebuje ke spuštění.

Pomocí Azure CLI 2.0vytvořte objekt služby a zachyťte výstup:

az ad sp create-for-rbac --name AzureJavaTest --role Contributor

Obdržíte odpověď v následujícím formátu:

{
  "appId": "a487e0c1-82af-47d9-9a0b-af184eb87646d",
  "displayName": "AzureJavaTest",
  "name": "http://AzureJavaTest",
  "password": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa",
  "tenant": "tttttttt-tttt-tttt-tttt-tttttttttttt"
}

Dále nakonfigurujte proměnné prostředí:

  • AZURE_SUBSCRIPTION_ID: Použijte AZURE_SUBSCRIPTION_ID z v Azure CLI az account show 2.0.
  • AZURE_CLIENT_ID: Použijte hodnotu AZURE_CLIENT_ID z výstupu z výstupu objektu služby.
  • AZURE_CLIENT_SECRET: Použijte hodnotu AZURE_CLIENT_SECRET z výstupu objektu služby.
  • AZURE_TENANT_ID: Použijte hodnotu AZURE_TENANT_ID z výstupu objektu služby.

Další možnosti ověřování najdete v tématu Klientská knihovna Azure Identity pro Javu.

Nástroje

Vytvoření nového projektu Maven

Poznámka

Tento článek používá nástroj pro sestavení Maven k sestavení a spuštění ukázkového kódu. S Azure SDK pro Javu pracují také další nástroje sestavení, jako je Gradle.

Vytvořte projekt Maven z příkazového řádku v novém adresáři ve vašem systému.

mkdir java-azure-test
cd java-azure-test
mvn archetype:generate -DgroupId=com.fabrikam -DartifactId=AzureApp \
-DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

Tento krok vytvoří základní projekt Maven v adresáři testAzureApp. Přidejte následující položky do souboru pom.xml pro import knihoven použitých v ukázkovém kódu v tomto kurzu.

<dependency>
    <groupId>com.azure</groupId>
    <artifactId>azure-identity</artifactId>
    <version>1.3.2</version>
</dependency>
<dependency>
    <groupId>com.azure.resourcemanager</groupId>
    <artifactId>azure-resourcemanager</artifactId>
    <version>2.6.0</version>
</dependency>
<dependency>
    <groupId>com.azure</groupId>
    <artifactId>azure-storage-blob</artifactId>
    <version>12.8.0</version>
</dependency>
<dependency>
    <groupId>com.microsoft.sqlserver</groupId>
    <artifactId>mssql-jdbc</artifactId>
    <version>6.2.1.jre8</version>
</dependency>

Pod element nejvyšší úrovně přidejte položku , která ke spuštění ukázek použije buildproject modul build

<build>
    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <version>3.0.0</version>
            <configuration>
                <mainClass>com.fabrikam.AzureApp</mainClass>
            </configuration>
        </plugin>
    </plugins>
</build>

Instalace sady Azure Toolkit for IntelliJ

Sada Azure Toolkit je nezbytná, pokud plánujete nasazovat webové aplikace nebo rozhraní API prostřednictvím kódu programu. Rychlý start s Azure Web Apps najdete v tématu Azure Toolkit pro IntelliJ. Obsahuje také komplexní referenční knihu k sadě SDK vloženou pro jakýkoli vývoj v Azure pomocí sady Java SDK. Následující kroky shrnují proces instalace.

  1. Vyberte nabídku File (Soubor) a pak vyberte Nastavení.
  2. Vyberte Procházet úložiště avyhledejte Azure a nainstalujte sadu Azure Toolkit for Intellij.
  3. Restartujte IntelliJ.
  4. Otevřít referenční knihu z webu Nástroje – Azure – Referenční příručka k > sadě Azure SDK

Referenční příručka k sadě Azure SDK v IntelliJ

Instalace sady Azure Toolkit for Eclipse

Sada Azure Toolkit je nezbytná, pokud plánujete nasazovat webové aplikace nebo rozhraní API prostřednictvím kódu programu. V současné době se nevyuží k žádným jiným druhům vývoje. Následující kroky shrnují proces instalace. Rychlý start najdete v tématu Azure Toolkit pro Eclipse.

  1. Vyberte nabídku Nápověda a pak vyberte Nainstalovat nový software.
  2. Do pole Work with (Pracovat s) zadejte a stiskněte Enter.
  3. Zaškrtněte políčko vedle položky Sada Azure Toolkit for Java. Zrušte zaškrtnutí políčka Během instalace kontaktovat všechny lokality aktualizací a najít požadovaný software. Pak vyberte Další.

Vytvoření virtuálního počítače s Linuxem

Vytvořte nový soubor s názvem AzureApp.java v adresáři src/main/java/com/fabrikam projektu a vložte následující blok kódu. Aktualizujte proměnné userName a sshKey s použitím skutečných hodnot pro váš počítač. Kód vytvoří nový virtuální počítač s Linuxem a názvem ve skupině prostředků spuštěné v testLinuxVMsampleResourceGroup USA – východ Azure.

package com.fabrikam;

import com.azure.core.credential.TokenCredential;
import com.azure.core.http.policy.HttpLogDetailLevel;
import com.azure.core.management.AzureEnvironment;
import com.azure.core.management.Region;
import com.azure.core.management.profile.AzureProfile;
import com.azure.identity.AzureAuthorityHosts;
import com.azure.identity.EnvironmentCredentialBuilder;
import com.azure.resourcemanager.AzureResourceManager;
import com.azure.resourcemanager.compute.models.KnownLinuxVirtualMachineImage;
import com.azure.resourcemanager.compute.models.VirtualMachine;
import com.azure.resourcemanager.compute.models.VirtualMachineSizeTypes;

public class AzureApp {

    public static void main(String[] args) {

        final String userName = "YOUR_VM_USERNAME";
        final String sshKey = "YOUR_PUBLIC_SSH_KEY";

        try {
            TokenCredential credential = new EnvironmentCredentialBuilder()
                    .authorityHost(AzureAuthorityHosts.AZURE_PUBLIC_CLOUD)
                    .build();

            // If you don't set the tenant ID and subscription ID via environment variables,
            // change to create the Azure profile with tenantId, subscriptionId, and Azure environment.
            AzureProfile profile = new AzureProfile(AzureEnvironment.AZURE);

            AzureResourceManager azureResourceManager = AzureResourceManager.configure()
                    .withLogLevel(HttpLogDetailLevel.BASIC)
                    .authenticate(credential, profile)
                    .withDefaultSubscription();

            // Create an Ubuntu virtual machine in a new resource group.
            VirtualMachine linuxVM = azureResourceManager.virtualMachines().define("testLinuxVM")
                    .withRegion(Region.US_EAST)
                    .withNewResourceGroup("sampleVmResourceGroup")
                    .withNewPrimaryNetwork("10.0.0.0/24")
                    .withPrimaryPrivateIPAddressDynamic()
                    .withoutPrimaryPublicIPAddress()
                    .withPopularLinuxImage(KnownLinuxVirtualMachineImage.UBUNTU_SERVER_16_04_LTS)
                    .withRootUsername(userName)
                    .withSsh(sshKey)
                    .withUnmanagedDisks()
                    .withSize(VirtualMachineSizeTypes.STANDARD_D3_V2)
                    .create();

        } catch (Exception e) {
            System.out.println(e.getMessage());
            e.printStackTrace();
        }
    }
}

Spusťte ukázku z příkazového řádku.

mvn compile exec:java

V konzole se zobrazí některé požadavky a odpovědi REST, protože sada SDK provádí základní volání služby Azure REST API a nakonfiguruje virtuální počítač a jeho prostředky. Po dokončení programu ověřte virtuální počítač ve vašem předplatném pomocí Azure CLI 2.0.

az vm list --resource-group sampleVmResourceGroup

Po ověření, že kód funguje, pomocí rozhraní příkazového řádku odstraňte virtuální počítač a jeho prostředky.

az group delete --name sampleVmResourceGroup

Nasazení webové aplikace z úložiště GitHub

Nahraďte hlavní metodu AzureApp.java v souboru následující metodou. Před spuštěním appName kódu aktualizujte proměnnou na jedinečnou hodnotu. Tento kód nasadí webovou aplikaci z větve master ve veřejném úložišti GitHub do nové master spuštěné na cenové úrovni Free.

    public static void main(String[] args) {
        try {

            final String appName = "YOUR_APP_NAME";

            TokenCredential credential = new EnvironmentCredentialBuilder()
                    .authorityHost(AzureAuthorityHosts.AZURE_PUBLIC_CLOUD)
                    .build();

            // If you don't set the tenant ID and subscription ID via environment variables,
            // change to create the Azure profile with tenantId, subscriptionId, and Azure environment.
            AzureProfile profile = new AzureProfile(AzureEnvironment.AZURE);
            
            AzureResourceManager azureResourceManager = AzureResourceManager.configure()
                    .withLogLevel(HttpLogDetailLevel.BASIC)
                    .authenticate(credential, profile)
                    .withDefaultSubscription();

            WebApp app = azureResourceManager.webApps().define(appName)
                    .withRegion(Region.US_WEST2)
                    .withNewResourceGroup("sampleWebResourceGroup")
                    .withNewWindowsPlan(PricingTier.FREE_F1)
                    .defineSourceControl()
                    .withPublicGitRepository(
                            "https://github.com/Azure-Samples/app-service-web-java-get-started")
                    .withBranch("master")
                    .attach()
                    .create();

        } catch (Exception e) {
            System.out.println(e.getMessage());
            e.printStackTrace();
        }
    }

Spusťte kód jako předtím pomocí Mavenu.

mvn clean compile exec:java

Otevřete prohlížeč, který na aplikaci odkazuje, pomocí rozhraní příkazového řádku.

az webapp browse --resource-group sampleWebResourceGroup --name YOUR_APP_NAME

Po ověření nasazení odeberte z předplatného webovou aplikaci a plán.

az group delete --name sampleWebResourceGroup

Připojení k databázi Azure SQL

Aktuální hlavní metodu v souboru AzureApp.java nahraďte následujícím kódem. Nastavte skutečné hodnoty proměnných. Tento kód vytvoří novou databázi SQL s pravidlem brány firewall, které umožňuje vzdálený přístup. Potom se k ní kód připojí pomocí ovladače SQL Database DC.

    public static void main(String args[])
    {
        // Create the db using the management libraries.
        try {
            TokenCredential credential = new EnvironmentCredentialBuilder()
                    .authorityHost(AzureAuthorityHosts.AZURE_PUBLIC_CLOUD)
                    .build();

            // If you don't set the tenant ID and subscription ID via environment variables,
            // change to create the Azure profile with tenantId, subscriptionId, and Azure environment.
            AzureProfile profile = new AzureProfile(AzureEnvironment.AZURE);

            AzureResourceManager azureResourceManager = AzureResourceManager.configure()
                    .withLogLevel(HttpLogDetailLevel.BASIC)
                    .authenticate(credential, profile)
                    .withDefaultSubscription();

            final String adminUser = "YOUR_USERNAME_HERE";
            final String sqlServerName = "YOUR_SERVER_NAME_HERE";
            final String sqlDbName = "YOUR_DB_NAME_HERE";
            final String dbPassword = "YOUR_PASSWORD_HERE";
            final String firewallRuleName = "YOUR_RULE_NAME_HERE";

            SqlServer sampleSQLServer = azureResourceManager.sqlServers().define(sqlServerName)
                    .withRegion(Region.US_EAST)
                    .withNewResourceGroup("sampleSqlResourceGroup")
                    .withAdministratorLogin(adminUser)
                    .withAdministratorPassword(dbPassword)
                    .defineFirewallRule(firewallRuleName)
                        .withIpAddressRange("0.0.0.0","255.255.255.255")
                        .attach()
                    .create();

            SqlDatabase sampleSQLDb = sampleSQLServer.databases().define(sqlDbName).create();

            // Assemble the connection string to the database.
            final String domain = sampleSQLServer.fullyQualifiedDomainName();
            String url = "jdbc:sqlserver://"+ domain + ":1433;" +
                    "database=" + sqlDbName +";" +
                    "user=" + adminUser+ "@" + sqlServerName + ";" +
                    "password=" + dbPassword + ";" +
                    "encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;loginTimeout=30;";

            // Connect to the database, create a table, and insert an entry into it.
            Connection conn = DriverManager.getConnection(url);

            String createTable = "CREATE TABLE CLOUD ( name varchar(255), code int);";
            String insertValues = "INSERT INTO CLOUD (name, code ) VALUES ('Azure', 1);";
            String selectValues = "SELECT * FROM CLOUD";
            Statement createStatement = conn.createStatement();
            createStatement.execute(createTable);
            Statement insertStatement = conn.createStatement();
            insertStatement.execute(insertValues);
            Statement selectStatement = conn.createStatement();
            ResultSet rst = selectStatement.executeQuery(selectValues);

            while (rst.next()) {
                System.out.println(rst.getString(1) + " "
                        + rst.getString(2));
            }


        } catch (Exception e) {
            System.out.println(e.getMessage());
            System.out.println(e.getStackTrace().toString());
        }
    }

Spusťte ukázku z příkazového řádku.

mvn clean compile exec:java

Pak vyčistěte prostředky pomocí rozhraní příkazového řádku.

az group delete --name sampleSqlResourceGroup

Zápis objektu blob do nového účtu úložiště

Aktuální hlavní metodu v souboru AzureApp.java nahraďte následujícím kódem. Tento kód vytvoří účet úložiště Azure. Potom tento kód použije Azure Storage pro Javu k vytvoření nového textového souboru v cloudu.

    public static void main(String[] args) {

        try {
            TokenCredential tokenCredential = new EnvironmentCredentialBuilder()
                    .authorityHost(AzureAuthorityHosts.AZURE_PUBLIC_CLOUD)
                    .build();

            // If you don't set the tenant ID and subscription ID via environment variables,
            // change to create the Azure profile with tenantId, subscriptionId, and Azure environment.
            AzureProfile profile = new AzureProfile(AzureEnvironment.AZURE);

            AzureResourceManager azureResourceManager = AzureResourceManager.configure()
                    .withLogLevel(HttpLogDetailLevel.BASIC)
                    .authenticate(tokenCredential, profile)
                    .withDefaultSubscription();

            // Create a new storage account.
            String storageAccountName = "YOUR_STORAGE_ACCOUNT_NAME_HERE";
            StorageAccount storage = azureResourceManager.storageAccounts().define(storageAccountName)
                    .withRegion(Region.US_WEST2)
                    .withNewResourceGroup("sampleStorageResourceGroup")
                    .create();

            // Create a storage container to hold the file.
            List<StorageAccountKey> keys = storage.getKeys();
            PublicEndpoints endpoints = storage.endPoints();
            String accountName = storage.name();
            String accountKey = keys.get(0).value();
            String endpoint = endpoints.primary().blob();

            StorageSharedKeyCredential credential = new StorageSharedKeyCredential(accountName, accountKey);

            BlobServiceClient storageClient =new BlobServiceClientBuilder()
                    .endpoint(endpoint)
                    .credential(credential)
                    .buildClient();

            // Container name must be lowercase.
            BlobContainerClient blobContainerClient = storageClient.getBlobContainerClient("helloazure");
            blobContainerClient.create();

            // Make the container public.
            blobContainerClient.setAccessPolicy(PublicAccessType.CONTAINER, null);

            // Write a blob to the container.
            String fileName = "helloazure.txt";
            String textNew = "Hello Azure";

            BlobClient blobClient = blobContainerClient.getBlobClient(fileName);
            InputStream is = new ByteArrayInputStream(textNew.getBytes());
            blobClient.upload(is, textNew.length());

        } catch (Exception e) {
            System.out.println(e.getMessage());
            e.printStackTrace();
        }
    }

Spusťte ukázku z příkazového řádku.

mvn clean compile exec:java

K vyhledání souboru helloazure.txt v účtu úložiště můžete použít Azure Portal nebo pomocí Průzkumník služby Azure Storage.

Pomocí rozhraní příkazového řádku vyčistěte účet úložiště.

az group delete --name sampleStorageResourceGroup

Zkoumání dalších ukázek

Další informace o použití knihoven pro správu Azure pro Javu ke správě prostředků a automatizaci úloh najdete v našem ukázkovém kódu pro virtuální počítače,webové aplikace a SQL databázi.

Referenční informace a poznámky k verzi

Pro všechny balíčky jsou k dispozici referenční informace.

Získání pomoci a poskytnutí zpětné vazby

Na Stack Overflow se můžete ptát komunity. Hlášení chyb a otevření problémů se sadou Azure SDK pro Javu v GitHub úložiště.