By | 7 noviembre, 2012

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 .ec2

chmod 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.

One Reply to “Amazon EC2 linea de comandos”

  1. sinbalas

    Buenas, tienes alguna api java que detenga y arranque las instancias?

    Tengo algunos ejemplos pero me pierdo un poco…

    Gracias.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *