RSS

Empezar con Amazon Web Services. Crear credenciales de seguridad AWS y ejemplo básico

29 may

Vamos a seguir el manual Getting started que encontramos en la página oficial de Amazon.

Lo primero que tenemos que hacer para utilizar los servicios web que Amazon nos ofrece es subscribirnos como usuarios de Amazon. Para ello nos dirigimos a esta página. En concreto, picharemos en el enlace ‘Cree una cuenta AWS’ que encontramos en la zona superior de esta página.

Una vez creada nuestra cuenta Amazon nos da la bienvenida a su servicio.

Para acceder a los servicios Web que Amazon nos da necesitamos dos claves de acceso, un ID de clave de acceso y una clave de acceso secreta que tenemos que guardar en un fichero de propiedades de nuestro proyecto Java. Se puede acceder a estas claves desde nuestra cuenta de Amazon recién creada en este enlace. En mi caso puedo ver lo siguiente:

Una vez hecho esto necesitamos instalar las herramientas en Eclipse para realizar proyectos AWS. Es una tarea bastante sencilla, simplemente abriremos Eclipse y nos dirigiremos a la sección de Ayuda e Instalar nuevo Software. En la ventana que se nos abra crearemos una nueva ubicación donde añadiremos el siguiente enlace para descargarnos todo lo necesario.

Tras reiniciar Eclipse tendremos a nuestra disposición una nueva perspectiva llamada Amazon EC2 Management que nos permitirá crear proyecto Java usando Amazon Web Services.

Seleccionamos esta perspectiva y comenzaremos creando un nuevo proyecto Java AWS con el asistente. La ventana que se nos presentará será la siguiente.

Como vemos además del nombre de nuestro proyecto tendremos la opción de utilizar algunos ejemplos que Amazon nos deja usar. En nuestro caso, y por simplicidad, sólo seleccionaremos la opción AWS Console Application. Además de ésto hay que añadir las credenciales de seguridad que hemos visto anteriormente y que va usar nuestro proyecto para conectarse a los servicios web de Amazon.

En nuestro explorador de proyecto podemos ver lo siguiente:

  • AwsConsoleApp.java. Nos permitirá probar la funcionalidad de AWS EC2, Amazon S3 y Amazon SimpleDB.
  • AwsCredentials.properties. Donde se guardarán nuestras credenciales de acceso.
  • AWS SDK for Java. Las librerías que nos permitirán acceder a los Amazon Web Services.
Lo siguiente que tendremos que hacer es ejecutar nuestra clase Java como una aplicación de consola y veremos la siguiente salida en nuestro Log:
===========================================
Welcome to the AWS Java SDK!
===========================================
29-may-2011 12:47:57 com.amazonaws.http.AmazonHttpClient executeHelper
INFO: Sending Request: POST https://ec2.amazonaws.com / Parameters: (SignatureVersion: 2, Signature: jxxxxxxxxxxxxxxxxxxxxxxxxB7U=, SignatureMethod: HmacSHA256, Action: DescribeAvailabilityZones, Version: 2011-02-28, AWSAccessKeyId: AxxxxxxxxxxxA, Timestamp: 2011-05-29T10:47:57.191Z, )
29-may-2011 12:47:58 org.apache.http.impl.client.DefaultRequestDirector handleResponse
ADVERTENCIA: Authentication error: Unable to respond to any of these challenges: {}
29-may-2011 12:47:58 com.amazonaws.http.AmazonHttpClient handleErrorResponse
INFO: Received error response: Status Code: 401, AWS Request ID: 4xxxxxxxxxxxxxe, AWS Error Code: OptInRequired, AWS Error Message: You are not subscribed to this service. Please go to http://aws.amazon.com to subscribe.
Caught Exception: You are not subscribed to this service. Please go to http://aws.amazon.com to subscribe.
Reponse Status Code: 401
Error Code: OptInRequired
Request ID: 4xxxxxxxxxxxxxxxxxxxxxxxxxxe
29-may-2011 12:47:58 com.amazonaws.http.AmazonHttpClient executeHelper
INFO: Sending Request: POST https://sdb.amazonaws.com / Parameters: (SignatureVersion: 2, Signature: +jxxxxxxxxxxxxxxxxxxxxxxzJYs=, SignatureMethod: HmacSHA256, Action: ListDomains, Version: 2009-04-15, AWSAccessKeyId: AxxxxxxxxxxxxxA, MaxNumberOfDomains: 100, Timestamp: 2011-05-29T10:47:58.979Z, )
29-may-2011 12:47:59 org.apache.http.impl.client.DefaultRequestDirector handleResponse
ADVERTENCIA: Authentication error: Unable to respond to any of these challenges: {}
29-may-2011 12:47:59 com.amazonaws.http.AmazonHttpClient handleErrorResponse
INFO: Received error response: Status Code: 401, AWS Request ID: 6xxxxxxxxxxxxx1, AWS Error Code: SubscriptionCheckFailed, AWS Error Message: Subscription check failed. Please sign up for Amazon SimpleDB service.
Caught Exception: Subscription check failed. Please sign up for Amazon SimpleDB service.
Reponse Status Code: 401
Error Code: SubscriptionCheckFailed
Request ID: 6xxxxxxxxxxxxxxxxxxxxxxxxx1
29-may-2011 12:47:59 com.amazonaws.http.AmazonHttpClient executeHelper
INFO: Sending Request: GET https://s3.amazonaws.com / Headers: (Content-Type: application/x-www-form-urlencoded; charset=utf-8, )
29-may-2011 12:48:00 com.amazonaws.http.AmazonHttpClient handleErrorResponse
INFO: Received error response: Status Code: 403, AWS Request ID: 7xxxxxxxxxxxxx1, AWS Error Code: NotSignedUp, AWS Error Message: Your account is not signed up for the S3 service. You must sign up before you can use S3., S3 Extended Request ID: bG/2xxxxxxxxxxxxxxxxxxxxxxxxI
Error Message:    Your account is not signed up for the S3 service. You must sign up before you can use S3.
HTTP Status Code: 403
AWS Error Code:   NotSignedUp
Error Type:       Client
Request ID:       7xxxxxxxxxxxxx1

Upppps, ¿qué ha pasado?. Además de crearte una cuenta genérica para Amazon Web Services tendrás que abrirte una cuenta para cada uno de los servicios que quieras usar. En este punto conviene aclarar algo, los servicios y productos que ofrece Amazon solamente son gratuitos durante un tiempo y bajo una serie de condiciones de uso. Si queremos prolongar este tiempo o añadir más funcionalidad deberemos pagar por usarlos. El precio viene indicado claramente en función de qué y cuánto usemos.

Para probar nuestro ejemplo nos tendremos que registrar a los productos Amazon EC2, Amazon S3 y Amazon SimpleDB que vimos en nuestro anterior post.

En el caso de Amazon EC2 necesitaremos incluso verificar nuestra identidad de manera telefónica.

Una vez nos hayamos registrado en los distintos servicios que queremos podemos acceder a la actividad de nuestra cuenta de Amazon Web Services. Aquí veremos los distintos servicios a los que estamos subscritos.

Una vez subscrito a aquellos servicios de Amazon que nos interesen podremos volver a ejecutar nuestro proyecto Java y veremos el siguiente log con mucha mejor pinta que el anterior:

===========================================
Welcome to the AWS Java SDK!
===========================================
29-may-2011 13:35:21 com.amazonaws.http.AmazonHttpClient executeHelper
INFO: Sending Request: POST https://ec2.amazonaws.com / Parameters: (SignatureVersion: 2, Signature: BxxxxxxxxxxxxxxxxQ=, SignatureMethod: HmacSHA256, Action: DescribeAvailabilityZones, Version: 2011-02-28, AWSAccessKeyId: AxxxxxxxxxxxxxxA, Timestamp: 2011-05-29T11:35:21.321Z, )
29-may-2011 13:35:22 com.amazonaws.http.AmazonHttpClient handleResponse
INFO: Received successful response: 200, AWS Request ID: 4xxxxxxxxxxxxxxx5
You have access to 3 Availability Zones.
29-may-2011 13:35:22 com.amazonaws.http.AmazonHttpClient executeHelper
INFO: Sending Request: POST https://ec2.amazonaws.com / Parameters: (SignatureVersion: 2, Signature: d/xxxxxxxxxxIR0=, SignatureMethod: HmacSHA256, Action: DescribeInstances, Version: 2011-02-28, AWSAccessKeyId: AxxxxxxxxxxxxA, Timestamp: 2011-05-29T11:35:22.797Z, )
29-may-2011 13:35:23 com.amazonaws.http.AmazonHttpClient handleResponse
INFO: Received successful response: 200, AWS Request ID: 4xxxxxxxxxx-xxxxxxxxb90
You have 0 Amazon EC2 instance(s) running.
29-may-2011 13:35:23 com.amazonaws.http.AmazonHttpClient executeHelper
INFO: Sending Request: POST https://sdb.amazonaws.com / Parameters: (SignatureVersion: 2, Signature: uxxxxxxxxxxxxxxx0k=, SignatureMethod: HmacSHA256, Action: ListDomains, Version: 2009-04-15, AWSAccessKeyId: AxxxxxxxxxA, MaxNumberOfDomains: 100, Timestamp: 2011-05-29T11:35:23.008Z, )
29-may-2011 13:35:23 com.amazonaws.http.AmazonHttpClient handleResponse
INFO: Received successful response: 200, AWS Request ID: 3xxxxxf-c05b-c103xxxxxxxxxxxxxb
You have 0 Amazon SimpleDB domain(s)containing a total of 0 items.
29-may-2011 13:35:23 com.amazonaws.http.AmazonHttpClient executeHelper
INFO: Sending Request: GET https://s3.amazonaws.com / Headers: (Content-Type: application/x-www-form-urlencoded; charset=utf-8, )
29-may-2011 13:35:24 com.amazonaws.http.AmazonHttpClient handleResponse
INFO: Received successful response: 200, AWS Request ID: Exxxxxxxxxxxxx6
You have 0 Amazon S3 bucket(s), containing 0 objects with a total size of 0 bytes.

¡Genial! …ya no salta ninguna excepción por no estar registrado en estos servicios. Sin embargo vemos que no tenemos nada configurado en nuestros servicios.

....
You have access to 3 Availability Zones.
.....
You have 0 Amazon EC2 instance(s) running.
.....
You have 0 Amazon SimpleDB domain(s)containing a total of 0 items.
....
You have 0 Amazon S3 bucket(s), containing 0 objects with a total size of 0 bytes.

Lo que vamos a hacer en este post es configurar una instancia en Amazon EC2 y para no empezar a mezclar servicios voy a comentar en el código Java la parte que usa Amazon SimpleDB y Amazon S3.

Para configurar una nueva instancia de Amazon EC2 tenemos que acceder a la AWS Management Console desde nuestra cuenta. La consola de administración de AWS tiene este aspecto.

Algo importante en lo que nos tenemos que fijar es en la región (arriba a nuestra izquierda). En nuestro caso la región seleccionada es EU West (Ireland). Sin embargo si depuramos nuestro código con un punto de ruptura podemos ver que nuestras zonas disponibles para levantar una instancia se dan sólo en US East (Virginia).

Por lo tanto tenemos que seleccionar US East (Virginia) en el combo y ahora sí pinchar en el botón Launch Instance. El asistente para crear una nueva instancia es bastante intuitivo y te da acceso a configurarla de manera personalizada.

Una vez lanzada nuestra nueva instancia podemos ver en la consola de administración un montón de detalles sobre ella.

Finalmente lanzaremos nuestro proyecto Java y ahora sí podemos ver como en el log nos indica que tenemos una nueva instancia lanzada a la que podemos acceder desde nuestro código Java para experimentar con ella.

===========================================
Welcome to the AWS Java SDK!
===========================================
29-may-2011 16:08:24 com.amazonaws.http.AmazonHttpClient executeHelper
INFO: Sending Request: POST https://ec2.amazonaws.com / Parameters: (SignatureVersion: 2, Signature: lzcxxxxxxxxxx5q2i4=, SignatureMethod: HmacSHA256, Action: DescribeAvailabilityZones, Version: 2011-02-28, AWSAccessKeyId: AxxxxxxxxxxYA, Timestamp: 2011-05-29T14:08:23.037Z, )
29-may-2011 16:08:26 com.amazonaws.http.AmazonHttpClient handleResponse
INFO: Received successful response: 200, AWS Request ID: fxxxxxxxxxxxf
You have access to 3 Availability Zones.
29-may-2011 16:08:31 com.amazonaws.http.AmazonHttpClient executeHelper
INFO: Sending Request: POST https://ec2.amazonaws.com / Parameters: (SignatureVersion: 2, Signature: EPxxxxxxxxxxxxxxxxvUQ=, SignatureMethod: HmacSHA256, Action: DescribeInstances, Version: 2011-02-28, AWSAccessKeyId: AxxxxxxxxxxxxxxxxA, Timestamp: 2011-05-29T14:08:31.358Z, )
29-may-2011 16:08:31 com.amazonaws.http.AmazonHttpClient handleResponse
INFO: Received successful response: 200, AWS Request ID: 7cxxxxxxxxxxxxxx5
You have 1 Amazon EC2 instance(s) running.

Alguna información que puede ser útil para empezar la podemos encontrar en:
Documentación.
Artículos y tutoriales.

Recuerda siempre que estamos hablando de servicios web, si queremos acceder a sus operaciones permitidas podemos echar un vistazo en sus WSDLs. Por ejemplo para el servicio Amazon SimpleDB su WSDL es el siguiente.

About these ads
 
1 comentario

Publicado por en 29 mayo, 2011 en Amazon Web Services

 

Etiquetas: , , ,

Una respuesta a “Empezar con Amazon Web Services. Crear credenciales de seguridad AWS y ejemplo básico

Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

 
Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

Únete a otros 69 seguidores

A %d blogueros les gusta esto: