Posts Tagged S3

Google Storage for developers planta cara a Amazon S3

Corrían rumores de que Google podía presentar una alternativa al servicio de almaceniamiento de Amazon, pero eran muy pocos los que creían que esto realmente podía pasar (me incluyo en el grupo de los incrédulos). Y Google anunció ayer en el Google I/O la disponibilidad de Google Storage for developers, un servicio de almacenamiento on-line con unas características muy parecidas a Amazon S3. Vamos a ver algunas de sus características:

  • Almacenamiento por buckets/objetos: Exactamente igual que su vecino de Amazon.
  • Nombre único del bucket en todo el servicio: Igual.
  • Ausencia de carpetas o jerarquía pero capacidad de introducir el caracter “/” en el nombre del archivo para simular un árbol de directorios: Igual.
  • Privacidad de los objetos 100% y inmutabilidad de los objetos: No recuerdo que Amazon detallara el punto de la privacidad (no estoy seguro), pero en cuanto a la inmutabilidad siguen siendo servicios equivalentes (hace falta reescribir el objeto para modificarlo).

A estas características básicas vamos a añadir un listado de las operaciones básicas. Veremos que siguen cortadas por el mismo patron que S3:

  • Crear y eliminar buckets
  • Listar buckets y objetos
  • Subir y descargar objetos
  • Eliminar objetos
  • Definir listas de control de acceso (ACL) para los objetos
  • Definir metadatos de los objetos

Y una serie de características adicionales, algunas de las cuales sí que marcan alguna diferencia con Amazon:

  • Autenticación basada en cookies (no recuerdo que esto este disponible en S3 pero no estoy seguro de ello).
  • Soporte a las cuentas de Google para establecer el nivel de seguridad de los objetos.
  • Es necesaria una Developer Key (un par de clave de acceso y clave secreta).
  • API REST (no existe una API SOAP y no parece que entre en los planes de Google).
  • Soporte para SSL.
  • Herramientas por linea de comandos y librería basadas en Python (Boto).
  • Aplicación web para gestionar buckets y objetos (!!!).

La lista de precios también sigue el mismo patrón que Amazon pero se ofrece una cuota inicial gratuita (“solo” 100 GB de almacenamiento y 300 GB de transferencia al mes). Los precios son los siguientes:

  • Almacenamiento: 0’17 US$/GB al mes
  • Transferencia (subida): 0’10 US$/GB
  • Transferencia (descarga): 0’15 US$/GB en América y EMEA y 0’30 US$/GB en APAC
  • Peticiones (PUT,POST,LIST): 0’10 US$/1.000 peticiones
  • Peticiones (GET,HEAD): 0’10 US$/10.000 peticiones

¿La mala noticia? Disponible para desarrolladores en los U.S. y con cola de admisión… espero que no tarden lo mismo que Amazon en traer los servicios a Europa!!

Enlace: http://code.google.com/intl/es-ES/apis/storage/

, , , , ,

No Comments

Amazon S3 amplia su abanico de posibilidades (RRS)

Amazon S3 es un servicio de almacenamiento de objetos que fue definido por Amazon como “highly durable” pero nunca habían aportado datos ni estadísticas relacionadas con la durabilidad de los objetos que se almacenaban. Hoy, para anunciar una ampliación del abanico de posibilidades que ofrece el servicio han dado los primeros datos.

Amazon Web Services publica en su blog que la durabilidad de un archivo en su servicio de almacenamiento es del 99’9999999% (7 nueves) o, como exponen en el auncio, que de cada 10.000 objetos que almacenemos puede perderse uno (de media) cada 10 millones de años. Esta persistencia de ficheros en S3 la podemos considerar como muy alta… mucho más de lo que un gran número de aplicaciones necesitan realmente.

En ocasiones, todos los datos volcados en Amazon tienen su respaldo en máquinas que están más cerca del equipo responsable y simplemente se alojan en Amazon para su difusión por Internet (y su posible reposición está más que asegurada). En estos casos, esforzarse para mantener un porcentaje tan alto de durabilidad es un derroche de recursos que el cliente final no tiene porqué pagar.

¡Dicho y hecho!

A partir de hoy mismo, Amazon pone a disposición de los clientes la opción de reducir la durabilidad de sus archivos a 99’9999% (4 nueves) a cambio de una reducción en el precio del almacenamiento. Esta reducción va asociada a un parámetro que debe definirse de forma explícita (por defecto la durabilidad seguirá como antes) y es de un 33% del precio original. En el intervalo más caro (hasta 50 TB al mes), el almacenamiento “normal” cuesta 0’15€/mes por GB y el nuevo almacenamiento 0’10€/mes por GB.

Lo encontrareis en la página de S3 así como en el artículo del que he leído esta información, pero el nuevo sistema de almacenamiento se llama Reduced Redundancy Storage o RRS para los amigos.

