Compartir a través de


Uso de perfiles de versión de API con Java en Azure Stack Hub

Importante

El SDK de Java se ha actualizado de la pista 1 al seguimiento 2. Se recomienda migrar al SDK de seguimiento 2 lo antes posible. Para obtener instrucciones, consulte esta guía de migración.

El SDK de Java para Resource Manager de Azure Stack Hub proporciona herramientas que le ayudarán a crear y administrar la infraestructura. Los proveedores de recursos del SDK incluyen proceso, redes, almacenamiento, servicios de aplicaciones y Azure Key Vault. Puede encontrar el repositorio ejemplos de Java híbrido en GitHub. Este artículo le ayudará a configurar el entorno, obtener las credenciales adecuadas, tomar el repositorio y crear un grupo de recursos en Azure Stack Hub.

El uso del SDK de Java permite una verdadera experiencia de desarrollador en la nube híbrida. El cambio de las dependencias de versión en en el POM.xml SDK de Java permite el desarrollo en la nube híbrida, ya que le ayuda a cambiar entre los recursos globales de Azure a los recursos de Azure Stack Hub.

Para usar la versión más reciente de los servicios, use el perfil más reciente como dependencia.

Puede dirigirse a la aplicación al recurso en Azure tack Hub tomando la dependencia com.azure.resourcemanager existente y cambie la versión de x.y.z a x.y.z-hybrid. Los paquetes híbridos, que proporcionan compatibilidad con Azure Stack Hub, usan un -hybrid sufijo al final de la versión, por ejemplo, 1.0.0-hybrid. Esto apuntará a una colección estática de puntos de conexión asociados a la versión.

Para obtener el perfil más reciente, tome la dependencia de com.azure.resourcemanager existente y cambie la versión a la más reciente. Los paquetes de Java de perfil más recientes proporcionan una experiencia coherente con Azure. Los paquetes comparten el mismo identificador de grupo que Azure com.azure.resourcemanager. El identificador de artefacto y los espacios de nombres también son los mismos que Los espacios de nombres globales de Azure. Esto ayuda a migrar la aplicación de Azure a Azure Stack Hub. Para más información sobre los puntos de conexión usados en Azure Stack Hub como análisis del perfil híbrido, consulte resumen de perfiles de API.

El perfil se especifica en el pom.xml archivo del proyecto de Maven como dependencia. El perfil carga los módulos automáticamente si elige la clase correcta en la lista desplegable (como lo haría con .NET).

Configure tu entorno de desarrollo

Para preparar el entorno para ejecutar el SDK, puede usar un IDE como Eclipse o Visual Studio Code, pero deberá tener instalado Git, el SDK de Java y Apache Maven. Puede encontrar detalles sobre los requisitos previos para la configuración del entorno de desarrollo en Uso del SDK de Azure para Java.

  1. Instale Git. Puede encontrar las instrucciones oficiales para instalar Git en Introducción a la instalación de Git.

  2. Instale el SDK de Java y establezca JAVA_HOME la variable de entorno en la ubicación de los archivos binarios del Kit de desarrollo de Java. Puede encontrar las instrucciones de medios de instalación descargables para OpenJDK. Instale la versión 8 o posterior del Kit para desarrolladores de Java.

  3. Instale Apache Maven. Puede encontrar instrucciones en el proyecto de Apache Maven. La instalación de Apache Maven es 3.0 o superior.

Perfiles de versión de Java y API

Para usar las versiones más recientes de todos los servicios, use el perfil más reciente como dependencia.

  • Para usar el perfil más reciente, la dependencia es com.microsoft.azure.

  • Para usar los servicios compatibles más recientes disponibles en Azure Stack Hub, use el perfil de com.microsoft.azure.profile_2019_03_01_hybrid .

    • El perfil se especifica en el archivo Pom.xml como una dependencia, que carga los módulos automáticamente si elige la clase correcta en la lista desplegable (como lo haría con .NET).
  • Las dependencias aparecen de la siguiente manera:

    <dependency>
    <groupId>com.microsoft.azure.profile_2019_03_01_hybrid</groupId>
    <artifactId>azure</artifactId>
    <version>1.0.0-beta-1</version>
    </dependency>
    
  • Para usar versiones de API específicas para un tipo de recurso en un proveedor de recursos específico, use las versiones de API específicas definidas a través de IntelliSense.

Puedes combinar todas las opciones de la misma aplicación.

Instalación del SDK de Java de Azure

Siga estos pasos para instalar el SDK de Java:

  1. Siga las instrucciones oficiales para instalar Git. Consulte Introducción a la instalación de Git.

  2. Siga las instrucciones para instalar el SDK de Java y Maven. La versión correcta es la versión 8 del Kit para desarrolladores de Java. La versión correcta de Apache Maven es 3.0 o superior. Para completar el inicio rápido, la JAVA_HOME variable de entorno debe establecerse en la ubicación de instalación del Kit de desarrollo de Java. Para obtener más información, consulte Creación de la primera función con Java y Maven.

  3. Para instalar los paquetes de dependencia correctos, abra el archivo Pom.xml en la aplicación Java. Agregue una dependencia, como se muestra en el código siguiente:

    <dependency>
    <groupId>com.microsoft.azure.profile_2019_03_01_hybrid</groupId>
    <artifactId>azure</artifactId>
    <version>1.0.0-beta-1</version>
    </dependency>
    
  4. El conjunto de paquetes que se deben instalar depende de la versión del perfil que quiera usar. Los nombres de paquete de las versiones de perfil son:

    • com.microsoft.azure.profile_2019_03_01_hybrid
    • com.microsoft.azure
      • más reciente

Perfiles

En el caso de los perfiles que contienen fechas, para usar otro perfil o versión del SDK, sustituya la fecha de com.microsoft.azure.profile<date>_hybrid. Por ejemplo, para la versión 2008, el perfil es 2019_03_01y la cadena se convierte en com.microsoft.azure.profile_2019_03_01_hybrid. Tenga en cuenta que, a veces, el equipo del SDK cambia el nombre de los paquetes, por lo que es posible que no funcione simplemente la fecha de una cadena con una fecha diferente. Consulte la tabla siguiente para obtener una asociación de perfiles y versiones de Azure Stack.

Versión de Azure Stack Perfil
2311 2020_09_01
2301 2020_09_01
2206 2020_09_01
2108 2020_09_01
2102 2020_09_01
2008 2019_03_01

Para más información sobre los perfiles de API y Azure Stack Hub, consulte resumen de perfiles de API.

Suscripción

Si aún no tiene una suscripción, cree una suscripción y guarde el identificador de suscripción que se usará más adelante. Para obtener información sobre cómo crear una suscripción, consulte este documento.

Principal de servicio

Se debe crear y guardar en algún lugar una entidad de servicio y su información de entorno asociada. Se recomienda la entidad de servicio con owner rol, pero dependiendo del ejemplo, un contributor rol puede ser suficiente. Consulte el archivo Léame en el repositorio de ejemplo para conocer los valores necesarios. Puede leer estos valores en cualquier formato compatible con el lenguaje sdk, como desde un archivo JSON (que usan nuestros ejemplos). En función de la ejecución del ejemplo, no se pueden usar todos estos valores. Consulte el repositorio de ejemplo para obtener código de ejemplo actualizado o más información.

Id. de inquilino

Para buscar el directorio o el identificador de inquilino de Azure Stack Hub, siga las instrucciones de este artículo.

Registro de proveedores de recursos

Registre los proveedores de recursos necesarios siguiendo este documento. Estos proveedores de recursos serán necesarios en función de los ejemplos que quiera ejecutar. Por ejemplo, si desea ejecutar un ejemplo de máquina virtual, se requiere el registro del Microsoft.Compute proveedor de recursos.

Punto de conexión de Resource Manager de Azure Stack

Azure Resource Manager (ARM) es un marco de administración que permite a los administradores implementar, administrar y supervisar recursos de Azure. Azure Resource Manager puede controlar estas tareas como un grupo, en lugar de individualmente, en una sola operación. Puede obtener la información de metadatos del punto de conexión de Resource Manager. El punto de conexión devuelve un archivo JSON con la información necesaria para ejecutar el código.

  • ResourceManagerEndpointUrl en el Kit de desarrollo de Azure Stack (ASDK) es: https://management.local.azurestack.external/.
  • ResourceManagerEndpointUrl en sistemas integrados es: https://management.region.<fqdn>/, donde <fqdn> es el nombre de dominio completo.
  • Para recuperar los metadatos necesarios: <ResourceManagerUrl>/metadata/endpoints?api-version=1.0. Para ver las versiones de API disponibles, consulte Especificaciones de api rest de Azure. Por ejemplo, en 2020-09-01 la versión del perfil, puede cambiar a api-version2019-10-01 para el proveedor microsoft.resourcesde recursos .

JSON de ejemplo:

{
   "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"]
      }
}

Confiar en el certificado raíz de ca de Azure Stack Hub

Si usa el Kit de desarrollo de Azure Stack (ASDK), debe confiar en el certificado raíz de ca en el equipo remoto. No es necesario confiar en el certificado raíz de la entidad de certificación con los sistemas integrados de Azure Stack Hub.

Windows

  1. Exporte el certificado autofirmado de Azure Stack Hub al escritorio.

  2. En un símbolo del sistema, cambie el directorio a %JAVA_HOME%\bin.

  3. Ejecute el siguiente comando:

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

Perfiles de API existentes

  • com.microsoft.azure.profile_2019_03_01_hybrid: perfil más reciente creado para Azure Stack Hub. Use este perfil para que los servicios sean más compatibles con Azure Stack Hub, siempre y cuando esté en 1904 o posterior.

  • com.microsoft.azure.profile_2018_03_01_hybrid: perfil creado para Azure Stack Hub. Use este perfil para que los servicios sean compatibles con las versiones 1808 o posteriores de Azure Stack Hub.

  • com.microsoft.azure: perfil que consta de las versiones más recientes de todos los servicios. Use las versiones más recientes de todos los servicios.

Para más información sobre los perfiles de API y Azure Stack Hub, consulte resumen de perfiles de API.

Uso del perfil de la API del SDK de Java de Azure

El código siguiente autentica la entidad de servicio en Azure Stack Hub. Crea un token mediante el identificador de inquilino y la base de autenticación, que es específica de 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());

Este código le permite usar las dependencias del perfil de API para implementar la aplicación correctamente en Azure Stack Hub.

Definición de funciones de configuración del entorno de Azure Stack Hub

Para registrar la nube de Azure Stack Hub con los puntos de conexión correctos, use el código siguiente:

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

La getActiveDirectorySettings llamada en el código anterior recupera los puntos de conexión de los puntos de conexión de metadatos. Indica las variables de entorno de la llamada realizadas:

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

Proyecto de prueba unitaria de ejemplo

  1. Clone el repositorio mediante el comando siguiente:

    git clone https://github.com/Azure-Samples/Hybrid-Java-Samples.git -b resourcegroup-2019-03-01-hybrid
    
  2. Cree una entidad de servicio de Azure y asigne un rol para acceder a la suscripción. Para obtener instrucciones sobre cómo crear una entidad de servicio, consulte Uso de Azure PowerShell para crear una entidad de servicio con un certificado.

  3. Recupere las siguientes variables de entorno necesarias:

    • AZURE_TENANT_ID
    • AZURE_CLIENT_ID
    • AZURE_CLIENT_SECRET
    • AZURE_SUBSCRIPTION_ID
    • ARM_ENDPOINT
    • RESOURCE_LOCATION
  4. Establezca las siguientes variables de entorno mediante la información recuperada de la entidad de servicio que creó mediante el símbolo del sistema:

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

    En Windows, use set en lugar de exportar.

  5. Use la getActiveDirectorySettings función para recuperar los puntos de conexión de metadatos de Azure Resource Manager.

    // Get Azure Stack Hub cloud endpoints
    final HashMap<String, String> settings = getActiveDirectorySettings(armEndpoint);
    
  6. En el archivo Pom.xml , agregue la siguiente dependencia para usar el perfil 2019-03-01-hybrid para Azure Stack Hub. Esta dependencia instala los módulos asociados a este perfil para los proveedores de recursos Compute, Networking, Storage, Key Vault y App Services:

    <dependency>
      <groupId>com.microsoft.azure.profile_2019_03_01_hybrid</groupId>
      <artifactId>azure</artifactId>
      <version>1.0.0-beta-1</version>
    </dependency>
    
  7. En el símbolo del sistema que estaba abierto para establecer las variables de entorno, escriba el siguiente comando:

    mvn clean compile exec:java
    

Muestras

Consulte este repositorio de ejemplo para obtener código de ejemplo de actualización a fecha (seguimiento 2). Consulte este repositorio de ejemplo para realizar el seguimiento de 1 código de ejemplo. La raíz README.md describe los requisitos generales y cada subdirectorio contiene un ejemplo específico con su propio README.md modo de ejecutar ese ejemplo.

Consulte aquí el ejemplo aplicable a la versión 2008 o el perfil 2019-03-01 de Azure Stack y a continuación.

Pasos siguientes

Más información sobre los perfiles de API: