Creación de un servidor de blocs de notas asociado a un punto de conexión de desarrollo - AWS Glue

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Creación de un servidor de blocs de notas asociado a un punto de conexión de desarrollo

Un método para probar su código de ETL consiste en usar un bloc de notas Apache Zeppelin que se ejecute en una instancia de Amazon Elastic Compute Cloud (Amazon EC2). Al usar AWS Glue para crear un servidor de blocs de notas en una instancia de Amazon EC2, existen varias medidas que debe implementar para configurar su entorno de forma segura. El punto de enlace de desarrollo se crea para ser accesible desde un solo cliente. Para simplificar su configuración, comience creando un punto de enlace de desarrollo que se use desde un servidor de blocs de notas en Amazon EC2.

En las siguientes secciones se explican algunas de las elecciones que se realizarán y las medidas que se tomarán para crear un servidor de blocs de notas de forma segura. Estas instrucciones realizan las siguientes tareas:

  • Crear un punto de enlace de desarrollo.

  • Poner en marcha un servidor de blocs de notas en una instancia de Amazon EC2.

  • Conectar un servidor de blocs de notas a un punto de enlace de desarrollo de forma segura.

  • Conectar un navegador web a un servidor de blocs de notas de forma segura.

Opciones de la consola de AWS Glue

Para obtener más información acerca de la administración de puntos de enlace de desarrollo mediante la consola de AWS Glue, consulte Visualización de las propiedades del punto de conexión de desarrollo.

Para crear el punto de enlace de desarrollo y el servidor de blocs de notas
  1. Inicie sesión en AWS Management Console y abra la consola de AWS Glue en https://console.aws.amazon.com/glue/.

  2. Elija Dev endpoints (Puntos de enlace de desarrollo) en el panel de navegación y, a continuación, elija Add endpoint (Añadir punto de enlace) para crear un punto de enlace de desarrollo.

  3. Siga los pasos del asistente para crear un punto de enlace de desarrollo que tenga previsto asociar a un servidor de blocs de notas que se ejecute en Amazon EC2.

    En el paso Add SSH public key (optional) [Añadir una clave pública de SSH (opcional)], deje la clave pública vacía. En un paso posterior, usted genera y envía una clave pública al punto de enlace de desarrollo y una clave privada correspondiente a la instancia de Amazon EC2 que ejecuta el servidor de blocs de notas.

  4. Cuando se aprovisione el punto de enlace de desarrollo, continúe con los pasos para crear un servidor de blocs de notas en Amazon EC2. En la página de la lista de puntos de enlace de desarrollo, elija el punto de enlace de desarrollo que acaba de crear. Elija Action (Acción), Create Zeppelin notebook server (Crear servidor de blocs de notas de Zeppelin) y rellene la información acerca de su servidor de blocs de notas. (Para obtener más información, consulte Visualización de las propiedades del punto de conexión de desarrollo.)

  5. Elija Finalizar. El servidor de blocs de notas se crea con una pila de AWS CloudFormation. La consola de AWS Glue le proporciona la información que necesita para obtener acceso a la instancia de Amazon EC2.

    Una vez que esté listo el servidor de blocs de notas, debe ejecutar un script en la instancia de Amazon EC2 para completar la configuración.

Acciones en la instancia de Amazon EC2 para configurar el acceso

Una vez que cree el punto de enlace de desarrollo y el servidor de blocs de notas, complete las siguientes acciones para configurar la instancia de Amazon EC2 para su servidor de blocs de notas.

