
Almacenar datos de Mysfit
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

Tiempo de realización
20 minutos
Servicios utilizados
Pruebe Github
Instrucciones de implementación
-
Paso 1: Adición de una base de datos NoSQL a Mythical Mysfits
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
-
Paso 2: Confirmación de su primer cambio de código real
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.
-
Paso 3: Actualización del contenido del sitio web en S3
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.