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
- Abre la EC2 console
- Crea una » key-pair»y descárgala
- 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.
- 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
- Selecciona la pestaña X.509 Certificates
- Crea un nuevo certificado
- Descarga la «private key» y el certificado (recomendable guardarlo en la carpeta $HOME/.ec2).
- Cambia los permisos de ficheros a unos suficientemente restrictivos: chmod go-rwx ~/.ec2/*.pem
- Toma nota de tu account ID al final de la página (con la nomenclatura XXXX-XXXX-XXXX).
- Crea una » key-pair»y descárgala
Instalando las ec2-api-tools
- 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
- 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:
- 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 |
- Carga las variables para no tener que salir de la sesión:
source ~/.bashrc
- 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