Categorías
Tecnología

Acceder a instancia EC2 de Cloud9 por SSH desde Ubuntu en Windows

Las instancia que se crean desde Cloud9 no tienen una key pair asociada, pero se puede acceder a ellas si tu mismo instalas una. Para ello:

Desde Ubuntu en Windows genérate una key pair:

ssh-keygen -t rsa

Por defecto esto creara dos archivos dentro ~/.ssh la clave pública (id_rsa.pub) y la clave privada (id_rsa). Muestra en pantalla la clave privada y copiala:

cat ~/.ssh/id_rsa.pub

Si creas el archivo de esta manera los permisos de acceso se crearan correctamente, en otro caso puede que tengas que configurarlos tal que así:

chmod 400 id_rsa

Abre tu instancia Cloud9 y dentro ella una ventana de terminal.

Ve a la siguiente ruta:

cd ~/.ssh

Abre el siguiente archivo:

sudo vim authorized_keys

En ese archivo aparecen varia claves públicas que necesita el propio Cloud9, Pega la clave pública que copiaste desde Ubuntu después de «# Add any additional keys below this line».  Guarda.

Ahora puedes volver a Ubuntu y conectarte por ssh, teniendo en cuenta que el usuario por defecto que crea ec2 se llama ec2-user:

ssh -i id_rsa ec2-user@<ip pública ec2>

Yo me he guardado mi colección de key-pairs en Dropbox.

Pro Tip: Si como a mi la neurona no te da para más y no crees que vayas a poder recordar la cadena de conexión, te puedes crear un alias y almacenarlo en .bash_profile para que sea permanente:

echo "alias c9='ssh -i ~/.ssh/id_rsa ec2-user@c9.enzo.es'" >> ~/.bash_profile

De esta manera sólo con pone «c9» en el Terminal te conectarás a tu máquina en Cloud9.

Categorías
Tecnología

La desinformación como estrategia de marketing

Este mes el juego de PlayStation Plus para la PS4 es Don´t Starve que se presenta como:

…an uncompromising wilderness survival game full of science and magic. It’s a game that gives no instruction, and forces players to adapt or die in the process

Categorías
Tecnología

Amazon AWS & Jetpack Photon ¿la combinación perfecta?

Estos últimos días ha sido una gozada estar cacharreando con WordPress, jugando con el tema, los widgets, probando plugins… estoy aprendiendo un montón. Ha habido muchos `wow!´ de admiración, algunos pocos `wtf!´ y el balance por el momento es totalmente positivo.

Uno de los temas que más me preocupaban con la migración a WordPress era el tratamiento de las imágenes, ya que con mi anterior gestor de contenidos nosotros mismos programamos una integración con Amazon S3 y Cloudfront que funciona a las mil maravillas. Cada vez que subias una foto a una entrada o a una galería ésta y sus thumbs se almacenaba en local y al publicarse la entrada se subían a S3… luego al mostrar el post al usuario la URL de S3 se sustituía `on-the-fly´ por la URL de Cloudfront.

Las dos principales ventajas de esta solución son:

  1. En tu hosting no almacenas imágenes, lo que llegado el momento es muy útil cuando tienes que migrar de servidor… aunque no queremos cambiar nunca más.
  2. En cualquier momento puedes cambiar la distribución de Cloudfront y generar una nueva URL para tus imágenes, desconectando las antiguas: esto es muy útil cuando otras páginas están republicando tus feeds sin piedad y encima tirando de ancho de banda de tu servidor de imágenes (hot linking) con el coste que ello implica.

Con el nuevo CMS por fin he conseguido hacer algo similar gracias a Amazon AWS for WordPress, ahora cada vez que subo una imagen al servidor me la carga automáticamente en mi bucket de Amazon. Este plugin también soporta Cloudfront pero con una implementación que no me gusta, ya que re-escribe la URL de tu post y pone la de cloudfront… lo que en un futuro te impediría desactivar un cloudfront y dar de alta otro asociado al mismo bucket.

Por eso no utilizo esa funcionalidad y dejo directamente la URL de Amazon S3 en el código de mi entrada… algo a priori peligroso, ya que esa URL no la puedes cambiar con facilidad… pero ahí es donde entra en acción Photon de Jetpack `an image acceleration and editing service´ que consigue algo maravilloso: sin modificarme el código de mi entrada se copia mi imagen y actualiza la URL `on-the-fly´ de tal manera que oculta la dirección de S3 al usuario y en su lugar muestra la suya propia en wp.com.

De esta manera puedo desactivar en cualquier momento Photon sin miedo a que se me destroce todo y cambiarme a otro CDN (Content Delivery Network)… mientras mis imágenes se mantienen seguras en S3 y no en mi servidor de páginas.

Esta es una solución que recomiendo a todo el mundo, sobre todo a los que utilizan de manera muy intensa las galerías de imágenes en sus webs o blogs.

pd – Aprovecho y comparto la lista completa de plugins que tengo activos por el momento en el WP de este blog… aunque probablemente de aquí a unas semanas la habré cambiado bastante:

Categorías
Mis proyectos

Moviendo todas nuestras fotos a Amazon S3

Este esquema muestra como hemos hecho para pasar todas las fotos de nuestros blogs a Amazon S3.

Siento una enorme admiración por el proyecto AWS (Amazon Web Services)… ¿quién podía pensar que Amazon, el mayor retailer online, de repente se iba a convertir en proveedor tecnológico y buque insignia del cloud computing?

Aunque utilizo S3 desde el año pasado, cuando empezamos a volcar ahí nuestras copias de seguridad, hasta la fecha nunca nos habíamos planteado usarlo como hosting de imágenes… pero ha llegado un momento en el que las imágenes de más de cinco años de publicación en todos nuestros blogs nos han desbordado y no tiene sentido que la mayoría de los recursos del servidor se desaprovechen sirviendo archivos en lugar de sirviendo webs de manera más eficaz (al fin y al cabo como su propio nombre indica un webserver es un servidor de webs).

Para mover todas las imágenes ha habido que reprogramar varios componentes de nuestro CMS para conseguir que las imágenes se carguen en Amazon S3 en lugar de en topmadrid.com, dolcecity.com…

Me centraré en cómo ha quedado ahora el proceso:

1 – La imagen es cargada por el escritor en el CMS con CKFinder, cada escritor tiene una carpetas con sus imágenes que ellos gestionan, todo ello en enzo.es que es donde está instalado nuestro CMS.

2 – Cuando se publica el post, se realiza una copia de cada imagen en otra carpeta que hemos llamado «cache» y desde ahí se sube a Amazon S3 (utilizando el API REST de Amazon S3 y todo programado en el arcaico vbscritp… que tiene mérito)

3 – Una vez todas las imágenes están subidas se inicia el asintente para crear las thumbs para este proceso necesitamos tener la foto en el servidor donde está instalado el componente con el que las hacemos ASPjpeg, por eso el CMS revisa la carpeta de caché para ver si sigue ahí la foto y sólo en el caso de no encontrarla se la descarga de vuelta desde S3 (esto es necesario porque la carpeta caché se vacía cada noche y a veces quieres rehacer una thumb de un post que colgaste hace tiempo por lo que la foto original ya no está en la carpeta cache y hay que traerla de S3).

4 – Las thumbs se guardan en enzo.es durante el tiempo suficiente para poderlas pasar también a Amazon S3, después se borrán.

A diferencia de antes ya ninguna foto pasa a los blogs de destino, todo está o temporalmente en enzo.es o en su emplazamiento defitivo en Amazon S3 quedando todos los archivos de cada blog organizados en buckets independientes:

Aprovechando que teníamos que hacer este cambio hemos solucionado un problema que habíamos heredado de blogger:

Las imágenes de los posts en lugar de colocarlas todas en la carpeta /uploaded_images/ ahora van clasificadas por años y mes, igual que los posts.

Por su parte las thumbs, para no tenerlas todas juntas como antes en la carpeta /img_thumbs/ se van distribuyendo de manera automática en carpetas de 100 en 100, con lo que evitamos los problemas de la situación anterior: tener carpetas con más de 30.000 imágenes y creciendo que sólo para conseguir listar sus archivos ya era todo un reto.

Sólo nos falta un último empujón para que las galerías entren en el nuevo circuito de S3 y con eso la «migración» estará completa. Los beneficios del cambio son claros, como se puede leer en este post de Amit Agarwal mover todas tus imágenes a Amazon S3 descarga enormemente de trabajo a tu servidor:

En servidores donde corremos aplicaciones hemos comprobado que algunos procesos se ejecutan ahora muchísimo más rápido, tenemos por ejemplo un cron que llama a una página a las 20:00 y que solía terminar cerca de las 22:20… ahora el mismo proceso termina a las 21:45 lo que supone más de media hora de diferencia.

 

Categorías
Tecnología

Amazon CloudFront: sirviendo contenido en S3 más rápido

Con Amazon CloudFront podemos distribuir nuestro contenido alojado en Amazon S3 mucho más rápido y con menor latencia. Aquí explicamos cómo implementarlo en nuestro site para mostrar un video flv.

Llega un momento en donde tu cliente pronuncia las temidas palabras: «quiero videos en mi web»… y tú ya empiezas a sudar pensando en ancho de banda, concurrencia de usuarios, ralentización de servidores y sobre todo en aumento de costes. Cuando confluyen las palabras archivos grandes y mucho tráfico, casi todos nos echábamos a temblar… hasta que llegó Amazon Web Services.

Con Amazon S3 podemos alojar ficheros de gran tamaño y pagar un precio muy razonable por la transferencia consumida, con la gran ventaja de que las descargas ya no estresarán nuestro servidor, que podrá centrarse en generar y servir las páginas rápidamente.

Pero cuando uno habla de videos y archivos de 27 Mb como el que nos ocupa, no sólo quieres que el coste no se te dispare, también necesitas rapidez: lo último que deseas es que tu cliente pulse «Play»… y que no ocurra nada. CloudFront nos asegura que la descarga será mucho más rápida y que la latencia se verá reducida al mínimo.

Vamos a ver con un ejemplo práctico lo sencillo que es usar CloudFront sobre S3, para ello voy a compartir con vosotros un video en formato FLV que he editado con algunos buenos momentos jugando al Gears of War 2:

Paso 1 – Lo primero es darse de alta tanto en S3 como en CloudFront, en mi caso sólo he tenido que darme de alta en el segundo porque ya utilizo a diario S3 para realizar las copias de seguridad de la empresa. Como ya sabréis darse de alta no conlleva ningún coste, Amazon sólo te cobra por lo que consumes.

Paso 2 – Utilizando CloudBerry Explorer o similar, nos vamos a crear un bucket para la ocasión. Un bucket es el nombre que se le da a las carpetas en el raiz de tu cuenta S3, tendrás que encontrar un nombre aun disponible porque éste es a su vez el nombre del subdominio que te asignará S3. En mi caso creo «fernandoplaza» y por tanto mi subdominio en Amazon será: fernandoplaza.s3.amazonaws.com.

Subimos a una carpeta dentro de nuestro bucket el fichero que queremos compartir, en mi caso un FLV:

 

Paso 3 – Mientras que se sube vamos a aprovechar para ir creando una «Distribution», para ello nos descargaremos en Firefox un programa gratuito S3 Organizer (con esta herramienta puedes hacer también el paso anterior si quieres). Configúrala para que acceda a tu cuenta S3 y puedas visualizar tus bucket, después haz clic con el botón derecho del ratón sobre el bucket recien creado y elige «Manage Distributions»… después pulsa el botón «Create Distribution»:

Con esto Amazon creará otro subdominio pero esta vez en cloudfront.net que es una imagen del nuestro, es decir, puedes acceder a los mismos ficheros que en tu bucket original pero ya a través de CloudFront y por tanto mucho más rápido.

Este proceso puede tardar unos cinco minutillos, el status de la petición pasará de «InProgress» a «Deployed» (hay que pulsar sobre el icono de refrescar) y entonces ya sabremos que ha terminado:

Paso 4 – Por último sólo tenemos que asegurarnos de que al fichero FLV que hemos subido se puede acceder públicamente, para ello revisaremos los permisos y comprobaremos que «Todos lo usuarios» pueden «Leer» el archivo. Esto se puede hacer también con CloudBerry Explorer:

Listo! Ya sólo queda ver el resultado, para ver si es tan rápido como dicen.

Para reproducir los FLV desde la web yo utilizo JW Player, que para uso no lucrativo es gratuito, incrustaremos el código necesario y llamaremos al video utilizando la URL en «clodufront.net».

Este es el resultado final, a mi se me carga muy rápido teniendo en cuenta que son casi 30 Mb… ¿y a vosotros?