header_lecciones_v5

Cómo configurar una Lambda@Egde para redireccionar un usuario

por Alejandro López, el 13 de abril de 2020

Cómo configurar una Lambda@Egde para redireccionar un usuario

En esta lección te enseñaremos cómo configurar una Lambda@Egde para redireccionar los usuario dependiendo de su ubicación. 

¿Que es Lambda@Egde ?

Es una característica totalmente serveless de Cloudfront que permite ejecutar código, esto con la intención de mejorar el rendimiento de la aplicación y su latencia, además de un sin fin de utilidades, algunas de estas son :

  • Permite la personalización de contenido, dependiendo del lugar de ubicación (Geo Referenciación)
  • Permite agregar seguridad y privacidad a los sitios web agregando encabezados de seguridad HTTP a las respuestas del origen, sin modificar el código fuente.

Situación

Deseamos que nuestro cliente dependiendo de su lugar de ubicación pueda acceder al sitio web de Colombia, o si está en otro lugar visite el sitio web de Estados unidos. Para esto realizaremos la configuración de una Lambda@Egde que se encargará de este redireccionamiento.

Configuración de Lambda@Egde

Lo primero que hay que debemos hacer es la creación de una lambda, ingresamos entonces a la consola de Administración, nos dirigimos a los servicios y buscamos la opción lambda.

Configuración de Lambda@Egde 1

Allí seleccionamos “Create Function”

Configuración de Lambda@Egde 2

Luego se abre la opción de configuración, allí seleccionamos si deseamos crear el código desde cero ó si deseamos utilizar alguna plantilla predeterminada por AWS, para nuestro caso crearemos la función desde cero, seleccionamos nombre, tipo de lenguaje y para el caso de los permisos utilizamos el predeterminado que tiene AWS para correr la lambda, y escogemos la opción crear lambda:

Configuración de Lambda@Egde 3

Cuando la lambda esté creada se abre la pantalla de la lambda y bajamos hasta la opción “Function Code”

Configuración de Lambda@Egde 4

Allí es donde crearemos el código, para nuestro caso se va utilizar una personalización de contenido dependiendo de donde esté ubicado el usuario, a continuación comparto el respectivo script:

/* This is an origin request function */

exports.handler = (event, context, callback) => {

                   const request = event.Records[0].cf.request;

                   const headers = request.headers;

                   /*

                   * Based on the value of the CloudFront-Viewer-Country header, generate an

                   * HTTP status code 302 (Redirect) response, and return a country-specific

                   * URL in the Location header.

                   * NOTE: 1. You must configure your distribution to cache based on the

                   *      CloudFront-Viewer-Country header. F|| m||e inf||mation, see

                    *     

http://docs.aws.amazon.com/console/cloudfront/cache-on-selected-headers

                   *   2. CloudFront adds the CloudFront-Viewer-Country header after the viewer

                    *      request event. To use this example, you must create a

trigger f|| the

                    *      ||igin request event.

  */

let url = 'https://www.google.com';

console.log(JSON.stringify(headers, null, 2));

if (headers['cloudfront-viewer-country']) {

     const countryCode = headers['cloudfront-viewer-country'][0].value;

              if (countryCode === 'CO'  || countryCode === 'PE' || countryCode === 'PA'){

         url = 'https://www.google.com';

     }else if (countryCode === 'US' || countryCode === 'BR' || countryCode === 'CA' || countryCode === 'PR'){

         url = 'https://www.netflix.com';

     } else {

         url = 'https://www.google.com';

     }

   }

const response = {

     status: '302',

     statusDescription: 'Found',

     headers: {

         location: [{

             key: 'Location',

             value: url,

         }],

     },

};

callback(null, response);

};

Este script utiliza una funcionalidad propia de AWS llamada Cloudfront-Viewer-Country, su función es realizar una petición HTTP y dependiendo del lugar de ubicación del usuario, devuelve una URL específica donde se identifica su ubicación. Una vez agregado el código se debería ver así:

Configuración de Lambda@Egde 5

Posteriormente subimos a la opción “Save” y a continuación publicamos la versión, la cual es necesaria para añadir el disparador, que para el caso de Lambda@Edge normalmente es un Cloudfront:

Configuración de Lambda@Egde 6

Se abre una pestaña para seleccionar la versión, y luego hacemos clic en publicar.

Configuración de Lambda@Egde 7

Después debemos realizar la configuración del disparador(Trigger), esto es necesario para activar nuestra Lambda@Edge,entonces ingresamos a la opción “Add trigger” :

Configuración de Lambda@Egde 8


Aparece una barra de busqueda, alli seleccionamos “Cloudfront”:

Configuración de Lambda@Egde 9

Luego ingresamos la siguiente información:
- Seleccionamos nuestro cloudfront
- El behavior para nosotros es el default
- Tipo de evento, que en nuestro caso es de origin-request
- Seleccionamos los dos Checkbox y le damos agregar.

Configuración de Lambda@Egde 10

Luego, es necesario realizar la configuración del behavior en nuestro Cloudfront, el cual va ser en el encargado de realizar la activación de la Lambda@Edge


Configuración de Lambda@Egde 11

Configuración de Lambda@Egde 12

Finalmente,  realizamos la configuración de nuestra Lambda@Edge en el cloudfront:

Configuración de Lambda@Egde 13

* el ARN de nuestra Lambda@Edge la podemos encontrar en en la parte superior derecha en el servicio de Lambda

Configuración de Lambda@Egde 14

Siguiendo estos pasos logramos  la configuración de Lambda@Edge para ejecutar la función de redirección dependiendo del lugar de ubicación del usuario.


Nueva llamada a la acción

Temas:Desarrollo de Software

Lecciones Pragma

Lecciones en Academia Pragma

Aquí encontrarás tutoriales técnicos para que apliques en temas de desarrollo de software, cloud, calidad en software y aplicaciones móviles. 

También puedes visitar nuestro Blog con contenido actual sobre Transformación Digital, Marketing, Conocimiento de Usuario y más. 

Blog

Suscríbete a la academia

Descarga la Guía para trabajar con ambientes IBM Websphere Portal