, , , ,

No Comments

Subir vídeos a YouTube con Zend Gdata – Subir el vídeo

Para finalizar la serie de artículos dedicados a la subida de un vídeo a YouTube desde nuestra aplicación web en PHP (con el módulo Zend_Gdata) vamos a describir el proceso que se debe seguir desde el punto en que lo dejamos en el post anterior.

Una vez recibido el token de YouTube (ver post anterior) deberemos seguir estos pasos:

Upgrade del token recibido a un token de sesión

Para realizar más de una operación con la cuenta del usuario que se ha identificado en la página de YouTube debemos hacer un “upgrade” del token recibido. Para realizar una sola operación no sería necesario hacer este paso pero aquí recomendamos hacerlo para que no surjan problemas a posteriori con la identificación del usuario.

El upgrade del token requiere haber recogido el valor original de token enviado por YouTube a través de la petición. En el siguiente fragmento de código vamos a explicar cómo hacer la actualización del token recibido por un token de sesión presuponiendo que recuperamos el valor del token por GET.
$originalToken = $_GET['token'];
$ytClient = new Zend_Gdata_HttpClient();
$ytClient->setHeaders("X-GData-Key: key=VALOR_DE_TU_CLAVE_DE_DESARROLLADOR");
$ytClient->setAuthSubPrivateKeyFile('/path/a/clave.pem',null, true);
$sessionToken = Zend_Gdata_AuthSub::getAuthSubSessionToken(trim($originalToken),$ytClient);

$ytClient->setAuthSubToken($sessionToken);
En este fragmento de código podemos observar como recuperamos el valor del token por GET y cómo construimos el Zend_Gdata_HttpClient para que la petición de actualizar el token pueda ser satisfecha. En la última instrucción de este fragmento se setea el nuevo token de sesión en el cliente http para que las peticiones posteriores sean ejecutadas con los permisos que se han conseguido con la identificación de este usuario.

La clave de desarrollador y la clave.pem que se utilizan en este trozo de código corresponden a los requisitos previos que comentábamos en el primer post sobre la subida a vídeos a YouTube. Estas claves se incluyen en el cliente http que realizará las consultas a modo de signatura (para la seguridad de las peticiones que se realizarán a YouTube).

Subir el vídeo

Llegados a este punto, la subida del vídeo es la parte más sencilla de todo el proceso. Sólo hace falta seguir al pie de la letra las indicaciones existentes tanto en la documentación del Zend Framework como en la página de la API de YouTube destinada a este propósito para que la operación llegue a buen puerto.

A continuación se detalla el código necesario para la inserción del video a YouTube:
$yt = new Zend_Gdata_YouTube($ytClient);
$myVideoEntry = new Zend_Gdata_YouTube_VideoEntry();
$filesource = new Zend_Gdata_App_MediaFileSource('Sample.mov');
$filesource->setContentType('video/quicktime');
$filesource->setSlug('Sample.mov');

$myVideoEntry->setMediaSource($filesource);
$myVideoEntry->setVideoTitle('Prueba de subida a YT');
$myVideoEntry->setVideoDescription('Una descripción');
$myVideoEntry->setVideoCategory('Music'); //La categoría debe ser una categoría válida en YouTube
$myVideoEntry->SetVideoTags('mytest, sample'); //Tags
$myVideoEntry->setVideoDeveloperTags(array('solutions', 'iceberg')); //Tags como desarrollador

//URI estática para realizar las subidas
$uploadUrl = 'http://uploads.gdata.youtube.com/feeds/api/users/default/uploads';

//Bloque try-catch para subir el vídeo
try {
$newEntry = $yt->insertEntry($myVideoEntry, $uploadUrl, 'Zend_Gdata_YouTube_VideoEntry');
} catch (Zend_Gdata_App_HttpException $httpException) {
echo $httpException->getRawResponseBody();
} catch (Zend_Gdata_App_Exception $e) {
echo $e->getMessage();
}

De forma opcional se puede geolocalizar el vídeo que se está subiendo pero esto se puede encontrar de forma sencilla en la documentación de la API de YouTube.

A modo de epílogo sólo comentar que el archivo de vídeo que se utiliza ‘Sample.mov’ debe estar alojado de forma obligatoria en el servidor desde el que se está ejecutando esta operación. YouTube no acepta URLs como input para la subida de vídeos (lo hemos probado con unos enlaces públicos a archivos alojados en Amazon S3 y no ha habido manera).

Espero que toda la información vertida en estos tres artículos haya sido de utilidad, en breve se publicará un meta-post con los enlaces a los tres apuntes relacionados.

, , , , , ,

No Comments

S3 Firefox Organizer, un cliente gráfico gratuito para Amazon S3

Amazon S3 es un sistema de almacenamiento de datos on-line muy completo en cuanto a funcionalidades. Las diferentes possibilidades que tenemos para acceder a estas funcionalidades desde los lenguajes de programación mayoritarios hacen de él un gran producto para albergar los datos multimedia de una aplicación web. No obstante, mientras realizamos pruebas, es possible que nos haga falta un cliente gráfico para confirmar que las operaciones que han realizado nuestras aplicaciones son las que pretendiamos.

Cuando empecé a trabajar con S3, recurrí a BucketExplorer. Este programa ofrece casi todas las funcionalidades que podríamos pedir de un cliente gráfico pero el hecho de estar programado en Java ofrece una ejecución multiplataforma pero también una ejecución bastante lenta. Su funcionamiento es muy correcto y cumple los requisitos demandados para mis tareas, pero encontrarme un par de “buckets” en mi cuenta de Amazon S3 (que yo no había creado) con su nombre me hizo desconfiar y lo eliminé de mi directorio de programas.

Hasta hace unas horas no tenía ningún cliente gráfico de S3 en mi sistema hasta que me he tropezado con S3 Firefox Organizer, un add-on para Firefox que nos brinda todas las funcionalidades necesarias para gestionar diversas cuentas de S3. Este plugin recuerda sin ninguna duda a FireFTP, un cliente FTP accesible desde las pestañas de Firefox.

Logo FireFTP

Logo FireFTP

Si quereis probar S3 Firefox Organizer sólo teneis que ir al directorio oficial de plugins del navegador y buscarlo, la verdad es que a mi me ha sorprendido agradablemente y creo que me quedaré con el durante un buen tiempo.

Espero que os guste y me conteis que tal vuestra experiencia con él.

Technorati Profile

, , , ,

No Comments

Empaquetar una instancia de EC2 en funcionamiento (II)

Este post es la continuación de Empaquetar una instancia de EC2 en funcionamiento (I), si no lo has leído mejor que le des un vistazo antes de continuar, si ya lo has leído adelante…

Empaquetar la instancia

Para empaquetar la instancia debemos encontrarnos en el directorio /tmp de la instancia y correr el siguiente comando (que pertenece a las AMI Tools que hemos instalado en el apunte anterior):
ec2-bundle-vol -k /mnt/pk-xxxx.pem -c /mnt/cert-xxxx.pem -u xxxx-xxxx-xxxx* El campo xxxx-xxxx-xxxx lo tenemos que sustituir por los numeros que aparecen en la parte superior derecha de nuestra página de Access Identifiers (justo debajo de Welcome Nombre Usuario | Sign Out).

Este comando va a tardar un poco y nos va a generar una serie de archivos que luego va a ser los que vamos a tener que subir y registrar.

Subir la AMI empaquetada a Amazon S3

Para poder disponer de la AMI debemos subirla a un bucket de Amazon S3. En el proceso de registro de una cuenta de EC2 se nos obliga a tener una de S3 porque las instancias quedan almacenadas allí, por lo tanto con una cuenta de EC2 seguro que tenemos acceso a una de S3.

El único requisito que debemos cumplir para subir una AMI a una cuenta de S3 es disponer de un bucket en la misma Availability Zone. Para gestionar les servicios de Amazon Simple Storage Service, S3, existe un programa multiplataforma en Java llamado Bucket Explorer; la licencia cuesta unos 40 dólares que para la simplicidad del programa considero justos (existe una licencia de prueba de 30 días).

Una vez creado el bucket debemos recordar su nombre y correr el comando siguiente dentro del directorio /tmp en la máquina virtual:
ec2-upload-bundle -b nombredelbucket -m image.manifest.xml -a accessKeyID -s secretAccessKey* Evidentemente sustituyendo nombredelbucket por el nombre del bucket creado, accessKeyID por la clave de acceso pública y secretAccessKey por la clave secreta. A parte de esto, el nombre del manifest puede variar según las opciones que hayamos descrito en la operación de “bundle”.

Registrar la AMI

Una vez subida la AMI al bucket de S3 sólo tenemos que registrarla para poder instanciarla desde el tablero de control de EC2. Una vez registrada nos aparecerá si seleccionamos Private Images en el desplegable de la sección AMIs y ya podremos arrancar tantas instancias como queramos desde la web.

Para registrar la AMI debemos correr el siguiente comando en la máquina local (dónde deberíamos tener instaladas las API Tools de Amazon, diferentes de las AMI que hemos instalado en la instancia de EC2, para más información lee mi post anterior sobre Amazon EC2):
sudo ec2-register nombredelbucket/image.manifest.xml
La instancia tarda unos segundos en estar disponible en el panel de control pero si todo ha ido bien deberíamos tener nuestra AMI personalizada y privada lista para lanzarse.

Cualquier duda dejadla en comentarios y miraremos de resolverla lo más pronto posible, así quizás ayudamos a otras personas que se encuentren con el mismo problema :)

Saludos!

, , , , , ,

No Comments