Introducción a AWS

Crear una aplicación web sin servidor

con AWS Lambda, Amazon API Gateway, AWS Amplify, Amazon DynamoDB y Amazon Cognito

Crear una aplicación web sin servidor

Módulo 3: backend de servicios sin servidor

Utilizará AWS Lambda y Amazon DynamoDB para crear un proceso de backend destinado a administrar las solicitudes de la aplicación web

Información general

En este módulo, utilizará AWS Lambda y Amazon DynamoDB para crear un proceso de backend destinado a administrar las solicitudes de la aplicación web. La aplicación de navegador que implementó en el primer módulo permite a los usuarios solicitar el envío de un objeto Unicorn a una ubicación de su elección. Para responder a esas solicitudes, el código JavaScript que se ejecuta en el navegador deberá invocar a un servicio que se ejecuta en la nube.

Información general acerca de la arquitectura

Información general acerca de la arquitectura

Va a implementar una función Lambda que se invocará cada vez que un usuario solicite un objeto Unicorn. La función seleccionará un elemento Unicorn de la flota, registrará la solicitud en una tabla de DynamoDB y, después, responderá a la aplicación front-end con detalles acerca del elemento Unicorn que se envía.

La función se invoca desde el navegador con Amazon API Gateway. Implementará dicha conexión en el siguiente módulo. Para este módulo, simplemente probará su función de forma aislada.

 Tiempo de realización

30 minutos

 Servicios utilizados

