Paso 3: implementar en producción mediante el servicio de DynamoDB - Amazon DynamoDB

Paso 3: implementar en producción mediante el servicio de DynamoDB

En las secciones anteriores, hemos implementado y probado la aplicación Tic-Tac-Toe (Tres en raya) localmente en su equipo utilizando DynamoDB Local. Ahora, vamos a implementarla en un entorno de producción, del siguiente modo:

  • Implemente la aplicación con AWS Elastic Beanstalk, un servicio fácil de utilizar para implementar y ampliar servicios y aplicaciones web. Para obtener más información, consulte Implementar una aplicación flask en AWS Elastic Beanstalk.

    Elastic Beanstalk lanzará una o varias instancias Amazon Elastic Compute Cloud (Amazon EC2), que configura a través de Elastic Beanstalk, en las que se ejecutará su aplicación Tic-Tac-Toe (Tres en raya).

  • Con el servicio de Amazon DynamoDB, cree una tabla Games que exista en AWS, en lugar de existir localmente en su ordenador.

Además, tendrá que configurar los permisos. Todos los recursos de AWS que cree, tales como la tabla Games en DynamoDB, son privados de forma predeterminada. Solo el propietario del recurso, es decir, la cuenta de AWS que ha creado la tabla Games, puede obtener acceso a esta tabla. Por lo tanto, la aplicación Tic-Tac-Toe (Tres en raya) no puede actualizar la tabla Games de forma predeterminada.

Para conceder los permisos necesarios, cree un rol de AWS Identity and Access Management (IAM) y concédale permisos para tener acceso a la tabla Games. Primero, la instancia de Amazon EC2 asume este rol. En respuesta, AWS devuelve credenciales de seguridad temporales que la instancia de Amazon EC2 puede utilizar para actualizar la tabla Games en nombre de la aplicación Tic-Tac-Toe (Tres en raya). Al configurar su aplicación en Elastic Beanstalk, debe especificar el rol de IAM que la instancia o instancias de Amazon EC2 pueden asumir. Para obtener más información acerca de los roles de IAM, consulte Roles de IAM para Amazon EC2 en la Guía del usuario de Amazon EC2.

nota

Antes de crear instancias de Amazon EC2 para la aplicación Tic-Tac-Toe (Tres en raya), primero debe decidir en qué región de AWS desea que Elastic Beanstalk las cree. Después de crear la aplicación de Elastic Beanstalk, proporcione el mismo nombre de región y el mismo punto de enlace en un archivo de configuración. La aplicación Tic-Tac-Toe (Tres en raya) utiliza la información de este archivo para crear la tabla Games y enviar las solicitudes subsiguientes en una región de AWS específica. Tanto la tabla Games de DynamoDB como las instancias de Amazon EC2 que Elastic Beanstalk lanza deben estar en la misma región. Para ver una lista de regiones disponibles, consulte Amazon DynamoDB en la Referencia general de Amazon Web Services.

Resumiendo, debe hacer lo siguiente para implementar la aplicación Tic-Tac-Toe en un entorno de producción:

  1. Cree un rol de IAM mediante el servicio IAM. Debe adjuntar una política a este rol que conceda permisos para realizar las acciones de DynamoDB que se requieren para obtener acceso a la tabla Games.

  2. Empaquete el código de la aplicación Tic-Tac-Toe y un archivo de configuración y cree un archivo .zip. Utilice este archivo .zip para proporcionar el código de la aplicación Tic-Tac-Toe (Tres en raya) a Elastic Beanstalk y ponerlo en sus servidores. Para obtener más información sobre cómo crear una agrupación, consulte Creación de una agrupación de origen de aplicación en la Guía para desarrolladores de AWS Elastic Beanstalk.

    En el archivo de configuración (beanstalk.config), se indica la información sobre la región y el punto de enlace de AWS. La aplicación Tic-Tac-Toe (Tres en raya) utiliza esta información para determinar con qué región de DynamoDB debe comunicarse.

  3. Configure el entorno de Elastic Beanstalk. Elastic Beanstalk lanzará una o varias instancias de Amazon EC2 e implementará el paquete de la aplicación Tic-Tac-Toe (Tres en raya) en ellas. Una vez que el entorno de Elastic Beanstalk esté preparado, deberá indicar el nombre del archivo de configuración agregando la variable de entorno CONFIG_FILE.

  4. Crear una tabla de DynamoDB Con el servicio de Amazon DynamoDB, cree una tabla Games en AWS, en lugar de localmente en su ordenador. Recuerde que esta tabla posee una clave principal simple que consta de la clave de partición GameId, de tipo String.

  5. Pruebe el juego en el entorno de producción.

3.1: crear un rol de IAM para Amazon EC2

