

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Étape 3 : déploiement en production à l’aide du service DynamoDB
<a name="TicTacToe.Phase3"></a>

**Topics**
+ [3.1 : création d’un rôle IAM pour Amazon EC2](#TicTacToe.DeployInProd.IAMCreateRole)
+ [3.2 : création de la table Games dans Amazon DynamoDB](#TicTacToe.DeployInProd.CreateTable)
+ [3.3 : Regroupez et déployez le code de tic-tac-toe l'application](#TicTacToe.DeployInProd.IAMBundleDeployCode)
+ [3.4 : Configuration de l' AWS Elastic Beanstalk environnement](#TicTacToe.DeployInProd.SetUpElasticBeanstalk)

Dans les sections précédentes, vous avez déployé et testé l' Tic-Tac-Toeapplication localement sur votre ordinateur à l'aide de DynamoDB local. Maintenant, vous déployez l’application en production comme suit :
+ Déployez l'application à AWS Elastic Beanstalk l'aide d'un easy-to-use service de déploiement et de dimensionnement d'applications et de services Web. Pour plus d'informations, consultez la section [Déploiement d'une application Flask vers AWS Elastic Beanstalk](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create-deploy-python-flask.html).

  Elastic Beanstalk lance une ou plusieurs instances Amazon Elastic Compute Cloud (Amazon EC2), que vous configurez via Elastic Beanstalk, sur lesquelles votre application sera exécutée. Tic-Tac-Toe
+ À l’aide du service Amazon DynamoDB, créez une table `Games` qui résidera sur AWS plutôt que localement sur votre ordinateur. 

En outre, vous devez également configurer des autorisations. Toutes AWS les ressources que vous créez, telles que la `Games` table dans DynamoDB, sont privées par défaut. Seul le propriétaire des ressources, à savoir le compte AWS qui a créé la table `Games`, peut accéder à cette table. Par défaut, votre Tic-Tac-Toe application ne peut donc pas mettre à jour le `Games` tableau. 

Pour accorder les autorisations nécessaires, vous créez un rôle Gestion des identités et des accès AWS (IAM) et accordez à ce rôle les autorisations d'accès à la `Games` table. Votre instance Amazon EC2 endosse tout d’abord ce rôle. En réponse, AWS renvoie des informations d'identification de sécurité temporaires que l'instance Amazon EC2 peut utiliser pour mettre à jour le `Games` tableau au nom de l' Tic-Tac-Toeapplication. Lorsque vous configurez votre application Elastic Beanstalk, vous spécifiez le rôle IAM que la ou les instances Amazon EC2 peuvent endosser. Pour plus d’informations sur les rôles IAM, consultez [IAM roles for Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html) dans le *Guide de l’utilisateur Amazon EC2.*

**Note**  
Avant de créer des instances Amazon EC2 pour l' Tic-Tac-Toeapplication, vous devez d'abord choisir la AWS région dans laquelle vous souhaitez qu'Elastic Beanstalk crée les instances. Une fois que vous avez créé l’application Elastic Beanstalk, vous fournissez les mêmes point de terminaison et nom de région dans un fichier de configuration. L' Tic-Tac-Toeapplication utilise les informations contenues dans ce fichier pour créer la `Games` table et envoyer les demandes suivantes dans une AWS région spécifique. La table DynamoDB `Games` et les instances Amazon EC2 lancées par Elastic Beanstalk doivent se trouver dans la même région. Pour obtenir la liste des régions disponibles, veuillez consulter [Amazon DynamoDB](https://docs.aws.amazon.com/general/latest/gr/rande.html#ddb_region) dans le *Référence générale d'Amazon Web Services*.

En résumé, vous devez procéder comme suit pour déployer l' Tic-Tac-Toeapplication en production :

1. Créez un rôle IAM à l’aide du service IAM. Vous attachez à ce rôle une politique accordant à des actions DynamoDB des autorisations pour accéder à la table `Games`. 

1. Regroupez le code de Tic-Tac-Toe l'application et un fichier de configuration, puis créez un `.zip` fichier. Vous utilisez ce `.zip` fichier pour transmettre le code de l' Tic-Tac-Toeapplication à Elastic Beanstalk afin qu'il puisse l'installer sur vos serveurs. Pour plus d’informations sur la création d’une solution groupée, consultez [Création d’une solution groupée d’application](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features.deployment.source.html) dans le *Guide du développeur AWS Elastic Beanstalk *.

   Dans le fichier de configuration (`beanstalk.config`), vous fournissez des informations de point de terminaison et de région AWS . L' Tic-Tac-Toeapplication utilise ces informations pour déterminer à quelle région DynamoDB communiquer. 

1. Configurez l’environnement Elastic Beanstalk. Elastic Beanstalk lance une ou plusieurs instances Tic-Tac-Toe Amazon EC2 et y déploie votre bundle d'applications. Une fois que l’environnement Elastic Beanstalk est prêt, vous fournissez le nom du fichier de configuration en ajoutant la variable d’environnement `CONFIG_FILE`.

1. Créez la table DynamoDB À l'aide du service Amazon DynamoDB, vous créez `Games` la table AWS sur votre ordinateur plutôt que localement. N’oubliez pas que cette table a une clé primaire simple constituée de la clé de partition `GameId` de type chaîne. 

1. Testez le jeu en production. 

## 3.1 : création d’un rôle IAM pour Amazon EC2
<a name="TicTacToe.DeployInProd.IAMCreateRole"></a>

La création d'un rôle IAM de type **Amazon** EC2 permet à l'instance Amazon EC2 qui exécute Tic-Tac-Toe votre application d'assumer le rôle approprié et de demander à l'application d'accéder à la table. `Games` Lorsque vous créez le rôle, sélectionnez l’option **Politique personalisée** puis copiez et collez la politique suivante.

------
#### [ JSON ]

****  

```
{
   "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/*"
         ]
      }
   ]
}
```

------

Pour plus d’instructions, consultez [Création d’un rôle pour un service AWS (AWS Management Console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html) dans le *Guide de l’utilisateur IAM*.

## 3.2 : création de la table Games dans Amazon DynamoDB
<a name="TicTacToe.DeployInProd.CreateTable"></a>

La table `Games` dans DynamoDB stocke les données des parties. Si la table n’existe pas, l’application la crée pour vous. Dans ce cas, laissez l’application créer la table `Games`.

## 3.3 : Regroupez et déployez le code de tic-tac-toe l'application
<a name="TicTacToe.DeployInProd.IAMBundleDeployCode"></a>

Si vous avez suivi les étapes de cet exemple, l' Tic-Tac-Toeapplication est déjà téléchargée. Dans le cas contraire, téléchargez l’application et extrayez tous les fichiers dans un dossier sur votre ordinateur local. Pour obtenir des instructions, veuillez consulter [Étape 1 : déploiement et test localement](TicTacToe.Phase1.md).

Une fois tous les fichiers extraits, vous disposez d’un dossier `code`. Pour remettre ce dossier à Elastic Beanstalk, vous regroupez le contenu de ce dossier en tant que fichier `.zip`. Tout d’abord, vous ajoutez un fichier de configuration dans ce dossier. Votre application utilise les informations de région et de point de terminaison pour créer une table DynamoDB dans la région spécifiée, et effectuer les demandes d’opération de table subséquentes à l’aide du point de terminaison spécifié.

1. Accédez au dossier dans lequel vous avez téléchargé l' Tic-Tac-Toeapplication.

1. Dans le dossier racine de l’application, créez un fichier texte nommé `beanstalk.config` avec le contenu suivant.

   ```
   [dynamodb]
   region={{<AWS region>}}
   endpoint={{<DynamoDB endpoint>}}
   ```

   Par exemple, vous pouvez utiliser le contenu suivant.

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

   Pour obtenir la liste des régions disponibles, consultez [Amazon DynamoDB](https://docs.aws.amazon.com/general/latest/gr/rande.html#ddb_region) dans la *Référence générale d’Amazon Web Services*. 
**Important**  
La région spécifiée dans le fichier de configuration est l'emplacement où l' Tic-Tac-Toeapplication crée la `Games` table dans DynamoDB. Vous devez créer l’application Elastic Beanstalk abordée dans la section suivante dans la même région. 
**Note**  
Lorsque vous créez votre application Elastic Beanstalk, vous demandez à lancer un environnement dans lequel vous pouvez choisir le type d’environnement. Pour tester l' Tic-Tac-Toeexemple d'application, vous pouvez choisir le type d'environnement à **instance unique**, ignorer les étapes suivantes et passer à l'étape suivante.   
Toutefois, le type d’environnement **Équilibrage de charge, Auto Scaling** fournit un environnement hautement disponible et dimensionnable, élément que vous devriez prendre en compte lorsque vous créez et déployez d’autres applications. Si vous choisissez ce type d’environnement, vous devez également générer un UUID et l’ajouter au fichier de configuration, comme illustré ci-après.  

   ```
   [dynamodb]
   region=us-west-2
   endpoint=dynamodb.us-west-2.amazonaws.com
   [flask]
   secret_key= 284e784d-1a25-4a19-92bf-8eeb7a9example
   ```
Dans la communication client-serveur lorsque le serveur envoie une réponse, par souci de sécurité le serveur envoie un cookie signé que le client renvoie au serveur dans la demande suivante. Lorsqu’il y a un seul serveur, le serveur peut générer localement une clé de chiffrement lorsqu’il démarre. Lorsqu’il existe de nombreux serveurs, ils ont tous besoin de connaître la même clé de chiffrement. Dans le cas contraire, ils ne pourront lire les cookies définis par les serveurs pairs. En ajoutant `secret_key` dans le fichier de configuration, vous indiquez à tous les serveurs d’utiliser cette clé de chiffrement.

1. Zippez le contenu du dossier racine de l’application (qui inclut le fichier `beanstalk.config`), par exemple, `TicTacToe.zip`. 

1. Chargez le fichier `.zip` dans un compartiment Amazon Simple Storage Service (Amazon S3). Dans la section suivante, vous allez fournir ce fichier `.zip` à Elastic Beanstalk pour qu’il le charge sur le ou les serveurs.

   Pour des instructions sur la manière de charger un fichier dans un compartiment Amazon S3, consultez [Créer un compartiment](https://docs.aws.amazon.com/AmazonS3/latest/userguide/CreatingABucket.html) et [Ajouter un objet à un compartiment](https://docs.aws.amazon.com/AmazonS3/latest/userguide/PuttingAnObjectInABucket.html) dans le *Guide de l’utilisateur d’Amazon Simple Storage Service*.

## 3.4 : Configuration de l' AWS Elastic Beanstalk environnement
<a name="TicTacToe.DeployInProd.SetUpElasticBeanstalk"></a>

Dans cette étape, vous allez créer une application Elastic Beanstalk, qui est un ensemble de composants incluant des environnements. Dans cet exemple, vous lancez une instance Amazon EC2 pour déployer et exécuter votre Tic-Tac-Toe application.

1. Entrez l’URL personnalisée suivante afin de configurer une console Elastic Beanstalk pour configurer l’environnement.

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

   Pour plus d'informations sur la personnalisation URLs, consultez [la section Création d'une URL Launch Now](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/launch-now-url.html) dans le *manuel du AWS Elastic Beanstalk développeur.* Pour l’URL, notez les points suivants :
   + Vous devez fournir un nom de AWS région (identique à celui que vous avez fourni dans le fichier de configuration), un nom de compartiment Amazon S3 et le nom de l'objet. 
   + Pour les tests, l'URL demande le type d'**SingleInstance**environnement et `t1.micro` le type d'instance.
   + Le nom de l’application doit être unique. Ainsi, dans l’URL précédente, nous vous proposons d’ajouter votre nom au `applicationName`.

   Cela a pour effet d’ouvrir la console Elastic Beanstalk. Dans certains cas, vous devrez peut-être vous connecter.

1. Sur la console Elastic Beanstalk, choisissez **Vérifier et lancer**, puis **Lancer**. 

1. Notez l’URL ultérieurement. Cette URL ouvre la page Tic-Tac-Toe d'accueil de votre application.   
![Capture d’écran de la page d’accueil de l’application, illustrant le message indiquant que l’environnement est en cours de création.](http://docs.aws.amazon.com/fr_fr/amazondynamodb/latest/developerguide/images/tic-tac-toe-beanstalk-setup-50.png)

1. Configurez l' Tic-Tac-Toeapplication afin qu'elle connaisse l'emplacement du fichier de configuration.

   Une fois qu’Elastic Beanstalk a créé l’application, choisissez **Configuration**. 

   1. Choisissez l’icône de roue dentée à côté de **Software Configuration (Configuration logicielle)**, comme illustré dans la capture d’écran suivante.  
![Tic-tac-toe capture d'écran de l'application montrant l'icône représentant une roue dentée à côté de la configuration logicielle.](http://docs.aws.amazon.com/fr_fr/amazondynamodb/latest/developerguide/images/tic-tac-toe-beanstalk-setup-60.png)

   1. À la fin de la section **Propriétés de l’environnement**, entrez **CONFIG\_FILE** et sa valeur **beanstalk.config**, puis choisissez **Enregistrer**.

      Cette mise à jour de l’environnement peut prendre quelques minutes.   
![Capture d’écran de l’application montrant la section des propriétés de l’environnement.](http://docs.aws.amazon.com/fr_fr/amazondynamodb/latest/developerguide/images/tic-tac-toe-beanstalk-setup-70.png)

   Une fois la mise à jour terminée, vous pouvez jouer au jeu.

1. Dans le navigateur, entrez l’URL que vous avez copiée à l’étape précédente, comme illustré dans l’exemple suivant. 

   ```
   http://{{<pen-name>}}.elasticbeanstalk.com
   ```

   Cela ouvre la page d’accueil de l’application.  
![Capture d’écran de la page d’accueil de l’application montrant le bouton Create (Créer), les invitations, les parties en cours et l’historique récent.](http://docs.aws.amazon.com/fr_fr/amazondynamodb/latest/developerguide/images/tic-tac-toe-inprod-playgame-10.png)

1. Connectez-vous en tant que testuser1 et choisissez **CREATE** pour démarrer une nouvelle tic-tac-toe partie. 

1. Entrez **testuser2** dans la zone **Choose an Opponent (Choisir un adversaire)**.  
![Capture d’écran de l’application montrant la zone de choix d’un adversaire.](http://docs.aws.amazon.com/fr_fr/amazondynamodb/latest/developerguide/images/tic-tac-toe-inprod-playgame-20.png)

1. Ouvrez une autre fenêtre de navigateur. 

   Assurez-vous de désactiver tous les cookies dans votre fenêtre de navigateur afin de ne pas être connecté en tant que même utilisateur.

1. Entrez la même URL pour ouvrir la page d’accueil de l’application, comme illustré dans l’exemple suivant.

   ```
   http://{{<env-name>}}.elasticbeanstalk.com
   ```

1. Connectez-vous en tant que testuser2.

1. Pour l’invitation de testuser1 dans la liste des invitations en suspens, choisissez **accept**.  
![Capture d’écran de l’application montrant l’invitation testuser1 dans la liste des invitations.](http://docs.aws.amazon.com/fr_fr/amazondynamodb/latest/developerguide/images/tic-tac-toe-inprod-playgame-30.png)

1. À présent, la page de jeu apparaît.  
![Capture d'écran de l'application montrant une tic-tac-toe grille vide.](http://docs.aws.amazon.com/fr_fr/amazondynamodb/latest/developerguide/images/tic-tac-toe-inprod-playgame-40.png)

   testuser1 et testuser2 peuvent jouer au jeu. Pour chaque déplacement, l’application enregistre le déplacement dans l’élément correspondant de la table `Games`. 