Las API Tools de Amazon permiten realizar acciones sobre la nube de Amazon como se hace desde la Consola Web, pero directamente desde la línea de comandos.
En este artículo describo cómo tengo mi instalación en Mac OS X, aunque perfectamente es aplicable para Linux u otros Unix. Esta descripción también incluye la configuración para poder trabajar con varias cuentas de Amazon independientes.
Sin duda, esta instalación puede ser perfeccionada, así que espero sugerencias en los comentarios.
Java JDK
Las herramientas de Amazon requieren Java, sirve tanto sea JDK como JRE. El documento de instalación oficial de Amazon describe cómo realizar esta instalación.
Es mandatorio tener configurada la variable de ambiente JAVA_HOME. Esto se se hace agregando la siguiente línea al archivo ~/.bashrc:
export JAVA_HOME=»/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home»
Amazon EC2 API Tools
Descargar las herramientas de Amazon EC2 API Tools y descompactar en /usr/local; renombrar directorio de extracción a amazon
cd /usr/local
unzip ec2-api-tools.zip
mv ec2-api-tools-1.6.5.1 /usr/local/amazon
Configurar el entorno creado para dejarlo disponible, agregando las siguientes líneas en el archivo ~/.bashrc
export EC2_HOME=/usr/local/amazon
export EC2_AMITOOL_HOME=/usr/local/amazon
export PATH=$PATH:$EC2_HOME/bin
Certificados de Seguridad
Crear y descargar los certificados X.509 de Credenciales de Acceso en la cuenta de Amazon. Estos certificados digitales permiten validar SOAP para las herramientas de línea de comandos.
Se obtienen dos archivos:
- pk-33XYJMEMKWAFXK0UZ7OU6FWCRYBR99Y.pem
Llave privada RSA: respaldar (si se extravía se debe generar una nueva) - cert-33XYJMEMKWAFXK0UZ7OU6FWCRYBR99LY.pem
Certificado público X.509: se puede acceder y volver a bajar siempre.
En caso de dudas de cómo funciona el sistema de validación en Amazon, consultar la documentación oficial.
Dejar esos dos archivos en un directorio “oculto” en el home el usuario
cd
mkdir .ec2
chmod 700 .ec2chmod 400 .ec2/pk-33XYJMEMKWAFXK0UZ7OU6FWCRYBR99Y.pem
ls .ec2/
cert-33XYJMEMKWAFXK0UZ7OU6FWCRYBR99LY.pem pk-33XYJMEMKWAFXK0UZ7OU6FWCRYBR99Y.pem
Entorno para uso de certificados
Crear un alias que cargue las variables de ambiente con los certificados, con la siguiente línea en el archivo ~/.bash_aliases (o en el ~/.bashrc):
alias ec2cuentaA=’KEY=»33XYJMEMKWAFXK0UZ7OU6FWCRYBR99LY»;
export EC2_PRIVATE_KEY=$HOME/.ec2/pk-$KEY.pem;
export EC2_CERT=$HOME/.ec2/cert-$KEY.pem’
(es una única línea, pero se muestra aquí en tres líneas para facilitar la lectura)
Para cada cuenta que se tenga de Amazon EC2 se crea un alias que cargue los certificados correspondientes, por ejemplo ec2cuentaB, ec2empresa1, etc.
Probar Instalación
Al abrir una nueva terminal se estará cargando el entorno definido en el ~/.bashrc (si así está previamente definido en el archivo ~/.profile o ~/.bash_profile o ~/.bash_login).
Cuando se desea conectar con una cuenta determinada, ejecutar el alias:
ec2cuentaA
Y ya se pueden usar dos comandos para consultar Amazon EC2:
$ ec2-describe-regions
REGION eu-west-1 ec2.eu-west-1.amazonaws.com
REGION sa-east-1 ec2.sa-east-1.amazonaws.com
REGION us-east-1 ec2.us-east-1.amazonaws.com
REGION ap-northeast-1 ec2.ap-northeast-1.amazonaws.com
REGION us-west-2 ec2.us-west-2.amazonaws.com
REGION us-west-1 ec2.us-west-1.amazonaws.com
REGION ap-southeast-1 ec2.ap-southeast-1.amazonaws.com$ ec2-describe-availability-zones
AVAILABILITYZONE us-east-1a available us-east-1
AVAILABILITYZONE us-east-1b available us-east-1
AVAILABILITYZONE us-east-1c available us-east-1
AVAILABILITYZONE us-east-1d available us-east-1
AVAILABILITYZONE us-east-1e available us-east-1
Los comandos de las Amazon API Tools quedan disponibles en el PATH y expandibles con el tabulador (en Bash). En caso de que algo no esté bien configurado muestra un error.
Referencias
El origen de este artículo es una página de mi Wiki Pi.Lastr.Us donde mantengo la información actualizada de este tema.
Los artículos de Hugh Gilmour «Installar las herramientas de EC2 API en Mac OS X Leopard» y de Robert Sosinski «Starting Amazon EC2 with Mac OS X» fueron de gran ayuda para escribir este artículo.
Buenas, tienes alguna api java que detenga y arranque las instancias?
Tengo algunos ejemplos pero me pierdo un poco…
Gracias.