Proyectos en AWS

Crear una aplicación web moderna

Implemente una aplicación web, conéctese a una base de datos y analice el comportamiento del usuario

Módulo 3: Almacenamiento de información Mysfit

En este módulo configurará Amazon DynamoDB para almacenar la información mysfit en una tabla de base de datos central.

Información general

Ahora que ha implementado un servicio y una canalización de CI/CD en funcionamiento para ofrecer cambios a ese servicio en forma automática cuando actualice su repositorio de códigos, puede mover rápidamente nuevas funciones de la aplicación desde la concepción hasta que están disponibles para sus clientes Mythical Mysfits. Con este aumento en la agilidad, agreguemos otra parte fundamental a la funcionalidad para la arquitectura del sitio web de Mythical Mysfits, un nivel de datos.

En este módulo, creará una tabla en Amazon DynamoDB, un servicio de base de datos NoSQL administrado y escalable en AWS con rendimiento súper rápido. En lugar de tener todos los Mysfits almacenados en un archivo JSON estático, los almacenaremos en una base de datos para realizar sitios web futuros más extensibles y escalables.

Diagrama de la arquitectura

diagrama de arco de fargate y dynamodb

 Tiempo de realización

20 minutos

 Servicios utilizados

Instrucciones de implementación

  • A: Cree una tabla de DynamoDB

    Para agregar una tabla de DynamoDB a la arquitectura, hemos incluido otro archivo de entrada de JSON CLI que define una tabla denominada MysfitsTable. Esta tabla tendrá un índice primario definido por un atributo de clave hash denominado MysfitId, y dos índices secundarios más. El primer índice secundario tendrá una clave hash de Especies y una clave de rango de Mysfitld, y el segundo índice secundario tendrá una clave hash de Alineación y una clave de rango de Mysfitld.

    Estos dos índices secundario nos permitirán ejecutar consultas en la tabla para recuperar todos los mysfits que coincidan con una determinada Especie o Alineación para permitir filtrar la funcionalidad que pudo haber notado que aún no está funcionando en el sitio web. Puede ver este archivo en ~/environment/aws-modern-application-workshop/module-3/aws-cli/dynamodb-table.json. No se requieren cambios en este archivo y está listo para ejecutarse. Para obtener más información sobre los índices de DynamoDB y otros conceptos centrales, visite esta página. 

    Para crear la tabla utilizando AWS CLI, ejecute el siguiente comando en la terminal Cloud9:

    aws dynamodb create-table --cli-input-json file://~/environment/aws-modern-application-workshop/module-3/aws-cli/dynamodb-table.json

    Después de ejecutar el comando, puede ver los detalles de su recientemente creada tabla ejecutando el siguiente comando AWS CLI en la terminal:

    aws dynamodb describe-table --table-name MysfitsTable

    Si ejecutamos el siguiente comando para recuperar todos los elementos almacenados en la tabla, verá que la tabla está vacía:

    aws dynamodb scan --table-name MysfitsTable
    {
        "Count": 0,
        "Items": [],
        "ScannedCount": 0,
        "ConsumedCapacity": null
    }
    B: Agregar elementos a la tabla de DynamoDB

    También se suministra un archivo JSON que se pude usar para insertar un número de lote de elementos Mysfit en esta tabla. Esto se logrará a través de la API de DynamoDB BatchWriteItem.

    Para llamar esta API utilizando el archivos JSON proporcionado, ejecute el siguiente comando de terminal (la respuesta del servicio debe informar que no hay elementos que quedaron sin procesar):

    aws dynamodb batch-write-item --request-items file://~/environment/aws-modern-application-workshop/module-3/aws-cli/populate-dynamodb.json

    Ahora, si ejecuta el mismo comando para escanear todos los contenidos de la tabla, notará que los elementos se han cargado en la tabla:

    aws dynamodb scan --table-name MysfitsTable
  • A: Copie el código de servicio de Flask actualizado

    Ahora que tenemos nuestros datos incluidos en la tabla, modifiquemos el código de nuestra aplicación para que lea desde esta tabla en lugar de regresar el archivo JSON estático que se usó en el Módulo 2. Hemos incluido un nuevo conjunto de archivos Python para su microservicio de Flask, pero ahora en lugar de leer el archivo estático JSON hará una solicitud para DynamoDB.

    La solicitud se forma el AWS SDK para Python denominado boto3. Este SDK es un modo potente aunque simple de interactuar con los servicios de AWS a través de un código Python. Le permite usar definiciones y funciones de clientes de servicios que tienen gran simetría con los comandos CLI y API de AWS que ha ya estado ejecutando como parte de este taller. La traducción de estos comandos para que funcionen con el código Python es simple cuando se usa boto3.

    Para copiar los nuevos archivos en su directorio de repositorios CodeCommit, ejecute el siguiente comando en la terminal:

    cp ~/environment/aws-modern-application-workshop/module-3/app/service/* ~/environment/MythicalMysfitsService-Repository/service/
    B: Copie el código de servicio de Flask actualizado

    Ahora, debemos verificar estos cambios de código en CodeCommit utilizando el cliente de línea de comando Git.

    Ejecute los siguientes comandos para verificar los nuevos cambios de código e iniciar su canalización de CI/CD:

    cd ~/environment/MythicalMysfitsService-Repository
    git add .
    git commit -m "Add new integration to DynamoDB."
    git push

    Ahora, en solo 5-10 minutos verá cómo sus cambios de código acceden a su canalización de CI/CD completa dentro de CodePipeline y fuera de su servicio de Flask implementado en AWS Fargate en Amazon ECS.

    Siéntase libre de explorar la consola de AWS CodePipeline para ver el progreso de los cambios hacia su canalización.

  • Por último, necesitamos publicar una nueva página index.html para nuestro bucket S3 de manera que se use la nueva funcionalidad API utilizando cadenas de consulta para filtrar las respuestas. El nuevo archivo index.html se encuentra en ~/environment/aws-modern-application-workshop/module-3/web/index.html.

    Abra este archivo en su Cloud9 IDE y sustituya la cadena indicando “REPLACE_ME” tal como lo hizo en el Módulo 2, con el punto de enlace NLB adecuado. Recuerde no incluir la ruta /mysfits.

    Consulte el archivo que ya ha editado en el directorio /module-2/ si es necesario. Después de sustituir el punto de enlace para señalar su NLB, cargue el nuevo archivos index.html ejecutando el siguiente comando (sustituyéndolo con el nombre del bucket que creó en el Módulo 1:

    aws s3 cp --recursive ~/environment/aws-modern-application-workshop/module-3/web/ s3://your_bucket_name_here/

    Vuelva a consultar su sitio web Mythical Mysfits para ver el nuevo rellenado de Mysfits que se carga desde su tabla DynamoDB y cómo está funcionando la funcionalidad de Filtro.

    Con esto concluye el Módulo 3.

A continuación, configure el registro de usuarios.