Aunque la interfaz web de AWS puede ser suficiente en muchos casos para administrar nuestros servicios, si tenemos entornos de desarrollo, preproducción y producción podemos necesitar una manera rápida, ágil y flexible para manejar las instancias EC2, Elastic ips etc.

Lo veo especialmente importante para poder realizar scripts, automatizar y programar acciones sobre los servidores de cara a no tener que realizar demasiadas operaciones manuales y repetitivas, y es una buena manera de poder controlar el tiempo que se mantienen encendidas máquinas que no pertenecen al entorno productivo.

Vamos a tomar como de costumbre la distribución Ubuntu en su versión Lucid.

Credenciales de seguridad

Dando por hecho que tenemos una cuenta ya creada seguimos los siguientes pasos

  1. Abre la EC2 console
    1. Crea una ” key-pair”y descárgala
      1. Selecciona “Key pairs”  en el menú “Networking and Security” en el panel de navegación y haz click en “Create key pair“. Esta “private key” es necesaria para conectarse por ssh a la máquina.
    2. Para usar las api-tools necesitarás un conjunto de credenciales de seguridad compuesto de un certificado x.509 con su “private key”. Por lo tanto nos dirijimos al menú Account->Security Credentials
      1. Selecciona la pestaña X.509 Certificates
      2. Crea un nuevo certificado
      3. Descarga la “private key” y el certificado (recomendable guardarlo en la carpeta $HOME/.ec2).
      4. Cambia los permisos de ficheros a unos suficientemente restrictivos: chmod go-rwx ~/.ec2/*.pem
      5. Toma nota de tu account ID al final de la página (con la nomenclatura XXXX-XXXX-XXXX).

Instalando las ec2-api-tools

  1. Comprueba que estés usando el repositorio  multiverse y una vez que sea así instalalo  mediante la siguiente instrucción:
    sudo apt-get install ec2-api-tools

    También puedes usar el awstools ppa mediante las siguientes instrucciones:

    sudo apt-add-repository ppa:awstools-dev/awstools
    sudo apt-get update
    sudo apt-get install ec2-api-tools
  2. Indica los valores de las siguientes variables de entorno para que estén disponibles en tu sesión de usuario (.bashrc si tu shell es bash), necesarias para la correcta ejecución de las ec2-api-tools :
    export EC2_KEYPAIR=<your keypair name> # name only, not the file name
    export EC2_URL=https://ec2.<your ec2 region>.amazonaws.com
    export EC2_PRIVATE_KEY=$HOME/<where your private key is>/pk-XXXXXXXXXXXXXXXXXXXXXXXXXXXX.pem
    export EC2_CERT=$HOME/<where your certificate is>/cert-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.pem
    export JAVA_HOME=/usr/lib/jvm/java-6-openjdk/

    Notas:

    1. La región EC2 debe ser una de las listadas a continuación:
Región URL
US-East (Northern Virginia) ec2.us-east-1.amazonaws.com
US-West (Northern California) ec2.us-west-1.amazonaws.com
EU (Ireland) ec2.eu-west-1.amazonaws.com
Asia Pacific (Singapore) ec2.ap-southeast-1.amazonaws.com
Asia Pacific (Tokyo) ec2.ap-northeast-1.amazonaws.com
  1. Carga las variables para no tener que salir de la sesión:
    source ~/.bashrc
  2. Comprueba que  se pueden ejecutar los comandos de manera correcta mediante el siguiente comando:
    ec2-describe-images -o self -o amazon

Si todo ha ido bien podemos manejar prácticamente cualquier parámetro de cualquier instancia, aspecto que veremos en el siguiente post, de manera que ahora podemos arrancar, parar, reiniciar, crear instancias y crear scripts que saquen provecho de estos comandos.

Como ejemplo podemos arrancar y parar cualquier instancia mediante la siguiente instrucción:

ec2-start-instances i-xxxxxxx

ec2-stop-instances i-xxxxxxx

Anuncios