La creación de un rol de IAM del tipo Amazon EC2 permitirá que la instancia de Amazon EC2 en la que se ejecuta la aplicación Tic-Tac-Toe (Tres en raya) asuma el rol correcto y realice solicitudes a la aplicación para obtener acceso a la tabla Games. Al crear el rol, elija la opción Custom Policy (Política personalizada) y copie y pegue la siguiente política.

{ "Version":"2012-10-17", "Statement":[ { "Action":[ "dynamodb:ListTables" ], "Effect":"Allow", "Resource":"*" }, { "Action":[ "dynamodb:*" ], "Effect":"Allow", "Resource":[ "arn:aws:dynamodb:us-west-2:922852403271:table/Games", "arn:aws:dynamodb:us-west-2:922852403271:table/Games/index/*" ] } ] }

Para obtener más instrucciones, consulte Creación de un rol para un servicio de AWS (AWS Management Console) en la Guía del usuario de IAM.

3.2: crear la tabla de juegos en Amazon DynamoDB

La tabla Games en DynamoDB almacena datos del juego. Si la tabla no existiera, la aplicación la crearía automáticamente. En este caso, permita que la aplicación cree la tabla Games.

3.3: agrupar e implementar el código de la aplicación tic-tac-toe (tres en raya)

Si ha seguido los pasos de este ejemplo, ya tendrá la aplicación Tic-Tac-Toe descargada. Si no es así, descargue la aplicación y extraiga todos los archivos en una carpeta en su equipo local. Para obtener instrucciones, consulte Paso 1: implementar y probar localmente.

Después de extraer todos los archivos, observe que se ha creado la carpeta code. Para proporcionar esta carpeta a Elastic Beanstalk, debe empaquetar su contenido en un archivo .zip. En primer lugar, debe agregar un archivo de configuración a dicha carpeta. Su aplicación utiliza la información sobre la región y el punto de enlace para crear una tabla de DynamoDB en la región especificada y para realizar las solicitudes de operaciones subsiguientes a la tabla con el punto de enlace indicado.

  1. Cambie a la carpeta en la que ha descargado la aplicación Tic-Tac-Toe.

  2. En la carpeta raíz de la aplicación, cree un archivo de texto denominado beanstalk.config con el contenido siguiente.

    [dynamodb] region=<AWS region> endpoint=<DynamoDB endpoint>

    Por ejemplo, podría utilizar el contenido siguiente.

    [dynamodb] region=us-west-2 endpoint=dynamodb.us-west-2.amazonaws.com

    Para obtener una lista de regiones disponibles, consulte Amazon DynamoDB en la Referencia general de Amazon Web Services.

    importante

    La región especificada en el archivo de configuración es la ubicación donde la aplicación Tic-Tac-Toe (Tres en raya) creará la tabla Games en DynamoDB. Debe crear la aplicación de Elastic Beanstalk que se describe en la siguiente sección en la misma región.

    nota

    Al crear la aplicación de Elastic Beanstalk, solicita que se lance un entorno cuyo tipo sea posible elegir el tipo de entorno. Para probar la aplicación Tic-Tac-Toe del ejemplo, puede elegir el tipo de entorno Single Instance (Instancia individual), omitir el resto e ir al paso siguiente.

    No obstante, tenga en cuenta que el tipo de entorno Load balancing, autoscaling (Auto Scaling con balanceo de carga) proporciona un entorno altamente disponible y escalable, algo que debe tener en cuenta al crear e implementar otras aplicaciones. Si elige este tipo de entorno, también debe generar un UUID y agregárselo al archivo de configuración, tal y como se muestra a continuación.

    [dynamodb] region=us-west-2 endpoint=dynamodb.us-west-2.amazonaws.com [flask] secret_key= 284e784d-1a25-4a19-92bf-8eeb7a9example

    En la comunicación cliente-servidor en la cual el servidor envía la respuesta, por motivos de seguridad el servidor envía una cookie firmada que el cliente devuelve al servidor en la siguiente solicitud. Cuando hay un único servidor, este puede generar localmente una clave de cifrado al iniciarse. Si hay muchos servidores, todos ellos deben conocer la misma clave de cifrado; de lo contrario, no podrán leer las cookies establecidas por los demás servidores. Si se agrega secret_key al archivo de configuración, indica a todos los servidores que utilicen esta clave de cifrado.

  3. Comprima el contenido de la carpeta raíz de la aplicación (que incluye el archivo beanstalk.config); por ejemplo, TicTacToe.zip.

  4. Cargue el archivo .zip en un bucket de Amazon Simple Storage Service (Amazon S3). En la siguiente sección, proporcionaremos este archivo .zip a Elastic Beanstalk para cargarlo en el o los servidores.

    Para obtener instrucciones sobre cómo cargar un archivo en un bucket de Amazon S3, consulte Crear un Bucket y Agregar un objeto a un bucket en la Guía del usuario de Amazon Simple Storage Service.

