Amazon Elastic Compute Cloud
Guía del usuario de instancias de Linux

Amazon Linux

La Amazon Linux la proporciona Amazon Web Services (AWS). Se ha diseñado para proporcionar un entorno de ejecución estable, seguro y de alto rendimiento para las aplicaciones que se ejecutan en Amazon EC2. También incluye paquetes que permiten una fácil integración con AWS, incluidas herramientas de configuración de lanzamiento y muchas bibliotecas y herramientas populares de AWS. AWS proporciona actualizaciones continuas de seguridad y mantenimiento para todas las instancias que ejecutan Amazon Linux. Muchas aplicaciones desarrolladas en CentOS (y distribuciones similares) se ejecutan en Amazon Linux.

AWS ofrece dos versiones de Amazon Linux: Amazon Linux 2 y la Amazon Linux AMI. Para obtener más información, incluida la lista completa de AMI, consulte Amazon Linux 2 y Amazon Linux AMI. Para obtener imágenes de contenedor de Docker de Amazon Linux, visite amazonlinux en Docker Hub.

Si va a migrar desde otra distribución de Linux a Amazon Linux, recomendamos que migre a Amazon Linux 2. Si está utilizando actualmente la Amazon Linux AMI, recomendamos que migre a Amazon Linux 2. Para migrar a Amazon Linux 2, lance una instancia o cree una máquina virtual utilizando la imagen actual. Instale su aplicación en Amazon Linux 2, junto con todos los paquetes que necesite la aplicación. Pruebe la aplicación y realice los cambios necesarios para que se ejecute en Amazon Linux 2. Para obtener más información sobre cómo ejecutar Amazon Linux fuera de AWS, consulte Ejecución de Amazon Linux 2 como una máquina virtual local.

Conexión a una instancia de Amazon Linux

Amazon Linux no permite el SSH raíz remoto de forma predeterminada. Además, la autenticación de contraseñas se deshabilita para evitar ataques de contraseña a la fuerza. Para habilitar los inicios de sesión SSH para una instancia de Amazon Linux, debe proporcionar el par de claves para la instancia en el lanzamiento. También debe establecer el grupo de seguridad que se utiliza para lanzar la instancia y permitir el acceso SSH. De forma predeterminada, la única cuenta que puede iniciar sesión remotamente con SSH es ec2-user. Esta cuenta también dispone de privilegios sudo. Si habilita el inicio de sesión raíz remoto, tenga en cuenta que es menos seguro que basarse en pares de claves y un usuario secundario.

Identificación de las imágenes de Amazon Linux

Cada imagen contiene un archivo /etc/image-id exclusivo que la identifica. Este archivo contiene la siguiente información acerca de la imagen:

  • image_name, image_version, image_arch: valores de la receta de creación que ha utilizado Amazon para construir la imagen.

  • image_stamp: valor hexadecimal aleatorio exclusivo que se genera durante la creación de la imagen.

  • image_date: la hora UTC de creación de la imagen, con el formato AAAAMMDDhhmmss

  • recipe_name, recipe_id: nombre e ID de la receta de creación de Amazon utilizada para construir la imagen.

Amazon Linux contiene un archivo /etc/system-release que especifica la versión actual instalada. Este archivo se actualiza mediante yum y forma parte del RPM de system-release.

Amazon Linux también contiene una versión legible por una máquina de /etc/system-release que sigue la especificación de CPE; consulte /etc/system-release-cpe.

Amazon Linux 2

A continuación, se muestra un ejemplo de /etc/image-id para la versión actual de Amazon Linux 2:

[ec2-user ~]$ cat /etc/image-id image_name="amzn2-ami-hvm" image_version="2" image_arch="x86_64" image_file="amzn2-ami-hvm-2.0.20180810-x86_64.xfs.gpt" image_stamp="8008-2abd" image_date="20180811020321" recipe_name="amzn2 ami" recipe_id="c652686a-2415-9819-65fb-4dee-9792-289d-1e2846bd"

A continuación, se muestra un ejemplo de /etc/system-release para la versión actual de Amazon Linux 2:

[ec2-user ~]$ cat /etc/system-release Amazon Linux 2

A continuación, se muestra un ejemplo de /etc/os-release para Amazon Linux 2:

[ec2-user ~]$ cat /etc/os-release NAME="Amazon Linux" VERSION="2" ID="amzn" ID_LIKE="centos rhel fedora" VERSION_ID="2" PRETTY_NAME="Amazon Linux 2" ANSI_COLOR="0;33" CPE_NAME="cpe:2.3:o:amazon:amazon_linux:2" HOME_URL="https://amazonlinux.com/"

Amazon Linux AMI

A continuación, se muestra un ejemplo de /etc/image-id para la Amazon Linux AMI actual:

[ec2-user ~]$ cat /etc/image-id image_name="amzn-ami-hvm" image_version="2018.03" image_arch="x86_64" image_file="amzn-ami-hvm-2018.03.0.20180811-x86_64.ext4.gpt" image_stamp="cc81-f2f3" image_date="20180811012746" recipe_name="amzn ami" recipe_id="5b283820-dc60-a7ea-d436-39fa-439f-02ea-5c802dbd"

A continuación, se muestra un ejemplo de /etc/system-release para la Amazon Linux AMI actual:

[ec2-user ~]$ cat /etc/system-release Amazon Linux AMI release 2018.03

Herramientas de línea de comandos de AWS

En la AMI de Amazon Linux o en los repositorios predeterminados para Amazon Linux 2 se han incluido las siguientes herramientas de línea de comandos para el uso y la integración de AWS. Para ver la lista completa de paquetes en la Amazon Linux AMI, consulte Amazon Linux AMI 2017.09 Packages.

  • aws-amitools-ec2

  • aws-apitools-as

  • aws-apitools-cfn

  • aws-apitools-ec2

  • aws-apitools-elb

  • aws-apitools-mon

  • aws-cfn-bootstrap

  • aws-cli

Amazon Linux 2 y las versiones mínimas de Amazon Linux (amzn-ami-minimal-* y amzn2-ami-minimal-*) no siempre contienen todos estos paquetes; sin embargo, puede instalarlos desde los repositorios predeterminados con el siguiente comando:

[ec2-user ~]$ sudo yum install -y package_name

Para las instancias lanzadas con los roles de IAM, se ha incluido un script sencillo para preparar AWS_CREDENTIAL_FILE, JAVA_HOME, AWS_PATH, PATH y las variables de entorno específicas de los productos una vez que se haya instalado un archivo de credenciales para simplificar la configuración de estas herramientas.

Además, para permitir la instalación de varias versiones de las herramientas de API y AMI, hemos incluido enlaces simbólicos a las versiones deseadas de estas herramientas en /opt/aws, tal y como se describe aquí:

/opt/aws/bin

Enlaces simbólicos a los directorios /bin en cada uno de los directorios de las herramientas instaladas.

/opt/aws/{apitools|amitools}

Los productos se instalan en directorios con el formato name-version y se adjunta un enlace simbólico name a la versión instalada más reciente.

/opt/aws/{apitools|amitools}/name/environment.sh

Lo utiliza /etc/profile.d/aws-apitools-common.sh para establecer variables de entorno específicas del producto, como EC2_HOME.

Repositorio de paquetes

Amazon Linux 2 y la Amazon Linux AMI se han diseñado para utilizarse con repositorios de paquetes online alojados en cada región de AWS de Amazon EC2. Estos repositorios ofrecen actualizaciones continuas de paquetes en Amazon Linux 2 y en la Amazon Linux AMI, así como acceso a cientos de aplicaciones adicionales de servidor de código abierto habituales. Los repositorios se encuentran disponibles en todas las regiones y se obtiene acceso a ellos mediante herramientas de actualización yum. Al alojar repositorios en cada región se pueden implementar actualizaciones rápidamente y sin cargos por transferencia de datos.

Amazon Linux 2 y la Amazon Linux AMI se actualizan periódicamente con mejoras de características y seguridad. Si no necesita conservar los datos o las personalizaciones en las instancias, puede lanzar simplemente nuevas instancias mediante la AMI actual. Si necesita conservar los datos o las personalizaciones de sus instancias, puede mantener esas instancias a través de los repositorios de paquetes de Amazon Linux. Estos repositorios contienen todos los paquetes actualizados. Puede optar por aplicar estas actualizaciones a sus instancias en ejecución. Las versiones anteriores de la AMI y los paquetes de actualización seguirán estando disponibles para su uso, incluso cuando se publiquen versiones nuevas.

importante

La instancia debe tener acceso a Internet para poder utilizar el repositorio.

Utilice el siguiente comando para instalar los paquetes:

[ec2-user ~]$ sudo yum install package

Para la Amazon Linux AMI, está configurado el acceso al repositorio Extra Packages for Enterprise Linux (EPEL), pero no está habilitado por defecto. Amazon Linux 2 no está configurado para utilizar el repositorio EPEL. EPEL ofrece paquetes de terceros además de los que se encuentran en los repositorios. AWS no admite paquetes de terceros. Puede habilitar el repositorio EPEL con los comandos siguientes:

  • En Amazon Linux 2:

    [ec2-user ~]$ sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
  • Para Amazon Linux AMI:

    [ec2-user ~]$ sudo yum-config-manager --enable epel

Si Amazon Linux no contiene la aplicación que necesita, puede instalar la aplicación directamente en la instancia de Amazon Linux. Amazon Linux utiliza RPM y yum para la administración de paquetes, y es posiblemente el modo más sencillo de instalar nuevas aplicaciones. Debe comprobar siempre primero si se encuentra disponible una aplicación en nuestro repositorio de Amazon Linux central, porque en él se encuentran disponibles muchas aplicaciones. Estas aplicaciones se pueden añadir fácilmente a la instancia de Amazon Linux.

Para cargar las aplicaciones en una instancia de Amazon Linux en ejecución, utilice scp o sftp y, a continuación, configure la aplicación iniciando sesión en la instancia. Las aplicaciones también se pueden cargar durante el lanzamiento de la instancia con la acción PACKAGE_SETUP del paquete cloud-init integrado. Para obtener más información, consulte cloud-init.

Actualizaciones de seguridad

Las actualizaciones de seguridad se ofrecen a través de los repositorios de paquetes y de las AMI actualizadas. Las alertas de seguridad se publican en el Centro de seguridad de Amazon Linux. Para obtener más información sobre las políticas de seguridad de AWS o para informar de un problema de seguridad, visite el Centro de seguridad de AWS.

Amazon Linux está configurado para descargar e instalar actualizaciones de seguridad críticas o importantes en el momento del lanzamiento. Le recomendamos que realice las actualizaciones necesarias para su caso de uso después del lanzamiento. Por ejemplo, es posible que desee aplicar todas las actualizaciones (no solo las actualizaciones de seguridad) en el lanzamiento, o que desee evaluar cada actualización y aplicar solo las aplicables a su sistema. Esto se controla utilizando el siguiente parámetro de cloud-init: repo_upgrade. El siguiente fragmento de código de la configuración de cloud-init muestra cómo puede cambiar los ajustes en el texto de datos de usuario que se pasa para la inicialización de la instancia:

#cloud-config repo_upgrade: security

Los valores posibles para repo_upgrade son los siguientes:

security

Aplicar actualizaciones pendientes críticas o importantes que Amazon marca como actualizaciones de seguridad.

bugfix

Aplicar actualizaciones que Amazon marca como correcciones de errores. Las correcciones de errores son un conjunto más grande de actualizaciones que incluyen actualizaciones de seguridad y correcciones para otros errores menores.

all

Aplicar todas las actualizaciones disponibles aplicables, independientemente de su clasificación.

none

No aplicar ninguna actualización a la instancia al arrancar.

El ajuste predeterminado de repo_upgrade es de seguridad. Es decir, si no especifica un valor distinto en los datos de usuario, de forma predeterminada Amazon Linux realiza las actualizaciones de seguridad durante el lanzamiento para cualquier paquete instalado en ese momento. Amazon Linux también le notifica de cualquier actualización en los paquetes instalados indicándole el número de actualizaciones disponibles al iniciar sesión mediante el archivo /etc/motd. Para instalar estas actualizaciones, debe ejecutar sudo yum upgrade en la instancia.

Configuración de repositorio

Con Amazon Linux, las AMI se tratan como instantáneas en el tiempo, con un repositorio y una estructura de actualización que le ofrece siempre los últimos paquetes al ejecutar yum update -y.

La estructura de repositorio está configurada para ofrecer un flujo continuo de actualizaciones con las que se puede pasar de una versión de Amazon Linux a la siguiente. Por ejemplo, si lanza una instancia desde una versión antigua de la Amazon Linux AMI (como 2017.09 o anterior) y ejecuta yum update -y, acabará obteniendo los últimos paquetes.

Puede deshabilitar las actualizaciones continuas habilitando la característica lock-on-launch. La característica lock-on-launch bloquea la instancia para recibir actualizaciones solo de la versión especificada de la AMI. Por ejemplo, puede lanzar una AMI 2017.09 y hacer que reciba solo las actualizaciones lanzadas antes de la AMI 2018.03 hasta que esté listo para migrar a la AMI 2018.03.

importante

Si bloquea la instancia a una versión de los repositorios que no es la última, no recibirá más actualizaciones. Para recibir un flujo continuo de actualizaciones, debe utilizar la última AMI, o bien actualizar constantemente la AMI antigua con los repositorios señalados como más recientes.

Para habilitar lock-on-launch en instancias nuevas, láncela pasando los siguientes datos de usuario a cloud-init:

#cloud-config repo_releasever: 2017.09

Para bloquear las instancias existentes en su versión actual de la AMI

  1. Editar /etc/yum.conf.

  2. Comente releasever=latest.

  3. Para borrar la caché, ejecute yum clean all.

Biblioteca Extras (Amazon Linux 2)

Amazon Linux 2 le permite utilizar la biblioteca Extras para instalar actualizaciones de software y de aplicaciones en sus instancias. Estas actualizaciones de software se denominan temas. Puede instalar una versión específica de un tema u omitir la información sobre la versión para utilizar la versión más reciente.

Utilice el siguiente comando para ver una lista de los temas disponibles:

[ec2-user ~]$ amazon-linux-extras list

Utilice el siguiente comando para habilitar un tema e instalar la última versión de su paquete para garantizar su frescura:

[ec2-user ~]$ sudo amazon-linux-extras install topic

Utilice el siguiente comando para habilitar temas e instalar versiones específicas de sus paquetes para garantizar la estabilidad:

[ec2-user ~]$ sudo amazon-linux-extras install topic=version topic=version

Obtención de acceso a paquetes de origen con fines de referencia

Puede ver el origen de los paquetes que ha instalado en la instancia con fines de referencia, mediante las herramientas que se suministran en Amazon Linux. Los paquetes de origen se encuentran disponibles para todos los paquetes incluidos en Amazon Linux y el repositorio de paquetes online. Simplemente determine el nombre del paquete de origen que desee instalar y utilice el comando yumdownloader --source para ver el origen dentro de la instancia en ejecución. Por ejemplo:

[ec2-user ~]$ yumdownloader --source bash

El RPM de origen se puede extraer y, a modo de referencia, se puede ver el árbol de origen mediante herramientas de RPM estándar. Una vez que finalice la depuración, el paquete está listo para su uso.

cloud-init

El paquete cloud-init es una aplicación de código abierto creada por Canonical que se utiliza para arrancar imágenes de Linux en un entorno de informática en la nube, como Amazon EC2. Amazon Linux contiene una versión personalizada de cloud-init. Permite especificar acciones que deben ocurrir en la instancia en el momento del arranque. Puede transferir las acciones deseadas a cloud-init mediante los campos de datos de usuario al lanzar una instancia. De este modo, puede utilizar AMI habituales para numerosos casos de uso y configurarlas dinámicamente en el arranque. Amazon Linux además utiliza cloud-init para realizar la configuración inicial de la cuenta ec2-user.

Para obtener más información, consulte la documentación de cloud-init.

Amazon Linux utiliza las acciones de cloud-init que se encuentran en /etc/cloud/cloud.cfg.d y en /etc/cloud/cloud.cfg. Puede crear sus propios archivos de acción de cloud-init en /etc/cloud/cloud.cfg.d. cloud-init lee todos los archivos de este directorio. Se leen en orden léxico y los archivos posteriores sobrescriben los valores en los archivos anteriores.

El paquete cloud-init realiza estas y otras tareas de configuración habituales en las instancias al arrancar:

  • Ajustar la configuración regional predeterminada.

  • Ajustar el nombre de host.

  • Analizar y administrar los datos de usuario.

  • Generar claves de SSH privadas de host.

  • Añadir las claves SSH públicas del usuario a .ssh/authorized_keys para facilitar el inicio de sesión y la administración.

  • Preparar los repositorios para la administración de paquetes.

  • Controlar acciones de paquetes definidas en los datos de usuario.

  • Ejecutar scripts de usuario que se encuentran en los datos de usuario.

  • Montar volúmenes de almacén de instancias si es preciso.

    • De forma predeterminada, el volumen de almacén de instancia ephemeral0 se monta en /media/ephemeral0 si está presente y contiene un sistema de archivos válido; de lo contrario, no se monta.

    • De forma predeterminada, cualquier volumen de intercambio asociado a la instancia se monta (solo para los tipos de instancias m1.small y c1.medium).

    • Puede anular el montaje del volumen de almacén de instancias predeterminado con la siguiente directiva de cloud-init:

      #cloud-config mounts: - [ ephemeral0 ]

      Para obtener más control sobre los montajes, consulte Mounts en la documentación de cloud-init.

    • Los volúmenes de almacén de instancias que admiten TRIM no están formateados cuando se lanza una instancia, por lo que debe dividirlos y formatearlos antes de poder montarlos. Para obtener más información, consulte Soporte TRIM del volumen de almacén de instancias. Puede utilizar el módulo disk_setup para dividir y formatear los volúmenes de almacén de instancias en el arranque. Para obtener más información, consulte Disk Setup en la documentación de cloud-init.

Formatos de datos de usuario admitidos

El paquete cloud-init admite la administración de datos de usuario con diversos formatos:

  • Gzip

    • Si los datos de usuario están comprimidos como gzip, cloud-init descomprime los datos y los administra del modo adecuado.

  • Multiparte MIME

    • Al utilizar un archivo multiparte MIME, puede especificar más de un tipo de datos. Por ejemplo, puede especificar un script de datos de usuario y un archivo de configuración de nube. cloud-init puede administrar cada parte del archivo multiparte si se encuentra en uno de los formatos admitidos.

  • Descodificación Base64

    • Si los datos de usuario están codificados con base64, cloud-init determina si puede comprender los datos descodificados como uno de los tipos admitidos. Si comprende los datos descodificados, los administra del modo adecuado. De lo contrario, devuelve los datos base64 intactos.

  • Script de datos de usuario

    • Comienza con #! o Content-Type: text/x-shellscript.

    • /etc/init.d/cloud-init-user-scripts ejecuta el script durante el primer ciclo de arranque. Esto se produce en la fase posterior del proceso de arranque (una vez que se han realizado las acciones de configuración iniciales).

  • Archivo include

    • Comienza con #include o Content-Type: text/x-include-url.

    • Este contenido es un archivo include. El archivo contiene una lista de URL, una por línea. Se lee cada una de las URL y el contenido se transfiere a través de este mismo conjunto de reglas. La lectura del contenido de la URL se puede comprimir como gz, multiparte MIME o texto sin formato.

  • Datos de configuración de nube

    • Comienza con #cloud-config o Content-Type: text/cloud-config.

    • Este contenido son datos de configuración de nube. Para consultar un ejemplo comentado de formatos de configuración admitidos, vea los ejemplos.

  • Trabajo Upstart

    • Comienza con #upstart-job o Content-Type: text/upstart-job.

    • Este contenido se almacena en un archivo en /etc/init y upstart consume el contenido conforme a otros trabajos upstart.

  • Boothook de nube

    • Comienza con #cloud-boothook o Content-Type: text/cloud-boothook.

    • Este contenido son datos de boothook. Se almacena en un archivo en /var/lib/cloud y, a continuación, se ejecuta de inmediato.

    • Este es el primer "hook" disponible. No se ofrece ningún mecanismo para ejecutarlo solo una vez. El boothook debe ocuparse de sí mismo. Se proporciona con el ID de instancia en la variable de entorno INSTANCE_ID. Utilice esta variable para ofrecer un conjunto de datos de boothhook una vez por instancia.

Suscripción a las notificaciones de Amazon Linux

Para que se le notifique cuándo se publican instancias de AMI nuevas, puede suscribirse mediante Amazon SNS.

Para suscribirse a las notificaciones de Amazon Linux

  1. Abra la consola de Amazon SNS en https://console.aws.amazon.com/sns/v3/home/.

  2. En la barra de navegación, cambie la región a US East (N. Virginia), si es necesario. Debe seleccionar la región donde la notificación de SNS a la que se va a suscribir se ha creado.

  3. En el panel de navegación, elija Subscriptions, Create subscription.

  4. En el cuadro de diálogo Create subscription (Crear suscripción), haga lo siguiente:

    1. [Amazon Linux 2] En Topic ARN (ARN del tema), copie y pegue el siguiente nombre de recurso de Amazon (ARN): arn:aws:sns:us-east-1:137112412989:amazon-linux-2-ami-updates.

    2. [Amazon Linux] En Topic ARN (ARN del tema), copie y pegue el siguiente nombre de recurso de Amazon (ARN): arn:aws:sns:us-east-1:137112412989:amazon-linux-ami-updates.

    3. En Protocol (Protocolo), elija Email (Correo electrónico).

    4. En Endpoint (Punto de enlace), escriba una dirección de correo electrónico que pueda utilizar para recibir notificaciones.

    5. Seleccione Create subscription.

  5. Recibirá un email de confirmación con el asunto "AWS Notification - Subscription Confirmation" (Notificación de AWS: confirmación de suscripción). Abra el correo electrónico y elija Confirm subscription (Confirmar suscripción) para completar la suscripción.

Cuando se publican AMIs, enviamos notificaciones a los suscriptores del tema correspondiente. Para dejar de recibir estas notificaciones, siga el procedimiento que indicamos a continuación para cancelar su suscripción.

Para cancelar la suscripción a las notificaciones de Amazon Linux

  1. Abra la consola de Amazon SNS en https://console.aws.amazon.com/sns/v3/home/.

  2. En la barra de navegación, cambie la región a US East (N. Virginia), si es necesario. Debe usar la región donde se creó la notificación de SNS.

  3. En el panel de navegación, elija Subscriptions (Suscripciones), seleccione la suscripción y luego elija Actions (Acciones), Delete subscriptions (Eliminar suscripciones).

  4. Cuando se le pida confirmación, seleccione Delete (Eliminar).