Para configurar el acceso al servidor de blocs de notas
  1. Si su escritorio local ejecuta Windows, necesita una forma de ejecutar comandos SSH y SCP para interactuar con la instancia de Amazon EC2. Podrá encontrar instrucciones de conexión en la documentación de Amazon EC2. Para obtener más información, consulte Conexión a la instancia Linux desde Windows utilizando PuTTY.

  2. Puede conectarse a su bloc de notas Zeppelin mediante una URL HTTPS. Esto requiere un certificado de capa de conexión segura (SSL) en su instancia de Amazon EC2. El servidor de blocs de notas debe proporcionar a los navegadores web un certificado para validar su autenticidad y permitir el tráfico cifrado a la información confidencial como, por ejemplo, las contraseñas.

    Si tiene un certificado SSL de una entidad de certificación (CA), copie su almacén de claves de certificado SSL en la instancia de Amazon EC2 en una ruta a la que ec2-user tenga acceso de escritura, como /home/ec2-user/. Consulte los detalles del servidor de blocs de notas de la consola de AWS Glue del comando scp en Copy certificate (Copiar certificado). Por ejemplo, abra una ventana de terminal y escriba el siguiente comando:

    scp -i ec2-private-key keystore.jks ec2-user@dns-address-of-ec2-instance:~/keystore.jks

    El truststore, keystore.jks, que se copia en la instancia de Amazon EC2, debe haberse creado con una contraseña.

    ec2-private-key es la clave necesaria para obtener acceso a la instancia de Amazon EC2. Cuando creó el servidor de blocs de notas, proporcionó un par de claves de Amazon EC2 y guardó esta clave privada de EC2 en su equipo local. Es posible que tenga que editar el comando Copiar certificado de manera que apunte al archivo de la clave de su equipo local. También puede encontrar el nombre de este archivo de la clave en los detalles de la consola de Amazon EC2 de su servidor de blocs de notas.

    La dns-address-of-ecinstancia de 2 es la dirección de la instancia de Amazon EC2 donde se copia el almacén de claves.

    nota

    Hay muchas formas de generar un certificado SSL. Usar un certificado generado con una entidad de certificación (CA) es una práctica recomendada de seguridad. Puede que tenga que solicitar la ayuda de un administrador de su organización para obtener el certificado. Siga las políticas de su organización al crear un keystore para el servidor de blocs de notas. Para obtener más información, consulte Certificate authority en Wikipedia.

    Otro método consiste en generar un certificado autofirmado con un script en su instancia de Amazon EC2 del servidor de blocs de notas. Sin embargo, con este método, cada equipo local que se conecta al servidor de blocs de notas se debe configurar para confiar en el certificado generado antes de conectarse al servidor de blocs de notas. Además, al vencer el certificado generado, debe generarse un nuevo certificado y debe ser de confianza en todos los equipos locales. Para obtener más información acerca de la configuración, consulte Certificados autofirmados. Para obtener más información, consulte Certificado autofirmado en Wikipedia.

  3. Con SSH, conéctese a la instancia de Amazon EC2 que ejecuta su servidor de blocs de notas, por ejemplo:

    ssh -i ec2-private-key ec2-user@dns-address-of-ec2-instance

    ec2-private-key es la clave necesaria para obtener acceso a la instancia de Amazon EC2. Cuando creó el servidor de blocs de notas, proporcionó un par de claves de Amazon EC2 y guardó esta clave privada de EC2 en su equipo local. Es posible que tenga que editar el comando Copiar certificado de manera que apunte al archivo de la clave de su equipo local. También puede encontrar el nombre de este archivo de la clave en los detalles de la consola de Amazon EC2 de su servidor de blocs de notas.

    La dns-address-of-ecinstancia de 2 es la dirección de la instancia de Amazon EC2 donde se copia el almacén de claves.

  4. Desde el directorio de inicio /home/ec2-user/, ejecute el script ./setup_notebook_server.py. AWS Glue creó y colocó este script en la instancia de Amazon EC2. El script realiza las siguientes acciones:

    • Solicita una contraseña del bloc de notas Zeppelin: la contraseña es SHA-256 hash salted-and-iterated y una sal de 128 bits aleatoria se guarda en elshiro.ini archivo con acceso restringido. Esta es la práctica recomendada disponible para Apache Shiro, el paquete de autorización usado por Apache Zeppelin.

    • Genera claves públicas y privadas de SSH: el script sobrescribe cualquier clave pública de SSH existente en el punto de enlace de desarrollo asociado al servidor de blocs de notas. Como resultado, ningún otro servidor de blocs de notas, REPL (Read-Eval-Print-Loop) o IDE conectado a este punto de enlace de desarrollo podrá conectarse más.

    • Comprueba o genera un certificado SSL: use un certificado SSL que se generó con una entidad de certificación (CA) o genere un certificado con este script. Si copió un certificado, el script solicita la ubicación del archivo de keystore. Proporcione la ruta completa de la instancia Amazon EC2, por ejemplo, /home/ec2-user/keystore.jks. Se comprueba el certificado SSL.

    El siguiente resultado de ejemplo del script setup_notebook_server.py genera un certificado SSL autofirmado.

    Starting notebook server setup. See AWS Glue documentation for more details. Press Enter to continue... Creating password for Zeppelin user admin Type the password required to access your Zeppelin notebook: Confirm password: Updating user credentials for Zeppelin user admin Zeppelin username and password saved. Setting up SSH tunnel to devEndpoint for notebook connection. Do you want a SSH key pair to be generated on the instance? WARNING this will replace any existing public key on the DevEndpoint [y/n] y Generating SSH key pair /home/ec2-user/dev.pem Generating public/private rsa key pair. Your identification has been saved in /home/ec2-user/dev.pem. Your public key has been saved in /home/ec2-user/dev.pem.pub. The key fingerprint is: 26:d2:71:74:b8:91:48:06:e8:04:55:ee:a8:af:02:22 ec2-user@ip-10-0-0-142 The key's randomart image is: +--[ RSA 2048]----+ |.o.oooo..o. | | o. ...+. | | o . . .o | | .o . o. | | . o o S | |E. . o | |= | |.. | |o.. | +-----------------+ Attempting to reach AWS Glue to update DevEndpoint's public key. This might take a while. Waiting for DevEndpoint update to complete... Waiting for DevEndpoint update to complete... Waiting for DevEndpoint update to complete... DevEndpoint updated to use the public key generated. Configuring Zeppelin server... ******************** We will configure Zeppelin to be a HTTPS server. You can upload a CA signed certificate for the server to consume (recommended). Or you can choose to have a self-signed certificate created. See AWS Glue documentation for additional information on using SSL/TLS certificates. ******************** Do you have a JKS keystore to encrypt HTTPS requests? If not, a self-signed certificate will be generated. [y/n] n Generating self-signed SSL/TLS certificate at /home/ec2-user/ec2-192-0-2-0.compute-1.amazonaws.com.jks Self-signed certificates successfully generated. Exporting the public key certificate to /home/ec2-user/ec2-192-0-2-0.compute-1.amazonaws.com.der Certificate stored in file /home/ec2-user/ec2-192-0-2-0.compute-1.amazonaws.com.der Configuring Zeppelin to use the keystore for SSL connection... Zeppelin server is now configured to use SSL. SHA256 Fingerprint=53:39:12:0A:2B:A5:4A:37:07:A0:33:34:15:B7:2B:6F:ED:35:59:01:B9:43:AF:B9:50:55:E4:A2:8B:3B:59:E6 ********** The public key certificate is exported to /home/ec2-user/ec2-192-0-2-0.compute-1.amazonaws.com.der The SHA-256 fingerprint for the certificate is 53:39:12:0A:2B:A5:4A:37:07:A0:33:34:15:B7:2B:6F:ED:35:59:01:B9:43:AF:B9:50:55:E4:A2:8B:3B:59:E6. You may need it when importing the certificate to the client. See AWS Glue documentation for more details. ********** Press Enter to continue... All settings done! Starting SSH tunnel and Zeppelin... autossh start/running, process 6074 Done. Notebook server setup is complete. Notebook server is ready. See /home/ec2-user/zeppelin/logs/ for Zeppelin log files.
  5. Compruebe si hay errores al intentar iniciar el servidor Zeppelin en los archivos de registro que se encuentran en /home/ec2-user/zeppelin/logs/.

