En este módulo va a usar AWS Lambda y Amazon DynamoDB para crear un proceso de backend para administrar las solicitudes de su aplicación web. La aplicación del navegador que se implementó en el primer módulo permite a los usuarios solicitar que se envíe un unicornio a una ubicación de su elección. Para administrar las solicitudes, el JavaScript que se ejecuta en el navegador deberá invocar un servicio que se ejecuta en la nube.

Serverless_Web_App_LP_assets-04

Podrá implementar una función de Lambda que se invoca cada vez que un usuario solicita un unicornio. La función seleccionará un unicornio de la flota, registrará la solicitud en una tabla de DynamoDB y, a continuación, responderá a la aplicación frontend con detalles sobre el unicornio que se envía.

La función se invoca desde el navegador con Amazon API Gateway. Podrá implementar esa conexión en el siguiente módulo. En este módulo se acaba de probar la función de forma aislada.

Tiempo para completar el módulo: 30 minutos

Servicios utilizados: AWS Lambda, Amazon DynamoDB


Siga las instrucciones paso a paso detalladas a continuación para crear su proceso de backend sin servidor. Haga clic en cada número de paso para expandir la sección.

  • Paso 1. Crear una tabla de Amazon DynamoDB

    Utilice la consola de Amazon DynamoDB para crear una nueva tabla de DynamoDB. Asigne un nombre a su tabla Rides (paseos) y bríndele una clave de partición llamada RideId con tipo String. El nombre de la tabla y la clave de partición distinguen entre mayúsculas y minúsculas. Asegúrese de utilizar el ID exacto. Utilice la configuración predeterminada para el resto de configuración.

    Una vez que haya creado la tabla, tenga en cuenta el ARN de uso en el siguiente paso.


    1. Desde la consola de administración de AWS, elija Servicios a continuación, seleccione DynamoDB en Base de datos.

    2. Elija Crear tabla.

    3. Escriba Rides (paseos) en el Nombre de la tabla. Este campo distingue entre mayúsculas y minúsculas.

    4. Escriba RideId para la clave de partición y seleccione String para el tipo de clave. Este campo distingue entre mayúsculas y minúsculas.

    5. Marque la casilla Utilizar la configuración predeterminada y seleccione Crear.

    6. Vaya a la parte inferior de la sección Descripción general de la nueva tabla y anote el ARN. Utilizará esto en la próxima sección.

  • Paso 2. Crear una función de IAM para su función de Lambda

    Cada función de Lambda tiene un rol de IAM asociado. Este rol define qué otros servicios de AWS pueden interactuar con la función. A efectos de este taller, tendrá que crear una función de IAM que otorgue permiso a la función de Lambda para escribir registros en Amazon CloudWatch Logs y el acceso a los elementos de escritura en su tabla de DynamoDB.

    Utilice la consola de IAM para crear una nueva función. Nómbrela WildRydesLambda y seleccione AWS Lambda como tipo de función. Tendrá que adjuntar políticas que le otorgan a la función permisos para escribir en Amazon CloudWatch Logs y colocar elementos en su tabla de DynamoDB.

    Adjunte la política administrada llamada AWSLambdaBasicExecutionRole a esta función para conceder los permisos de CloudWatch Logs. Además, debe crear una política en línea personalizada para la función que permite la acción ddb:PutItem para la tabla que creó en la sección anterior.


    1. Desde la consola de administración de AWS, haga clic en Servicios luego seleccione IAM en la sección Seguridad, identidad y conformidad.

    2. Seleccione Funciones en la barra de navegación izquierda y, a continuación, elija Crear nueva función.

    3. Seleccione AWS Lambda para la función.

      Nota: Seleccionar un tipo de función crea automáticamente una política de confianza de la función que permite a los servicios de AWS asumir esta función en su nombre. Si estuviera creando esta función con CLI, AWS CloudFormation u otro mecanismo, debería especificar una política de confianza directamente.

    4. Para empezar, escriba AWSLambdaBasicExecutionRole en el cuadro de texto Filtro y marque la casilla junto a dicha función.

    5. Seleccione Paso siguiente.

    6. Escriba WildRydesLambda como Nombre de la función.

    7. Elija Crear función.

    8. Escriba WildRydesLambda en el cuadro de filtro en la página Funciones y elija la función que acaba de crear.

    9. En la pestaña Permisos, expanda la sección Políticas en línea y haga clic en el enlace Hacer clic aquí para crear una nueva política en línea.

    10. Asegúrese de que el Generador de política esté seleccionado y elija Seleccionar.

    11. Seleccione Amazon DynamoDB desde el menú desplegable de Servicio de AWS.

    12. Seleccione PutItem de la lista de Acciones.

    13. Pegar el ARN de la tabla que ha creado en la sección anterior en campo Nombre de recurso de Amazon (ARN).

    14. Elija Añadir declaración.

    15. Elija Próximo paso y luego Aplicar política.

  • Paso 3. Crear una función de Lambda para administrar solicitudes

    AWS Lambda ejecutará su código como respuesta a eventos, como una solicitud HTTP. En este paso va a construir la función principal que procesará las solicitudes de API de la aplicación web para enviar un unicornio. En el siguiente módulo va a utilizar Amazon API Gateway para crear un API RESTful que expondrá un punto de enlace HTTP que se puede invocar desde los navegadores de los usuarios. A continuación, conectará la función de Lambda que creó en este paso a la API para crear un backend completamente funcional para su aplicación web.

    Utilice la consola de AWS Lambda para crear una nueva función de Lambda llamada RequestUnicorn que procesará las solicitudes de API. Utilice la implementación de ejemplo proporcionada requestUnicorn.js para su código de función. Solo tiene que copiar y pegar desde dicho archivo en el editor de la consola de AWS Lambda.

    Asegúrese de configurar la función para utilizar la función WildRydesLambda de IAM que creó en la sección anterior.


    1. Elija en Servicios, luego seleccione Lambda en la sección de Informática.

    2. Elija Crear función.

    3. Elija Escribir desde cero.

    4. Escriba RequestUnicorn en el campo Nombre.

    5. Seleccione WildRydesLambda del menú desplegable Función existente.

    6. Seleccione Crear función.

    7. Copie y pegue el código desde requestUnicorn.js en el área de entrada del código.

    8. Asegúrese de que Node.js 6.10 esté seleccionado en Tiempo de ejecución.

    9. Deje el valor predeterminado de index.handler en el campo Mantenimiento.

  • Paso 4. Pruebe su implementación

    En este módulo podrá probar la función que construyó mediante la consola de AWS Lambda. En el siguiente módulo añadirá una API REST con API Gateway para que pueda invocar la función de la aplicación basada en navegador que se implementó en el primer módulo.


    1. Elija el menú desplegable Seleccionar un evento de prueba y, a continuación, Configurar evento de prueba.

    2. Copie y pegue el siguiente evento de prueba en el editor:

    {
        "path": "/ride",
        "httpMethod": "POST",
        "headers": {
            "Accept": "*/*",
            "Authorization": "eyJraWQiOiJLTzRVMWZs",
            "content-type": "application/json; charset=UTF-8"
        },
        "queryStringParameters": null,
        "pathParameters": null,
        "requestContext": {
            "authorizer": {
                "claims": {
                    "cognito:username": "the_username"
                }
            }
        },
        "body": "{\"PickupLocation\":{\"Latitude\":47.6174755835663,\"Longitude\":-122.28837066650185}}"
    }
    1. Introduzca un nombre de evento, seleccione Crear y luego probar.

    2. Compruebe que la ejecución haya tenido éxito y que el resultado de la función sea así:

    {
        "statusCode": 201,
        "body": "{\"RideId\":\"SvLnijIAtg6inAFUBRT+Fg==\",\"Unicorn\":{\"Name\":\"Rocinante\",\"Color\":\"Yellow\",\"Gender\":\"Female\"},\"Eta\":\"30 seconds\"}",
        "headers": {
            "Access-Control-Allow-Origin": "*"
        }
    }