3.4: configurar el entorno de AWS Elastic Beanstalk

En este paso, se crea una aplicación de Elastic Beanstalk, que es una colección de componentes, incluidos los entornos. En este ejemplo vamos a lanzar una instancia Amazon EC2 para implementar y ejecutar la aplicación Tic-Tac-Toe (Tres en raya).

  1. Ingrese la siguiente URL personalizada con el fin de configurar una consola de Elastic Beanstalk para configurar el entorno.

    https://console.aws.amazon.com/elasticbeanstalk/?region=<AWS-Region>#/newApplication ?applicationName=TicTacToeyour-name &solutionStackName=Python &sourceBundleUrl=https://s3.amazonaws.com/<bucket-name>/TicTacToe.zip &environmentType=SingleInstance &instanceType=t1.micro

    Para obtener más información sobre las URL personalizadas, consulte Construir una URL de lanzamiento inmediato en la Guía de desarrolladores de Elastic Beanstalk de AWS Elastic Beanstalk. Para la URL, tenga en cuenta lo siguiente:

    • Debe proporcionar el nombre de una región de AWS (el mismo que ha facilitado en el archivo de configuración), un bucket de Amazon S3 y el nombre de objeto.

    • Para las pruebas, la URL solicita el tipo de entorno SingleInstance y t1.micro como tipo de instancia.

    • El nombre de la aplicación debe ser único. Así pues, en la URL anterior, sugerimos que anteponga su propio nombre a applicationName.

    Al hacerlo, se abre la consola de Elastic Beanstalk. En algunos casos, es posible que deba iniciar sesión.

  2. En la consola de Elastic Beanstalk, elija Review and Launch y, a continuación, elija Launch.

  3. Anote la URL para futuras consultas. Esta URL abre la página de inicio de la aplicación Tic-Tac-Toe.

    Captura de pantalla de la aplicación que muestra el mensaje de que el entorno se está creando en la página de inicio.
  4. Configure la aplicación Tic-Tac-Toe de modo que conozca la ubicación del archivo de configuración.

    Una vez que Elastic Beanstalk haya creado la aplicación, elija Configuration.

    1. Elija el icono con forma de engranaje que aparece junto a Software Configuration (Configuración de software), tal y como se muestra en la captura de pantalla siguiente.

      Captura de pantalla de la aplicación Tic-Tac-toe (Tres en raya) que muestra el icono con forma de engranaje junto a Software Configuration (Configuración de software).
    2. Al final de la sección Environment Properties (Propiedades de entorno), escriba CONFIG_FILE y su valor beanstalk.config; a continuación, elija Save (Guardar).

      Puede que la actualización del entorno tarde unos minutos en completarse.

      Captura de pantalla de la aplicación que muestra la sección Environment Properties (Propiedades de entorno).

    Una vez completada la actualización, ya puede jugar.

  5. En el navegador, escriba la URL que copió en el paso anterior, tal y como se muestra en el siguiente ejemplo.

    http://<pen-name>.elasticbeanstalk.com

    Se abrirá la página de inicio de la aplicación.

    Captura de pantalla de la página de inicio de la aplicación que muestra el botón Create (Crear), invitaciones, partidas en curso y el historial reciente.
  6. Inicie sesión como testuser1 y elija CREATE (CREAR) para comenzar una nueva partida de tres en raya.

  7. Escriba testuser2 en el cuadro Choose an Opponent (Elegir un contrincante).

    Captura de pantalla de la aplicación que muestra el cuadro Choose an Opponent (Elegir un contrincante).
  8. Abra otra ventana del navegador.

    Asegúrese de borrar todas las cookies en la ventana del navegador para no iniciar sesión con el mismo nombre de usuario.

  9. Escriba la misma URL para abrir la página de inicio de la aplicación, tal y como se muestra en el ejemplo siguiente.

    http://<env-name>.elasticbeanstalk.com
  10. Inicie sesión como testuser2.

  11. Vaya a la invitación de testuser1 en la lista de invitaciones pendientes y elija accept (aceptar).

    Captura de pantalla de la aplicación que muestra la invitación testuser1 en la lista de invitaciones.
  12. Ahora aparece la página de la partida.

    Captura de pantalla de la aplicación que muestra una cuadrícula vacía de Tic-Tac-Toe (Tres en raya).

    Pueden jugar la partida los usuarios testuser1 y testuser2. La aplicación guardará cada jugada en el elemento correspondiente de la tabla Games.