

 AWS Cloud9 n'est plus disponible pour les nouveaux clients. Les clients existants d’ AWS Cloud9 peuvent continuer à l’utiliser normalement. [En savoir plus](https://aws.amazon.com/blogs/devops/how-to-migrate-from-aws-cloud9-to-aws-ide-toolkits-or-aws-cloudshell/)

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.

# Tutoriel Amazon DynamoDB pour AWS Cloud9
<a name="sample-dynamodb"></a>

Ce didacticiel vous permet de configurer un environnement de AWS Cloud9 développement compatible avec Amazon DynamoDB.

DynamoDB est un service de base de données NoSQL entièrement géré. Vous pouvez utiliser DynamoDB pour créer une table de base de données capable de stocker et de récupérer n'importe quelle quantité de données, ainsi que de traiter n'importe quel niveau de trafic des demandes. DynamoDB répartit automatiquement les données et le trafic de la table sur un nombre suffisant de serveurs afin de gérer la capacité de requêtes spécifiée et le volume de données stockées, tout en assurant la cohérence et la rapidité des performances. Pour plus d'informations, consultez [Amazon DynamoDB sur](https://aws.amazon.com/dynamodb/) le site Web. AWS 

La création de cet échantillon peut entraîner des frais sur votre AWS compte. Il peut s'agir de frais pour des services tels qu'Amazon EC2 et DynamoDB. Pour en savoir plus, consultez les sections [Tarification Amazon EC2](https://aws.amazon.com/ec2/pricing/) et [Tarification Amazon DynamoDB](https://aws.amazon.com/dynamodb/pricing/).

Pour plus d'informations sur les offres AWS de base de données supplémentaires, consultez [Amazon Relational Database Service (RDS](https://aws.amazon.com/rds/)) [ ElastiCache,](https://aws.amazon.com/elasticache/) [Amazon et Amazon Redshift](https://aws.amazon.com/redshift/) sur le site Web. AWS Voir aussi [AWS Database Migration Service](https://aws.amazon.com/dms/) sur le site web AWS .
+  [Conditions préalables](#sample-dynamodb-prereqs) 
+  [Étape 1 : Installer et configurer la AWS CLI, le AWS CloudShell ou les deux dans votre environnement](#sample-dynamodb-cli-setup) 
+  [Étape 2 : créer une table](#sample-dynamodb-create-table) 
+  [Étape 3 : ajouter un élément à la table](#sample-dynamodb-add-item) 
+  [Étape 4 : ajouter plusieurs éléments à la table](#sample-dynamodb-add-items) 
+  [Étape 5 : créer un index secondaire global](#sample-dynamodb-create-index) 
+  [Étape 6 : obtenir des éléments dans la table](#sample-dynamodb-get-items) 
+  [Étape 7 : nettoyer](#sample-dynamodb-clean-up) 

## Conditions préalables
<a name="sample-dynamodb-prereqs"></a>

Avant d'utiliser cet exemple, vérifiez que votre configuration respecte les conditions requises suivantes :
+ **Vous devez disposer d'un environnement de développement AWS Cloud9 EC2 existant.** Cet exemple suppose que vous disposez déjà d'un environnement EC2 connecté à une instance Amazon EC2 s'exécutant sur Amazon Linux ou Ubuntu Server. Si vous utilisez un autre type d'environnement ou de système d'exploitation, vous devrez peut-être adapter les instructions de cet exemple pour configurer les outils associés. Pour de plus amples informations, veuillez consulter [Création d'un environnement dans AWS Cloud9](create-environment.md).
+ **L' AWS Cloud9 IDE correspondant à l'environnement existant est déjà ouvert.** Lorsque vous ouvrez un environnement, AWS Cloud9 ouvre l'IDE correspondant dans votre navigateur Web. Pour de plus amples informations, veuillez consulter [Ouvrir un environnement dans AWS Cloud9](open-environment.md).

## Étape 1 : installer et configurer le AWS CLI AWS CloudShell, ou les deux dans votre environnement
<a name="sample-dynamodb-cli-setup"></a>

Au cours de cette étape, vous utilisez l' AWS Cloud9 IDE pour installer et configurer le AWS CLI AWS CloudShell, ou les deux dans votre environnement afin de pouvoir exécuter des commandes pour interagir avec DynamoDB. Ensuite, vous utilisez la AWS CLI pour exécuter une commande DynamoDB basique pour tester votre installation et votre configuration.

1. Pour configurer la gestion des informations d'identification pour le AWS CLI AWS CloudShell ou pour installer le AWS CLI AWS CloudShell ou les deux dans votre environnement, suivez les étapes 1 et 2 de l'[AWS CLIAWS CloudShell exemple](sample-aws-cli.md) et revenez à cette rubrique. Si vous avez déjà installé et configuré le AWS CLI AWS CloudShell, ou les deux dans votre environnement, vous n'avez pas besoin de le refaire.

1. Testez l'installation et la configuration de l'aws-shell AWS CLI, ou des deux, en exécutant la **`list-tables`**commande DynamoDB depuis une session de terminal de votre environnement pour répertorier vos tables DynamoDB existantes, le cas échéant. (Pour démarrer une nouvelle session de terminal, dans la barre de menus, choisissez **Windows (Fenêtre)**, **New Terminal (Nouveau terminal)**.

   ```
   aws dynamodb list-tables # For the AWS CLI.
   dynamodb list-tables     # For the aws-shell.
   ```
**Note**  
Dans cet exemple, si vous utilisez aws-shell, omettez `aws` dans chaque commande commençant par `aws`. Pour démarrer aws-shell, exécutez la commande ** `aws-shell` **. Pour arrêter aws-shell, exécutez la commande ** `.exit` ** ou ** `.quit` **.

   Si cette commande réussit, elle génère un tableau `TableNames` contenant une liste de tables DynamoDB existantes que vous possédez déjà. Si vous n'avez pas encore de tables DynamoDB, le tableau `TableNames` sera vide.

   ```
   {
     "TableNames": []
   }
   ```

   Si vous avez des tables DynamoDB, le tableau `TableNames` contient une liste des noms de table.

## Étape 2 : Création d'une table
<a name="sample-dynamodb-create-table"></a>

Au cours de cette étape, vous créez une table dans DynamoDB et spécifiez le nom, la disposition, la clé primaire simple et les paramètres de débit de données de la table.

Cet exemple de table, nommé `Weather`, contient des informations sur les prévisions météorologiques pour quelques villes aux États-Unis. La table contient les types d'informations suivants (dans DynamoDB, chaque information est nommée *attribut*) :
+ ID de ville unique obligatoire (`CityID`)
+ Date de prévision obligatoire (`Date`)
+ Nom de la ville (`City`)
+ Nom de l'état (`State`)
+ Prévisions météorologiques (`Conditions`)
+ Prévisions de températures (`Temperatures`)
  + Prévisions des maximales en degrés Fahrenheit (`HighF`)
  + Prévisions des minimales en degrés Fahrenheit (`LowF`)

Pour créer la table, dans une session de terminal dans l' AWS Cloud9 IDE, exécutez la commande **`create-table`**DynamoDB.

```
aws dynamodb create-table \
--table-name Weather \
--attribute-definitions \
  AttributeName=CityID,AttributeType=N AttributeName=Date,AttributeType=S \
--key-schema \
  AttributeName=CityID,KeyType=HASH AttributeName=Date,KeyType=RANGE \
--provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5
```

Dans cette commande :
+  `--table-name` représente le nom de table (`Weather` dans cet exemple). Les noms des tables doivent être uniques dans chaque AWS région de votre AWS compte.
+  `--attribute-definitions` représente les attributs qui sont utilisés pour identifier de manière unique les éléments de la table. Chacun des éléments de cette table sont identifiés de manière unique par une combinaison d'`ID` attribut numérique et d'un attribut `Date` représenté sous la forme d'une chaîne au format ISO-8601.
+  `--key-schema` représente le schéma de clé de la table. Cette table dispose d'une clé primaire composite de `CityID` et `Date`. Cela signifie que chaque élément de la table doit posséder une valeur d'attribut `CityID` et une valeur d'attribut `Date`, mais deux éléments de la table ne peuvent pas avoir la même valeur d'attribut `CityID` et de valeur d'attribut `Date`.
+  `--provisioned-throughput` représente la capacité de lecture/écriture de la table. DynamoDB autorise jusqu'à 5 lectures fortement cohérentes par seconde pour les éléments d'une taille allant jusqu'à 4 Ko, ou jusqu'à 5 lectures cohérentes à terme (eventually consistent) par seconde pour les éléments d'une taille allant jusqu'à 4 Ko. DynamoDB permet également jusqu'à 5 écritures par seconde pour les éléments d'une taille allant jusqu'à 1 Ko.
**Note**  
La définition d'un débit provisionné plus élevé peut entraîner des frais supplémentaires pour votre AWS compte.  
Pour plus d'informations sur cette commande DynamoDB et sur d'autres, consultez [dynamodb](https://docs.aws.amazon.com/cli/latest/reference/dynamodb/index.html) dans la *Référence des commandes AWS CLI *.

Si cette commande réussit, elle affiche des informations récapitulatives sur la nouvelle table qui est en cours de création. Pour confirmer que la table est créée avec succès, exécutez la commande DynamoDB** `describe-table` ** en spécifiant le nom de la table (`--table-name`).

```
aws dynamodb describe-table --table-name Weather
```

Une fois la table créée avec succès, la valeur `TableStatus` `CREATING` devient `ACTIVE`. Ne passez pas à l'étape suivante avant que la table n'ait été créée avec succès.

## Étape 3 : Ajouter un élément à la table
<a name="sample-dynamodb-add-item"></a>

Dans cette étape, vous ajoutez un élément à la table que vous venez de créer.

1. Créez un fichier nommé `weather-item.json` avec le contenu suivant. Pour créer un nouveau fichier, dans la barre de menus, choisissez **File (Fichier)**, **New File (Nouveau fichier)**. Pour l'enregistrer, choisissez **File**, **Save**.

   ```
   {
     "CityID": { "N": "1" },
     "Date": { "S": "2017-04-12" },
     "City": { "S": "Seattle" },
     "State": { "S": "WA" },
     "Conditions": { "S": "Rain" },
     "Temperatures": { "M": {
         "HighF": { "N": "59" },
         "LowF": { "N": "46" }
       }
     }
   }
   ```

   Dans ce code, `N` représente une valeur d'attribut qui est un nombre. `S` est une valeur d'attribut de chaîne. `M` est un attribut de carte qui est un ensemble de paires attribut/valeur. Vous devez spécifier un type de données d'attribut chaque fois que vous utilisez des éléments. Pour connaître les types de données d'attribut disponibles supplémentaires, consultez [Type de données](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.NamingRulesDataTypes.html#HowItWorks.DataTypes) dans le *Guide du développeur Amazon DynamoDB*.

1. Exécutez la commande DynamoDB** `put-item` **, en spécifiant le nom de la table (`--table-name`) et le chemin de l'élément au format JSON (`--item`).

   ```
   aws dynamodb put-item \
   --table-name Weather \
   --item file://weather-item.json
   ```

   Si la commande réussit, elle s'exécute sans erreur, et aucun message de confirmation ne s'affiche.

1. Pour confirmer le contenu actuel de la table, exécutez la commande DynamoDB** `scan` **, en spécifiant le nom de la table (`--table-name`).

   ```
   aws dynamodb scan --table-name Weather
   ```

   Si la commande réussit, les informations récapitulatives sur la table et l'élément que vous venez d'ajouter s'affiche.

## Étape 4 : Ajouter plusieurs éléments à la table
<a name="sample-dynamodb-add-items"></a>

Dans cette étape, vous ajoutez plusieurs éléments supplémentaires à la table `Weather`.

1. Créez un fichier nommé `more-weather-items.json` avec le contenu suivant.

   ```
   {
     "Weather": [
       {
         "PutRequest": {
           "Item": {
             "CityID": { "N": "1" },
             "Date": { "S": "2017-04-13" },
             "City": { "S": "Seattle" },
             "State": { "S": "WA" },
             "Conditions": { "S": "Rain" },
             "Temperatures": { "M": {
                 "HighF": { "N": "52" },
                 "LowF": { "N": "43" }
               }
             }
           }
         }
       },
       {
         "PutRequest": {
           "Item": {
             "CityID": { "N": "1" },
             "Date": { "S": "2017-04-14" },
             "City": { "S": "Seattle" },
             "State": { "S": "WA" },
             "Conditions": { "S": "Rain" },
             "Temperatures": { "M": {
                 "HighF": { "N": "49" },
                 "LowF": { "N": "43" }
               }
             }
           }
         }
       },
       {
         "PutRequest": {
           "Item": {
             "CityID": { "N": "2" },
             "Date": { "S": "2017-04-12" },
             "City": { "S": "Portland" },
             "State": { "S": "OR" },
             "Conditions": { "S": "Thunderstorms" },
             "Temperatures": { "M": {
                 "HighF": { "N": "59" },
                 "LowF": { "N": "43" }
               }
             }
           }
         }
       },
       {
         "PutRequest": {
           "Item": {
             "CityID": { "N": "2" },
             "Date": { "S": "2017-04-13" },
             "City": { "S": "Portland" },
             "State": { "S": "OR" },
             "Conditions": { "S": "Rain" },
             "Temperatures": { "M": {
                 "HighF": { "N": "51" },
                 "LowF": { "N": "41" }
               }
             }
           }
         }
       },
       {
         "PutRequest": {
           "Item": {
             "CityID": { "N": "2" },
             "Date": { "S": "2017-04-14" },
             "City": { "S": "Portland" },
             "State": { "S": "OR" },
             "Conditions": { "S": "Rain Showers" },
             "Temperatures": { "M": {
                 "HighF": { "N": "49" },
                 "LowF": { "N": "39" }
               }
             }
           }
         }
       },
       {
         "PutRequest": {
           "Item": {
             "CityID": { "N": "3" },
             "Date": { "S": "2017-04-12" },
             "City": { "S": "Portland" },
             "State": { "S": "ME" },
             "Conditions": { "S": "Rain" },
             "Temperatures": { "M": {
                 "HighF": { "N": "59" },
                 "LowF": { "N": "40" }
               }
             }
           }
         }
       },
       {
         "PutRequest": {
           "Item": {
             "CityID": { "N": "3" },
             "Date": { "S": "2017-04-13" },
             "City": { "S": "Portland" },
             "State": { "S": "ME" },
             "Conditions": { "S": "Partly Sunny" },
             "Temperatures": { "M": {
                 "HighF": { "N": "54" },
                 "LowF": { "N": "37" }
               }
             }
           }
         }
       },
       {
         "PutRequest": {
           "Item": {
             "CityID": { "N": "3" },
             "Date": { "S": "2017-04-14" },
             "City": { "S": "Portland" },
             "State": { "S": "ME" },
             "Conditions": { "S": "Mostly Sunny" },
             "Temperatures": { "M": {
                 "HighF": { "N": "53" },
                 "LowF": { "N": "37" }
               }
             }
           }
         }
       }
     ]
   }
   ```

   Dans ce code, 8 objets `Item` définissent les 8 articles à ajouter à la table, similaire à l'élément unique défini dans l'étape précédente. Toutefois, lorsque vous exécutez la commande DynamoDB** `batch-write-item` ** à l'étape suivante, vous devez fournir un objet au format JSON qui inclut chaque objet `Item` dans un objet `PutRequest` contenant. Vous devez ensuite inclure ces objets `PutRequest` dans une baie parent qui possède le même nom que la table.

1. Exécutez la commande DynamoDB** `batch-write-item` **, en spécifiant le chemin des éléments au format JSON à ajouter (`--request-items`).

   ```
   aws dynamodb batch-write-item \
   --request-items file://more-weather-items.json
   ```

   Si la commande réussit, elle affiche le message suivant, confirmant que les éléments ont été ajoutés avec succès.

   ```
   {
     "UnprocessedItems": {}
   }
   ```

1. Pour confirmer le contenu actuel de la table, réexécutez la commande DynamoDB** `scan` **.

   ```
   aws dynamodb scan --table-name Weather
   ```

   Si la commande réussit, 9 articles sont désormais affichés.

## Étape 5 ; Créer un index secondaire global
<a name="sample-dynamodb-create-index"></a>

L'exécution de la commande DynamoDB** `scan` ** pour obtenir des informations sur les éléments peut être lente, en particulier lorsque la taille d'une table s'accroît ou si le type d'informations que vous souhaitez obtenir est complexe. Vous pouvez créer un ou plusieurs index secondaires pour accélérer les choses et faciliter l'obtention d'informations. Au cours de cette étape, vous découvrez deux types d'index secondaires que DynamoDB prend en charge pour cela. Ils sont nommés *index secondaire local* et *index secondaire global*. Puis, vous créez un index secondaire global.

Pour comprendre ces types d'index secondaire, vous devez d'abord connaître les clés primaires, qui identifient de manière unique les éléments d'une table. DynamoDB prend en charge une *clé primaire simple* ou une *clé primaire composite*. Une clé primaire simple possède un attribut unique, et cette valeur d'attribut doit être unique pour chaque élément de la table. Cet attribut est également connu en tant que *clé de partition* (ou *attribut de hachage*), que DynamoDB peut utiliser pour partitionner des éléments pour un accès plus rapide. Une table peut également avoir une clé primaire composite, qui contient deux attributs. Le premier attribut est la clé de partition, et le deuxième est une *clé de tri* (également nommée *attribut de plage*). Dans une table possédant une clé primaire composite, deux éléments peuvent avoir la même valeur de clé de partition, mais ils ne peuvent pas avoir aussi la même valeur de clé de tri. La table `Weather` a une clé primaire composite.

Un index secondaire local possède la même clé de partition que la table elle-même, mais ce type d'index peut avoir une clé de tri différente. Un index secondaire global peut avoir une clé de partition et une clé de tri qui sont tous deux différents de la table elle-même.

Par exemple, vous pouvez déjà utiliser la clé primaire pour accéder à des éléments `Weather` par `CityID`. Pour accéder à des éléments `Weather` par `State`, vous pouvez créer un index secondaire local qui dispose d'une clé de partition de `CityID` (elle doit être identique à la table elle-même) et une clé de tri de `State`. Pour accéder à des éléments `Weather` par `City`, vous pouvez créer un index secondaire global qui possède une clé de partition de `City` et une clé de tri de `Date`.

Vous pouvez créer des index secondaires locaux uniquement pendant que vous créez une table. La table `Weather` existant déjà, vous ne pouvez pas y ajouter des index secondaires locaux. Toutefois, vous pouvez ajouter des index secondaires globaux. Essayez d'en ajouter un à présent.

**Note**  
La création d'index secondaires peut entraîner des frais supplémentaires sur votre compte AWS .

1. Créez un fichier nommé `weather-global-index.json` avec le contenu suivant.

   ```
   [
     {
       "Create": {
         "IndexName": "weather-global-index",
         "KeySchema": [
           {
             "AttributeName": "City",
             "KeyType": "HASH"
           },
           {
             "AttributeName": "Date",
             "KeyType": "RANGE"
           }
         ],
         "Projection": {
           "ProjectionType": "INCLUDE",
           "NonKeyAttributes": [
             "State",
             "Conditions",
             "Temperatures"
           ]
         },
         "ProvisionedThroughput": {
           "ReadCapacityUnits": 5,
           "WriteCapacityUnits": 5
         }
       }
     }
   ]
   ```

   Dans ce code :
   + Le nom de l'index secondaire global est `weather-global-index`.
   + L'attribut `City` est la clé de partition (attribut de hachage), et l'attribut `Date` est la clé de tri (attribut d'intervalle).
   +  `Projection` définit les attributs à récupérer par défaut (en plus de l'attribut de hachage et de n'importe quel attribut de plage) pour chaque élément correspondant à une recherche de table qui utilise cet index. Dans cet exemple, les attributs `State`, `Conditions`, `HighF` (une partie de `Temperatures`) et `LowF` (également une partie de `Temperatures`) (ainsi que les attributs `City` et `Date`) sont récupérées pour chaque élément correspondant.
   + De même que les tables, un index secondaire global doit définir ses paramètres de débit provisionné.
   + Les paramètres `IndexName`, `KeySchema`, `Projection` et `ProvisionedThroughput` doivent être contenus dans un objet `Create`, qui définit l'index secondaire global à créer lorsque vous exécutez la commande DynamoDB** `update-table` ** à l'étape suivante.

1. Exécutez la commande DynamoDB** `update-table` **.

   ```
   aws dynamodb update-table \
   --table-name Weather \
   --attribute-definitions \
     AttributeName=City,AttributeType=S AttributeName=Date,AttributeType=S \
   --global-secondary-index-updates file://weather-global-index.json
   ```

   Dans cette commande :
   +  `--table-name` est le nom de la table à mettre à jour.
   +  `--attribute-definitions` sont les attributs à inclure dans l'index. La clé de partition est toujours répertoriée en premier, et une clé de tri est toujours répertoriée en deuxième.
   +  `--global-secondary-index-updates` est le chemin d'accès au fichier qui définit l'index secondaire global.

   Si cette commande réussit, elle affiche des informations récapitulatives sur le nouvel index secondaire global qui est en cours de création. Pour confirmer que l'index secondaire global est créé avec succès, exécutez la commande DynamoDB** `describe-table` ** en spécifiant le nom de la table (`--table-name`).

   ```
   aws dynamodb describe-table --table-name Weather
   ```

   Lorsque l'index secondaire global est créé avec succès, la valeur `TableStatus` `UPDATING` devient `ACTIVE`, et la valeur `IndexStatus` `CREATING` devient `ACTIVE`. Ne passez pas à l'étape suivante avant que l'index secondaire global n'ait été créé avec succès. Cela peut prendre plusieurs minutes.

## Étape 6 : Obtenir des éléments dans la table
<a name="sample-dynamodb-get-items"></a>

Il existe plusieurs moyens d'obtenir des éléments depuis des tables. Au cours de cette étape, vous obtenez des éléments à l'aide de la clé primaire de la table, à l'aide d'autres attributs de la table, et à l'aide de l'index secondaire global.

### Pour obtenir un seul élément à partir d'une table en fonction de la valeur de clé primaire d'un élément
<a name="w2aac31c21c25b5"></a>

Si vous connaissez la valeur clé primaire d'un élément, vous pouvez obtenir l'élément correspondant en exécutant la commande DynamoDB ** `get-item` **, ** `scan` **, ou ** `query` **. Voici les principales différences dans ces commandes :
+  ** `get-item` ** renvoie un ensemble d'attributs pour l'élément possédant la clé primaire donnée.
+  ** `scan` ** renvoie un ou plusieurs éléments et attributs d'élément en accédant à chaque élément dans une table ou un index secondaire.
+  ** `query` ** trouve les éléments d'après les valeurs de clé primaire. Vous pouvez interroger n'importe quel table ou index secondaire comportant une clé primaire composite (clé de partition et clé de tri).

Dans cet exemple, voici comment utiliser chacune de ces commandes pour obtenir l'élément qui contient la valeur d'attribut `CityID` de `1` et la valeur d'attribut `Date` de `2017-04-12`.

1. Pour exécuter la commande DynamoDB** `get-item` **, spécifiez le nom de la table (`--table-name`), la valeur clé primaire (`--key`) et les valeurs d'attribut de l'élément à afficher (`--projection-expression`). `Date` étant un mot-clé réservé dans DynamoDB, vous devez également fournir un alias pour la valeur d'attribut `Date` (`--expression-attribute-names`). (`State` est également un mot-clé réservé ; un alias lui sera attribué dans les étapes ultérieures.)

   ```
   aws dynamodb get-item \
   --table-name Weather \
   --key '{ "CityID": { "N": "1" }, "Date": { "S": "2017-04-12" } }' \
   --projection-expression \
     "City, #D, Conditions, Temperatures.HighF, Temperatures.LowF" \
   --expression-attribute-names '{ "#D": "Date" }'
   ```

   Dans cette commande et les autres, pour afficher tous les attributs de l'élément, n'incluez pas `--projection-expression`. Dans cet exemple, étant donné que vous n'incluez pas `--projection-expression`, vous n'avez pas non plus besoin d'inclure `--expression-attribute-names`.

   ```
   aws dynamodb get-item \
   --table-name Weather \
   --key '{ "CityID": { "N": "1" }, "Date": { "S": "2017-04-12" } }'
   ```

1. Pour exécuter la commande DynamoDB** `scan` **, spécifiez :
   + Nom de la table (`--table-name`).
   + La recherche à exécuter (`--filter-expression`).
   + Les critères de recherche à utiliser (`--expression-attribute-values`).
   + Les types d'attributs à afficher pour l'élément correspondant (`--select`).
   + Les valeurs d'attribut pour l'élément à afficher (`--projection-expression`).
   + Si l'un de vos attributs utilise les mots-clés réservés dans DynamoDB, les alias de ces attributs (`--expression-attribute-names`).

   ```
   aws dynamodb scan \
   --table-name Weather \
   --filter-expression "(CityID = :cityID) and (#D = :date)" \
   --expression-attribute-values \
     '{ ":cityID": { "N": "1" }, ":date": { "S": "2017-04-12" } }' \
   --select SPECIFIC_ATTRIBUTES \
   --projection-expression \
     "City, #D, Conditions, Temperatures.HighF, Temperatures.LowF" \
   --expression-attribute-names '{ "#D": "Date" }'
   ```

1. Pour exécuter la commande DynamoDB** `query` **, spécifiez :
   + Nom de la table (`--table-name`).
   + La recherche à exécuter (`--key-condition-expression`).
   + Les valeurs d'attribut à utiliser dans la recherche (`--expression-attribute-values`).
   + Les types d'attributs à afficher pour l'élément correspondant (`--select`).
   + Les valeurs d'attribut pour l'élément à afficher (`--projection-expression`).
   + Si l'un de vos attributs utilise les mots-clés réservés dans DynamoDB, les alias de ces attributs (`--expression-attribute-names`).

   ```
   aws dynamodb query \
   --table-name Weather \
   --key-condition-expression "(CityID = :cityID) and (#D = :date)" \
   --expression-attribute-values \
     '{ ":cityID": { "N": "1" }, ":date": { "S": "2017-04-12" } }' \
   --select SPECIFIC_ATTRIBUTES \
   --projection-expression \
     "City, #D, Conditions, Temperatures.HighF, Temperatures.LowF" \
   --expression-attribute-names '{ "#D": "Date" }'
   ```

   Notez que la commande ** `scan` ** a eu besoin d'analyser les 9 éléments pour obtenir le résultat, tandis que la commande ** `query` ** n'a eu besoin d'analyser qu'1 élément.

### Pour obtenir plusieurs éléments à partir d'une table en fonction des valeurs de clé primaire des éléments
<a name="w2aac31c21c25b7"></a>

Si vous connaissez les valeurs de clé primaire des éléments, vous pouvez obtenir les éléments correspondants en exécutant la commande DynamoDB** `batch-get-item` **. Dans cet exemple, voici comment utiliser les éléments qui contiennent la valeur d'attribut `CityID` de `3` et les valeurs d'attribut `Date` de `2017-04-13` ou `2017-04-14`.

Exécutez la commande DynamoDB** `batch-get-item` **, en spécifiant le chemin d'accès à un fichier qui décrit les éléments à obtenir (`--request-items`).

```
aws dynamodb batch-get-item --request-items file://batch-get-item.json
```

Dans cet exemple, le code dans le fichier `batch-get-item.json` spécifie la recherche dans la table `Weather` d'éléments possédant un `CityID` de `3` et un `Date` de `2017-04-13` ou `2017-04-14`. Pour chaque élément trouvé, les valeurs d'attribut pour `City`, `State`, `Date` et `HighF` (partie de `Temperatures`) s'affichent, si elles existent.

```
{
  "Weather" : {
    "Keys": [
      {
        "CityID": { "N": "3" },
        "Date": { "S": "2017-04-13" }
      },
      {
        "CityID": { "N": "3" },
        "Date": { "S": "2017-04-14" }
      }
    ],
    "ProjectionExpression": "City, #S, #D, Temperatures.HighF",
    "ExpressionAttributeNames": { "#S": "State", "#D": "Date" }
  }
}
```

### Pour obtenir tous les éléments correspondants à partir d'une table
<a name="w2aac31c21c25b9"></a>

Si vous connaissez des informations sur les valeurs des attributs de la table, vous pouvez obtenir les éléments correspondants en exécutant la commande DynamoDB** `scan` **. Dans cet exemple, voici comment utiliser les dates lorsque la valeur d'attribut `Conditions` contient `Sunny` et que la valeur d'attribut `HighF` (une partie de `Temperatures`) est supérieure à `53`.

Exécutez la commande DynamoDB** `scan` **, en spécifiant :
+ Nom de la table (`--table-name`).
+ La recherche à exécuter (`--filter-expression`).
+ Les critères de recherche à utiliser (`--expression-attribute-values`).
+ Les types d'attributs à afficher pour l'élément correspondant (`--select`).
+ Les valeurs d'attribut pour l'élément à afficher (`--projection-expression`).
+ Si l'un de vos attributs utilise les mots-clés réservés dans DynamoDB, les alias de ces attributs (`--expression-attribute-names`).

```
aws dynamodb scan \
--table-name Weather \
--filter-expression \
  "(contains (Conditions, :sun)) and (Temperatures.HighF > :h)" \
--expression-attribute-values \
  '{ ":sun": { "S" : "Sunny" }, ":h": { "N" : "53" } }' \
--select SPECIFIC_ATTRIBUTES \
--projection-expression "City, #S, #D, Conditions, Temperatures.HighF" \
--expression-attribute-names '{ "#S": "State", "#D": "Date" }'
```

### Pour obtenir tous les éléments correspondants à partir d'un index secondaire global
<a name="w2aac31c21c25c11"></a>

Pour effectuer une recherche à l'aide d'un index secondaire global, utilisez la commande DynamoDB** `query` **. Dans cet exemple, voici comment utiliser l'index secondaire `weather-global-index` pour obtenir les prévisions météorologiques pour les villes nommées `Portland` pour les dates du `2017-04-13` et du `2017-04-14`.

Exécutez la commande DynamoDB** `query` **, en spécifiant :
+ Nom de la table (`--table-name`).
+ Nom de l'index secondaire global (`--index-name`).
+ La recherche à exécuter (`--key-condition-expression`).
+ Les valeurs d'attribut à utiliser dans la recherche (`--expression-attribute-values`).
+ Les types d'attributs à afficher pour l'élément correspondant (`--select`).
+ Si l'un de vos attributs utilise les mots-clés réservés dans DynamoDB, les alias de ces attributs (`--expression-attribute-names`).

```
aws dynamodb query \
--table-name Weather \
--index-name weather-global-index \
--key-condition-expression "(City = :city) and (#D between :date1 and :date2)" \
--expression-attribute-values \
  '{ ":city": { "S" : "Portland" }, ":date1": { "S": "2017-04-13" }, ":date2": { "S": "2017-04-14" } }' \
--select SPECIFIC_ATTRIBUTES \
--projection-expression "City, #S, #D, Conditions, Temperatures.HighF" \
--expression-attribute-names '{ "#S": "State", "#D": "Date" }'
```

## Étape 7 : nettoyer
<a name="sample-dynamodb-clean-up"></a>

Pour éviter que votre AWS compte ne soit débité une fois que vous aurez terminé d'utiliser cet exemple, vous devez supprimer le tableau. La suppression de la table supprime l'index secondaire global également. Vous devez également supprimer votre environnement.

Pour supprimer la table, exécutez la commande DynamoDB** `delete-table` ** en spécifiant le nom de la table (`--table-name`).

```
aws dynamodb delete-table --table-name Weather
```

Si la commande réussit, des informations sur la table s'affichent, y compris la valeur `TableStatus` de `DELETING`.

Pour confirmer que la table est supprimée avec succès, exécutez la commande DynamoDB** `describe-table` ** en spécifiant le nom de la table (`--table-name`).

```
aws dynamodb describe-table --table-name Weather
```

Si la table est supprimée avec succès, un message contenant la phrase `Requested resource not found` s'affiche.

Pour supprimer votre environnement, consultez [Suppression d'un environnement](delete-environment.md).