Azure Stack Hub'da Java ile API sürüm profillerini kullanma

Önemli

Java SDK'sı, 1. izden 2'ye güncelleştirildi. En kısa sürede track 2 SDK'sına geçiş gerçekleştirmenizi öneririz. Yönergeler için bu geçiş kılavuzuna bakın.

Azure Stack Hub Resource Manager için Java SDK'sı, altyapınızı oluşturmanıza ve yönetmenize yardımcı olacak araçlar sağlar. SDK'daki kaynak sağlayıcıları arasında işlem, ağ, depolama, uygulama hizmetleri ve Azure Key Vault bulunur. Karma Java Örnekleri deposunu GitHub'da bulabilirsiniz. Bu makale ortamınızı ayarlamanıza, doğru kimlik bilgilerini almanıza, depoyu almanıza ve Azure Stack Hub'da bir kaynak grubu oluşturmanıza yardımcı olur.

Java SDK'sını kullanmak gerçek bir hibrit bulut geliştirici deneyimi sağlar. Java SDK'sında sürümündeki POM.xml sürüm bağımlılıklarını değiştirmek, genel Azure kaynakları ile Azure Stack Hub'daki kaynaklar arasında geçiş yapmanıza yardımcı olarak hibrit bulut geliştirmeyi etkinleştirir.

Hizmetlerin en son sürümünü kullanmak için bağımlılık olarak en son profili kullanın.

Mevcut com.azure.resourcemanager bağımlılığınızı alıp sürümünden x.y.zx.y.z-hybridolarak değiştirerek uygulamanızı Azure tack Hub'daki kaynağa hedefleyebilirsiniz. Azure Stack Hub desteği sağlayan karma paketler, sürümün sonunda bir -hybrid sonek kullanır, örneğin: 1.0.0-hybrid. Bu, sürümle ilişkili statik bir uç nokta koleksiyonuna işaret eder.

En son profili almak için mevcut com.azure.resourcemanager bağımlılığınızı alın ve sürümü en son olarak değiştirin. En son profil Java paketleri, Azure ile tutarlı bir deneyim sağlar. Paketler, Azure com.azure.resourcemanager ile aynı grup kimliğini paylaşır. Yapıt kimliği ve ad alanları da genel Azure ile aynıdır. Bu, Azure uygulamanızı Azure Stack Hub'a taşımanıza yardımcı olur. Azure Stack Hub'da karma profilin bir parçası olarak kullanılan uç noktalar hakkında daha fazla bilgi edinmek için bkz. API profillerinin özeti.

Profil, Maven projesindeki pom.xml dosyada bağımlılık olarak belirtilir. Açılan listeden doğru sınıfı seçerseniz (.NET'de yaptığınız gibi) profil modülleri otomatik olarak yükler.

Geliştirme ortamınızı kurma

Ortamınızı SDK'yı çalıştırmaya hazırlamak için Eclipse veya Visual Studio Code gibi bir IDE kullanabilirsiniz, ancak Git, Java SDK ve Apache Maven yüklü olmalıdır. Geliştirme ortamınızı ayarlama önkoşullarıyla ilgili ayrıntıları Java için Azure SDK'sını kullanma bölümünde bulabilirsiniz

  1. Git'i yükleyin. Git'i yüklemek için resmi yönergeleri Başlarken - Git'i Yükleme bölümünde bulabilirsiniz.

  2. Java SDK'sını yükleyin ve ortam değişkeninizi JAVA_HOME Java Development Kit ikili dosyalarının konumuna ayarlayın. OpenJDK için indirilebilir yükleme medyası yönergelerini bulabilirsiniz. Java Developer Kit'in 8 veya daha yeni bir sürümünü yükleyin.

  3. Apache Maven'ı yükleyin. Yönergeleri Apache Maven Projesi'nde bulabilirsiniz. Apache Maven'ı yükleme 3.0 veya üzeridir.

Java ve API sürümü profilleri

Tüm hizmetlerin en son sürümlerini kullanmak için bağımlılık olarak en son profili kullanın.

  • En son profili kullanmak için bağımlılık com.microsoft.azure'dır.

  • Azure Stack Hub'da kullanılabilen en son desteklenen hizmetleri kullanmak için com.microsoft.azure.profile_2019_03_01_hybrid profilini kullanın.

    • Profil ,Pom.xml dosyasında bağımlılık olarak belirtilir ve açılan listeden doğru sınıfı seçerseniz modülleri otomatik olarak yükler (.NET'te olduğu gibi).
  • Bağımlılıklar aşağıdaki gibi görünür:

    <dependency>
    <groupId>com.microsoft.azure.profile_2019_03_01_hybrid</groupId>
    <artifactId>azure</artifactId>
    <version>1.0.0-beta-1</version>
    </dependency>
    
  • Belirli bir kaynak sağlayıcısındaki bir kaynak türü için belirli API sürümlerini kullanmak için IntelliSense aracılığıyla tanımlanan belirli API sürümlerini kullanın.

Tüm seçenekleri aynı uygulamada birleştirebilirsiniz.

Azure Java SDK'sını yükleme

Java SDK'sını yüklemek için şu adımları izleyin:

  1. Git'i yüklemek için resmi yönergeleri izleyin. Bkz . Başlarken - Git'i Yükleme.

  2. Java SDK'sını ve Maven'ı yüklemek için yönergeleri izleyin. Doğru sürüm, Java Developer Kit'in 8. sürümüdür. Apache Maven'in doğru sürümü 3.0 veya üzeridir. Hızlı başlangıcı tamamlamak için ortam değişkeninin JAVA_HOME Java Geliştirme Seti'nin yükleme konumuna ayarlanması gerekir. Daha fazla bilgi için bkz. Java ve Maven ile ilk işlevinizi oluşturma.

  3. Doğru bağımlılık paketlerini yüklemek için Java uygulamanızda Pom.xml dosyasını açın. Aşağıdaki kodda gösterildiği gibi bir bağımlılık ekleyin:

    <dependency>
    <groupId>com.microsoft.azure.profile_2019_03_01_hybrid</groupId>
    <artifactId>azure</artifactId>
    <version>1.0.0-beta-1</version>
    </dependency>
    
  4. Yüklenmesi gereken paket kümesi, kullanmak istediğiniz profil sürümüne bağlıdır. Profil sürümlerinin paket adları şunlardır:

    • com.microsoft.azure.profile_2019_03_01_hybrid
    • com.microsoft.azure
      • Son

Profiller

Tarih içeren profiller için farklı bir SDK profili veya sürümü kullanmak için içindeki tarihi com.microsoft.azure.profile<date>_hybridyazın. Örneğin, 2008 sürümü için profil olur 2019_03_01ve dize olur com.microsoft.azure.profile_2019_03_01_hybrid. SDK ekibinin bazen paketlerin adını değiştirdiğini, bu nedenle bir dizenin tarihini farklı bir tarihle değiştirmenin çalışmayabileceğini unutmayın. Profillerin ve Azure Stack sürümlerinin ilişkilendirmesi için aşağıdaki tabloya bakın.

Azure Stack sürümü Profil
2311 2020_09_01
2301 2020_09_01
2206 2020_09_01
2108 2020_09_01
2102 2020_09_01
2008 2019_03_01

Azure Stack Hub ve API profilleri hakkında daha fazla bilgi için bkz. API profillerinin özeti.

Abonelik

Henüz bir aboneliğiniz yoksa, bir abonelik oluşturun ve daha sonra kullanmak üzere abonelik kimliğini kaydedin. Abonelik oluşturma hakkında bilgi için bu belgeye bakın.

Hizmet sorumlusu

Bir hizmet sorumlusu ve ilişkili ortam bilgileri oluşturulup bir yere kaydedilmelidir. Rolü olan owner hizmet sorumlusu önerilir, ancak örne bağlı olarak bir contributor rol yeterli olabilir. Gerekli değerler için örnek depodaki BENİOKU'ya bakın. Bu değerleri BIR JSON dosyasından (örneklerimizin kullandığı gibi) SDK dili tarafından desteklenen herhangi bir biçimde okuyabilirsiniz. Çalıştırılmakta olan örne bağlı olarak, bu değerlerin tümü kullanılamaz. Güncelleştirilmiş örnek kod veya daha fazla bilgi için örnek depoya bakın.

Kiracı Kimliği

Azure Stack Hub'ınızın dizin veya kiracı kimliğini bulmak için bu makaledeki yönergeleri izleyin.

Kaynak sağlayıcılarını kaydetme

Bu belgeyi izleyerek gerekli kaynak sağlayıcılarını kaydedin. Çalıştırmak istediğiniz örneklere bağlı olarak bu kaynak sağlayıcıları gereklidir. Örneğin, bir VM örneği çalıştırmak istiyorsanız kaynak Microsoft.Compute sağlayıcısı kaydı gereklidir.

Azure Stack resource manager uç noktası

Azure Resource Manager (ARM), yöneticilerin Azure kaynaklarını dağıtmasını, yönetmesini ve izlemesini sağlayan bir yönetim çerçevesidir. Azure Resource Manager bu görevleri tek bir işlemde tek tek değil grup olarak işleyebilir. Meta veri bilgilerini Resource Manager uç noktasından alabilirsiniz. Uç nokta, kodunuzu çalıştırmak için gereken bilgileri içeren bir JSON dosyası döndürür.

  • Azure Stack Geliştirme Seti'ndeki (ASDK) ResourceManagerEndpointUrl : https://management.local.azurestack.external/.
  • Tümleşik sistemlerde ResourceManagerEndpointUrl şu şekildedir: https://management.region.<fqdn>/burada <fqdn> tam etki alanı adınızdır.
  • Gerekli meta verileri almak için: <ResourceManagerUrl>/metadata/endpoints?api-version=1.0. Kullanılabilir API sürümleri için bkz. Azure rest API belirtimleri. Örneğin, 2020-09-01 profil sürümünde kaynak sağlayıcısı microsoft.resourcesiçin olarak değiştirebilirsiniz api-version2019-10-01.

Örnek 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"]
      }
}