Acciones en su equipo local para conectarse al servidor Zeppelin

Después de crear el punto de enlace de desarrollo y el servidor de blocs de notas, conéctese a su bloc de notas Zeppelin. Dependiendo de cómo configure su entorno, podrá conectarse de una de las siguientes maneras:

  1. Conéctese con un certificado de CA de confianza. Si proporcionó un certificado SSL de una entidad de certificación (CA) al configurarse el servidor Zeppelin en la instancia de Amazon EC2, elija este método. Para conectarse con HTTPS en el puerto 443, abra un navegador web y escriba la URL del servidor de blocs de notas. Puede encontrar esta URL en la página de detalles del bloc de notas de desarrollo correspondiente a su servidor de blocs de notas. Escriba el contenido del campo HTTPS URL (URL HTTPS); por ejemplo:

    https://public-dns-address-of-ec2-instance:443
  2. Conéctese con un certificado autofirmado. Si ejecutó el script setup_notebook_server.py para generar un certificado SSL, confíe primero en la conexión entre el navegador web y el servidor de blocs de notas. Los detalles de esta acción varían según el sistema operativo y el navegador web. El flujo de trabajo general es el siguiente:

    1. Obtenga acceso al certificado SSL desde el equipo local. En algunas situaciones, esto requiere que copie el certificado SSL de la instancia de Amazon EC2 en el equipo local, por ejemplo:

      scp -i path-to-ec2-private-key ec2-user@notebook-server-dns:/home/ec2-user/notebook-server-dns.der notebook-server-dns.der
    2. Importe y vea (o vea y, a continuación, importe) el certificado en el administrador de certificados que usa su sistema operativo y navegador. Compruebe que coincide con el certificado generado en la instancia de Amazon EC2.

    Navegador Mozilla Firefox:

    En Firefox, podría producirse un error como Your connection is not secure (Su conexión no es segura). Para configurar la conexión, los pasos generales son los siguientes (los pasos pueden variar según la versión de Firefox):

    1. Busque la página Options (Opciones) o Preferences (Preferencias) y vaya a la página para elegir View Certificates (Ver certificados). Esta opción podría aparecer en la pestaña Privacy (Privacidad), Security (Seguridad) o Advanced (Opciones avanzadas).

    2. En la ventana Certificate Manager (Administrador de certificados), elija la pestaña Servers (Servidores) y, a continuación, elija Add Exception (Añadir excepción).

    3. Escriba la Location (Ubicación) HTTPS del servidor de blocs de notas en Amazon EC2 y, a continuación, elija Get Certificate (Obtener certificado). Elija View (Ver).

    4. Compruebe que el Common Name (CN) [Nombre común (CN)] coincide con el DNS de la instancia de Amazon EC2 del servidor de blocs de notas. Asimismo, compruebe que la SHA-256 Fingerprint [Huella digital de algoritmo hash seguro (SHA)-256] coincide con la del certificado generado en la instancia de Amazon EC2. Puede encontrar la huella digital SHA-256 del certificado en la salida del script setup_notebook_server.py, o bien ejecutando un comando openssl en la instancia del bloc de notas.

      openssl x509 -noout -fingerprint -sha256 -inform der -in path-to-certificate.der
    5. Si los valores coinciden, confírmelo para confiar en el certificado.

    6. Cuando venza el certificado, genere un nuevo certificado en la instancia de Amazon EC2 y guárdelo en su equipo local.

    Navegador Google Chrome en macOS:

    Al usar Chrome en macOS, podría producirse un error como Your connection is not private (Su conexión no es privada). Para configurar la conexión, los pasos generales son los siguientes:

    1. Copie el certificado SSL de la instancia de Amazon EC2 a su equipo local.

    2. Elija Preferences (Preferencias) o Settings (Configuración) para encontrar la página Settings (Configuración). Vaya a la sección Advanced (Opciones avanzadas) y, a continuación, busque la sección Privacy and security (Privacidad y seguridad). Elija Administrar certificados.

    3. En la ventana Keychain Access (Acceso a Keychain), diríjase a Certificates (Certificados) y elija File (Archivo), Import items (Importar elementos) para importar el certificado SSL.

    4. Compruebe que el Common Name (CN) [Nombre común (CN)] coincide con el DNS de la instancia de Amazon EC2 del servidor de blocs de notas. Asimismo, compruebe que la SHA-256 Fingerprint [Huella digital de algoritmo hash seguro (SHA)-256] coincide con la del certificado generado en la instancia de Amazon EC2. Puede encontrar la huella digital SHA-256 del certificado en la salida del script setup_notebook_server.py, o bien ejecutando un comando openssl en la instancia del bloc de notas.

      openssl x509 -noout -fingerprint -sha256 -inform der -in path-to-certificate.der
    5. Confíe en el certificado estableciendo Always Trust (Confiar siempre).

    6. Cuando venza el certificado, genere un nuevo certificado en la instancia de Amazon EC2 y guárdelo en su equipo local.

    Navegador Chrome en Windows:

    Al usar Chrome en Windows, podría producirse un error como Your connection is not private (Su conexión no es privada). Para configurar la conexión, los pasos generales son los siguientes:

    1. Copie el certificado SSL de la instancia de Amazon EC2 a su equipo local.

    2. Busque la página Settings (Configuración), vaya a la sección Advanced (Opciones avanzadas) y, a continuación, busque la sección Privacy and security (Privacidad y seguridad). Elija Administrar certificados.

    3. En la ventana Certificados, vaya a la pestaña Entidades de certificación raíz de confianza y elija Import (Importar) para importar el certificado SSL.

    4. Coloque el certificado en el Certificate store (Almacén de certificados) para Trusted Root Certification Authorities (Entidades de certificación raíz de confianza).

    5. Confíe instalando el certificado.

    6. Compruebe que la SHA-1 Thumbprint (Huella digital SHA-1) que muestra el certificado en el navegador coincide con la del certificado generado en la instancia de Amazon EC2. Para encontrar el certificado en el navegador, diríjase a la lista de Trusted Root Certification Authorities (Entidades de certificación raíz de confianza) y elija el certificado Issued To (Emitido para) la instancia de Amazon EC2. Elija View (Ver) el certificado, elija Details (Detalles) y, a continuación, consulte Thumbprint (Huella digital) para sha1. Puede encontrar la huella digital SHA-1 correspondiente del certificado al ejecutar un comando openssl en la instancia de Amazon EC2.

      openssl x509 -noout -fingerprint -sha1 -inform der -in path-to-certificate.der
    7. Cuando venza el certificado, genere un nuevo certificado en la instancia de Amazon EC2 y guárdelo en su equipo local.

    Navegador Microsoft Internet Explorer en Windows:

    Al usar Internet Explorer en Windows, podría producirse un error como Your connection is not private (Su conexión no es privada). Para configurar la conexión, los pasos generales son los siguientes:

    1. Copie el certificado SSL de la instancia de Amazon EC2 a su equipo local.

    2. Busque la página Internet Options (Opciones de Internet), vaya a la pestaña Content (Contenido) y, a continuación, diríjase a la sección Certificates (Certificados).

    3. En la ventana Certificados, vaya a la pestaña Entidades de certificación raíz de confianza y elija Import (Importar) para importar el certificado SSL.

    4. Coloque el certificado en el Certificate store (Almacén de certificados) para Trusted Root Certification Authorities (Entidades de certificación raíz de confianza).

    5. Confíe instalando el certificado.

    6. Compruebe que la SHA-1 Thumbprint (Huella digital SHA-1) que muestra el certificado en el navegador coincide con la del certificado generado en la instancia de Amazon EC2. Para encontrar el certificado en el navegador, diríjase a la lista de Trusted Root Certification Authorities (Entidades de certificación raíz de confianza) y elija el certificado Issued To (Emitido para) la instancia de Amazon EC2. Elija View (Ver) el certificado, elija Details (Detalles) y, a continuación, consulte Thumbprint (Huella digital) para sha1. Puede encontrar la huella digital SHA-1 correspondiente del certificado al ejecutar un comando openssl en la instancia de Amazon EC2.

      openssl x509 -noout -fingerprint -sha1 -inform der -in path-to-certificate.der
    7. Cuando venza el certificado, genere un nuevo certificado en la instancia de Amazon EC2 y guárdelo en su equipo local.

    Una vez que confíe en el certificado, para conectarse con HTTPS en el puerto 443, abra un navegador web y escriba la URL del servidor de blocs de notas. Puede encontrar esta URL en la página de detalles del bloc de notas de desarrollo correspondiente a su servidor de blocs de notas. Escriba el contenido del campo HTTPS URL (URL HTTPS); por ejemplo:

    https://public-dns-address-of-ec2-instance:443