Implementación

  • Crear una tabla de Amazon DynamoDB

    Utilice la consola de Amazon DynamoDB para crear una nueva tabla de DynamoDB. Coloque el nombre Rides a la tabla y asígnele una clave de partición denominada RideId con el tipo Cadena. El nombre de la tabla y la clave de partición distinguen entre mayúsculas y minúsculas. Asegúrese de utilizar los ID proporcionados exactamente. Utilice la configuración predeterminada para el resto de las opciones.

    Una vez creada la tabla, anote el ARN para utilizarlo en el paso siguiente.

    a. En la consola de administración de AWS, elija Servicios y, a continuación, seleccione DynamoDB bajo Bases de datos.
    b. Elija Crear tabla.
    c. Ingrese Rides como Nombre de la tabla. Este campo distingue entre mayúsculas y minúsculas.
    d. Ingrese RideId para Clave de partición y seleccione Cadena como tipo de clave. Este campo distingue entre mayúsculas y minúsculas.
    e. Marque la casilla Usar configuración predeterminada y elija Crear.
    f. Desplácese hasta la parte inferior de la sección Información general de la nueva tabla y anote el ARN. Lo usará en la sección siguiente.

  • Crear un rol de IAM para la función Lambda

    Cada función Lambda tiene un rol de IAM asociado. Este rol define con qué otros servicios de AWS se permite interactuar a la función. Para este taller, deberá crear un rol de IAM que conceda a su función Lambda permisos de escritura de registros en Amazon CloudWatch Logs y acceso de escritura de elementos en su tabla de DynamoDB.

    Utilice la consola de IAM para crear un nuevo rol. Asígnele el nombre WildRydesLambda y seleccione AWS Lambda como tipo de rol. Tendrá que asociar políticas que le otorguen a la función permisos para escribir en Amazon CloudWatch Logs y colocar elementos en la tabla de DynamoDB.

    Asocie la política administrada llamada AWSLambdaBasicExecutionRole a este rol para otorgar los permisos necesarios de CloudWatch Logs. Además, cree una política insertada personalizada para el rol que permita la acción ddb:PutItem para la tabla que creó en la sección anterior.

    a. En la consola de administración de AWS, haga clic en Servicios y, a continuación, seleccione IAM en la sección Seguridad, identidad y conformidad.

    b. Seleccione Roles en la barra de navegación izquierda y, después, elija Crear nuevo rol.

    c. Seleccione Lambda como tipo de rol en el grupo Servicio de AWS y, a continuación, haga clic en Siguiente: Permisos.

    Nota: Al seleccionar un tipo de rol, se crea automáticamente una política de confianza para este que permite a los servicios de AWS asumir este rol en su nombre. Si creara este rol con la CLI, AWS CloudFormation u otro mecanismo, debería especificar una política de confianza directamente.

    d. Empiece a escribir AWSLambdaBasicExecutionRole en el cuadro de texto Filtro y marque la casilla junto a dicho rol.

    e. Elija Paso siguiente.

    f. Ingrese WildRydesLambda para Nombre de rol.

    g. Elija Crear rol.

    h. Escriba WildRydesLambda en el cuadro de filtro de la página Roles y elija el rol que acaba de crear.

    i. En la pestaña Permisos, seleccione el enlace Agregar política insertada ubicado en la esquina inferior derecha para crear una política insertada nueva.

    j. Seleccione Elegir un servicio.

    k. En primer lugar, escriba DynamoDB en el cuadro de búsqueda con el nombre Buscar un servicio y seleccione DynamoDB cuando aparezca.

    l. Elija Seleccionar acciones.

    m. Primero, escriba PutItem en el cuadro de búsqueda con el nombre Filtrar acciones y marque la casilla ubicada junto a PutItem cuando aparezca.

    n. Seleccione la sección Recursos.

    o. Con la opción Específico seleccionada, elija Agregar el enlace del ARN en la sección de la tabla.

    p. Pegue el ARN de la tabla que creó en la sección anterior en el campo Especificar el ARN para la tabla y elija Agregar.

    q. Elija Revisar política.

    r. Escriba DynamoDBWriteAccess como nombre de la política y elija Crear política.

  • Crear una función Lambda para administrar las solicitudes

    AWS Lambda ejecutará su código como respuesta a eventos tales como una solicitud HTTP. En este paso, vamos a crear la función principal que procesará las solicitudes API de la aplicación web para enviar un objeto Unicorn. En el módulo siguiente utilizaremos Amazon API Gateway a fin de crear una API RESTful para exponer un punto de enlace HTTP que se puede invocar desde los navegadores de los usuarios. Después, conectará a dicha API la función Lambda que haya creado en este paso, a fin de crear un backend plenamente funcional para la aplicación web.

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

    Asegúrese de configurar la función para poder usar el rol de IAM WildRydesLambda que creó en la sección anterior.

    a. Elija Servicios y, a continuación, seleccione Lambda en la sección Informática.
    b. Haga clic en Crear función.
    c. Mantenga seleccionada la tarjeta predeterminada Crear de cero.
    d. Escriba RequestUnicorn en el campo Nombre.
    e. Seleccione Node.js 6.10 para Tiempo de ejecución.
    f. Asegúrese de que la opción Elegir un rol existente esté seleccionada en el menú desplegable Rol.
    g. Seleccione WildRydesLambda en el menú desplegable Rol existente.
    h. Haga clic en Crear función.
    i. Desplácese hacia abajo hasta la sección Código de la función y reemplace el código existente en el editor de código index.js por el contenido de requestUnicorn.js.
    j. Haga clic en “Guardar” en la esquina superior derecha de la página.

  • Valide la implementación

    En este módulo, probará la función que ha creado mediante la consola de AWS Lambda. En el módulo siguiente, agregará una API REST con API Gateway para poder invocar su función desde la aplicación basada en navegador que implementó en el primer módulo.

    a. En la pantalla de edición principal de la función, seleccione Configurar evento de prueba en el menú desplegable Seleccionar un evento de prueba….
    b. Mantenga seleccionada la opción Crear nuevo evento de prueba.
    c. Escriba TestRequestEvent en el campo Nombre del evento
    d. 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}}"
    }

    e. Haga clic en Crear.
    f. En la pantalla de edición de funciones principal, haga clic en Prueba con la opción TestRequestEvent seleccionada en el menú desplegable.
    g. Desplácese hacia la parte superior de la página y amplíe la sección Detalles de la sección Resultado de la ejecución.
    h. Compruebe que la ejecución se ha realizado correctamente y que el resultado de la función es similar al siguiente:

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

¿Este módulo le resultó útil?

Gracias
Indíquenos lo que le gustó.
Cerrar
Lamentamos haberlo decepcionado
¿Hay información desactualizada, confusa o inexacta? Ayúdenos a mejorar este tutorial con sus comentarios.
Cerrar

Implementar una API RESTful