Azure Stack Hub CA kök sertifikasına güvenme

Azure Stack Geliştirme Seti'ni (ASDK) kullanıyorsanız, uzak makinenizdeki CA kök sertifikasına güvenmeniz gerekir. Azure Stack Hub tümleşik sistemleriyle CA kök sertifikasına güvenmeniz gerekmez.

Windows

  1. Azure Stack Hub otomatik olarak imzalanan sertifikayı masaüstünüzde dışarı aktarın.

  2. Komut isteminde dizinini olarak %JAVA_HOME%\bindeğiştirin.

  3. Şu komutu çalıştırın:

    .\keytool.exe -importcert -noprompt -file <location of the exported certificate here> -alias root -keystore %JAVA_HOME%\lib\security\cacerts -trustcacerts -storepass changeit
    

Mevcut API profilleri

  • com.microsoft.azure.profile_2019_03_01_hybrid: Azure Stack Hub için oluşturulan en son profil. 1904 veya sonraki bir sürümde olduğunuz sürece hizmetlerin Azure Stack Hub ile en iyi şekilde uyumlu olması için bu profili kullanın.

  • com.microsoft.azure.profile_2018_03_01_hybrid: Azure Stack Hub için oluşturulan profil. Hizmetlerin Azure Stack Hub 1808 veya sonraki sürümleriyle uyumlu olması için bu profili kullanın.

  • com.microsoft.azure: Tüm hizmetlerin en son sürümlerinden oluşan profil. Tüm hizmetlerin en son sürümlerini kullanın.

Azure Stack Hub ve API profilleri hakkında daha fazla bilgi için bkz. API profillerinin özeti.

Azure Java SDK API profili kullanımı

Aşağıdaki kod, Azure Stack Hub'da hizmet sorumlusunun kimliğini doğrular. Kiracı kimliğini ve Azure Stack Hub'a özgü kimlik doğrulama tabanını kullanarak bir belirteç oluşturur:

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());

Bu kod, uygulamanızı Azure Stack Hub'a başarıyla dağıtmak için API profili bağımlılıklarını kullanmanıza olanak tanır.

Azure Stack Hub ortam ayarı işlevlerini tanımlama

Azure Stack Hub bulutunu doğru uç noktalarla kaydetmek için aşağıdaki kodu kullanın:

// 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('.')));
                }
            });

getActiveDirectorySettings Önceki koddaki çağrı, meta veri uç noktalarından uç noktaları alır. Yapılan çağrıdan ortam değişkenlerini belirtir:

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;
}

Örnek birim testi projesi

  1. Aşağıdaki komutu kullanarak depoyu kopyalayın:

    git clone https://github.com/Azure-Samples/Hybrid-Java-Samples.git -b resourcegroup-2019-03-01-hybrid
    
  2. Bir Azure hizmet sorumlusu oluşturun ve aboneliğe erişmek için bir rol atayın. Hizmet sorumlusu oluşturma yönergeleri için bkz. Sertifikayla hizmet sorumlusu oluşturmak için Azure PowerShell kullanma.

  3. Aşağıdaki gerekli ortam değişkenlerini alın:

    • AZURE_TENANT_ID
    • AZURE_CLIENT_ID
    • AZURE_CLIENT_SECRET
    • AZURE_SUBSCRIPTION_ID
    • ARM_ENDPOINT
    • RESOURCE_LOCATION
  4. Komut istemini kullanarak oluşturduğunuz hizmet sorumlusundan alınan bilgileri kullanarak aşağıdaki ortam değişkenlerini ayarlayın:

    • 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}

    Windows'da dışarı aktarma yerine set kullanın.

  5. getActiveDirectorySettings azure Resource Manager meta veri uç noktalarını almak için işlevini kullanın.

    // Get Azure Stack Hub cloud endpoints
    final HashMap<String, String> settings = getActiveDirectorySettings(armEndpoint);
    
  6. Pom.xml dosyasına aşağıdaki bağımlılığı ekleyerek Azure Stack Hub için 2019-03-01-karma profilini kullanın. Bu bağımlılık İşlem, Ağ, Depolama, Key Vault ve App Services kaynak sağlayıcıları için bu profille ilişkili modülleri yükler:

    <dependency>
      <groupId>com.microsoft.azure.profile_2019_03_01_hybrid</groupId>
      <artifactId>azure</artifactId>
      <version>1.0.0-beta-1</version>
    </dependency>
    
  7. Ortam değişkenlerini ayarlamak için açık olan komut istemine aşağıdaki komutu girin:

    mvn clean compile exec:java
    

Örnekler

Güncel güncelleştirme (izleme 2) örnek kodu için bu örnek depoya bakın. 1 . örnek kodu izlemek için bu örnek depoya bakın. Kök README.md , genel gereksinimleri açıklar ve her alt dizin, bu örneğin nasıl çalıştırıldığına ilişkin kendi README.md örneği içeren belirli bir örneği içerir.

Azure Stack sürümü 2008 veya profili 2019-03-01 için geçerli olan örnek için buraya ve aşağıya bakın.

Sonraki adımlar

API profilleri hakkında daha fazla bilgi edinin: