Implementar una aplicación web en Amazon EC2

GUÍA DE INTRODUCCIÓN

Módulo 2: Automatizar la configuración

En este módulo aprenderá a utilizar los datos de usuario para configurar una instancia EC2 e instalar paquetes de software en la instancia EC2

Introducción

Cuando lanza una instancia en Amazon EC2, tiene la opción de pasarle datos de usuario que pueden utilizarse para realizar tareas de configuración automatizadas comunes e incluso ejecutar scripts después de que se inicie la instancia. Utilizará esta característica para simplificar la implementación de la aplicación, especificando el software que se instalará y configurará en el primer lanzamiento, y copiar la aplicación de ejemplo en la instancia. Este módulo cubrirá la creación de los datos de usuario y su adición a la instancia EC2, creada en el módulo anterior.

Lo que aprenderá

  • Cómo se añaden los datos de usuario en la instancia EC2
  • Crear los datos de usuario para instalar y configurar todos los paquetes necesarios en el SO
  • Implementar su aplicación web copiándola en la instancia

 Tiempo de realización

5 minutos

 Requisitos previos del módulo

  • Una cuenta de AWS con acceso de nivel de administrador**
  • Navegador recomendado: la última versión de Chrome o Firefox

[**] Es posible que las cuentas creadas en las últimas 24 horas aún no tengan acceso a los servicios necesarios para este tutorial.

Implementación

Añadir datos de usuario a la instancia EC2

La aplicación web de ejemplo alojada en la carpeta SampleApp es una aplicación de Python que va a implementar. Requiere Nginx y uWSGI para ejecutarse. Para instalar estos componentes, debe seguir varios pasos. En primer lugar, debe instalar todos los paquetes del SO, configurar nginx y uwsgi, asegurarse de que se estén ejecutando y copiar la aplicación de ejemplo en la instancia. Un archivo de script que configura todos estos pasos de instalación se incluye en SampleApp/configure_amz_linux_sample_app.sh. Examine los pasos descritos en este archivo si desea obtener más información sobre cómo se configura la instancia.

Para implementar la aplicación web, debe añadir el código a CDK que copiará los archivos y scripts de configuración y la aplicación de ejemplo en S3. Tiene que configurar los scripts de configuración. Para ello, añada el siguiente código en ec2-cdk-stack.ts debajo del código anterior:

// Use an asset to allow uploading files to S3, and then download it to the EC2 instance as part of the user data

    // --- Sample App ---
    // Upload the sample app  to S3
    const sampleAppAsset = new s3assets.Asset(this, "SampleAppAsset", {
      path: path.join(__dirname, "../../SampleApp"),
    });

    // Allow EC2 instance to read the file
    sampleAppAsset.grantRead(role);

    // Download the file from S3, and store the full location and filename as a variable
    const sampleAppFilePath = ec2Instance.userData.addS3DownloadCommand({
      bucket: sampleAppAsset.bucket,
      bucketKey: sampleAppAsset.s3ObjectKey,
    });

    // --- Sample App ---

    // --- Configuration Script ---
    // Upload the configuration file to S3
    const configScriptAsset = new s3assets.Asset(this, "ConfigScriptAsset", {
      path: path.join(__dirname, "../../SampleApp/configure_amz_linux_sample_app.sh"),
    });

    // Allow EC2 instance to read the file
    configScriptAsset.grantRead(ec2Instance.role);

    // Download the file from S3, and store the full location and filename as a variable
    const configScriptFilePath = ec2Instance.userData.addS3DownloadCommand({
      bucket: configScriptAsset.bucket,
      bucketKey: configScriptAsset.s3ObjectKey,
    });

    // Add a line to the user data to executy the downloaded file
    ec2Instance.userData.addExecuteFileCommand({
      filePath: configScriptFilePath,
      arguments: sampleAppFilePath,
    });

    // --- Configuration Script ---

Todos los pasos se añadirán al script de datos de usuario de la instancia y se ejecutarán en el primer lanzamiento. Para poder realizar la implementación, debe realizar otro paso: añadir salidas a la pila CDK para facilitar el SSH en la instancia. En la infraestructura anterior, creó una clave SSH, que está almacenada en AWS Secret Manager. Para descargarla en su estación de trabajo, debe recuperarla. También necesitará la IP pública de la instancia y el comando SSH para ejecutar. 

Añada el siguiente código a la pila, en la parte inferior:

// Create outputs for connecting

    // Output the public IP address of the EC2 instance
    new cdk.CfnOutput(this, "IP Address", {
      value: ec2Instance.instancePublicIp,
    });

    // Command to download the SSH key
    new cdk.CfnOutput(this, "Download Key Command", {
      value:
        "aws secretsmanager get-secret-value --secret-id ec2-ssh-key/cdk-keypair/private --query SecretString --output text > cdk-key.pem && chmod 400 cdk-key.pem",
    });

    // Command to access the EC2 instance using SSH
    new cdk.CfnOutput(this, "ssh command", {
      value:
        "ssh -i cdk-key.pem -o IdentitiesOnly=yes ec2-user@" +
        ec2Instance.instancePublicIp,
    });

Estas tres salidas le mostrarán lo siguiente:

  • Cómo descargar la clave SSH para acceder a la instancia
  • La IP pública de la instancia
  • Un comando SSH para acceder a la instancia.

Ya está todo listo para implementar la pila.

Conclusión

En este módulo aprendió a añadir datos de usuario a una instancia EC2 para permitir su configuración cuando se inicia por primera vez. Lo utilizó para instalar todas las dependencias, configurar nginx y uwsgi e implementar la aplicación de ejemplo. En el módulo siguiente implementará la pila en la aplicación de ejemplo.

Módulo 3: Implementar la pila de CDK

Háganos saber su opinión.

Agradecemos sus comentarios
Nos alegra que esta página le haya ayudado. ¿Le gustaría compartir detalles adicionales para ayudarnos a seguir mejorando?
Cerrar
Agradecemos sus comentarios
Lamentamos que esta página no le haya ayudado. ¿Le gustaría compartir detalles adicionales para ayudarnos a seguir mejorando?
Cerrar