

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.

# Opérations de base sur les tables DynamoDB
<a name="WorkingWithTables.Basics"></a>

Comme d’autres systèmes de base de données, Amazon DynamoDB stocke les données dans des tables. Vous pouvez gérer vos tables à l’aide de quelques opérations de base.

**Topics**
+ [Création d’une table](#WorkingWithTables.Basics.CreateTable)
+ [Description d’une table](#WorkingWithTables.Basics.DescribeTable)
+ [Mise à jour d’une table](#WorkingWithTables.Basics.UpdateTable)
+ [Suppression d’une table](#WorkingWithTables.Basics.DeleteTable)
+ [Utilisation de la protection contre la suppression](#WorkingWithTables.Basics.DeletionProtection)
+ [Liste des noms de table](#WorkingWithTables.Basics.ListTables)
+ [Description des quotas de débit alloué](#WorkingWithTables.Basics.DescribeLimits)

## Création d’une table
<a name="WorkingWithTables.Basics.CreateTable"></a>

L’opération `CreateTable` vous permet de créer une table dans Amazon DynamoDB. Pour créer la table, vous devez fournir les informations suivantes :
+ **Nom de la table.** Le nom doit être conforme aux règles de dénomination DynamoDB et doit être unique pour le compte AWS actuel et la région. Par exemple, vous pouvez créer une table `People` dans la région USA Est (Virginie du Nord), et une autre table `People` en Europe (Irlande). Ces deux tables seraient toutefois entièrement différentes l’une de l’autre. Pour de plus amples informations, veuillez consulter [Types de données et règles de dénomination pris en charge dans Amazon DynamoDB](HowItWorks.NamingRulesDataTypes.md).
+ **Clé primaire.** La clé primaire peut se composer d’un attribut (clé de partition) ou de deux attributs (clé de partition et clé de tri). Vous devez indiquer les noms d’attribut, les types de données et le rôle de chaque attribut : `HASH` (pour une clé de partition) et `RANGE` (pour une clé de tri). Pour de plus amples informations, veuillez consulter [Clé primaire](HowItWorks.CoreComponents.md#HowItWorks.CoreComponents.PrimaryKey).
+ **Paramètres de débit (pour les tables allouées)** Si vous utilisez le mode alloué, vous devez spécifier les paramètres de débit initial de lecture et d’écriture pour la table. Vous pouvez modifier ces paramètres ultérieurement ou activer l’autoscaling de DynamoDB afin que les paramètres soient gérés pour vous. Pour en savoir plus, consultez [Mode de capacité provisionnée DynamoDB](provisioned-capacity-mode.md) et [Gestion automatique de la capacité de débit avec la scalabilité automatique de DynamoDB](AutoScaling.md).

### Exemple 1 : créer une table à la demande
<a name="create-payperrequest-example"></a>

Pour créer la même table `Music` en mode à la demande.

```
aws dynamodb create-table \
    --table-name Music \
    --attribute-definitions \
        AttributeName=Artist,AttributeType=S \
        AttributeName=SongTitle,AttributeType=S \
    --key-schema \
        AttributeName=Artist,KeyType=HASH \
        AttributeName=SongTitle,KeyType=RANGE \
    --billing-mode=PAY_PER_REQUEST
```

L’opération `CreateTable` renvoie des métadonnées pour la table, comme illustré ci-dessous.

```
{
    "TableDescription": {
        "TableArn": "arn:aws:dynamodb:us-east-1:123456789012:table/Music",
        "AttributeDefinitions": [
            {
                "AttributeName": "Artist",
                "AttributeType": "S"
            },
            {
                "AttributeName": "SongTitle",
                "AttributeType": "S"
            }
        ],
        "ProvisionedThroughput": {
            "NumberOfDecreasesToday": 0,
            "WriteCapacityUnits": 0,
            "ReadCapacityUnits": 0
        },
        "TableSizeBytes": 0,
        "TableName": "Music",
        "BillingModeSummary": {
            "BillingMode": "PAY_PER_REQUEST"
        },
        "TableStatus": "CREATING",
        "TableId": "12345678-0123-4567-a123-abcdefghijkl",
        "KeySchema": [
            {
                "KeyType": "HASH",
                "AttributeName": "Artist"
            },
            {
                "KeyType": "RANGE",
                "AttributeName": "SongTitle"
            }
        ],
        "ItemCount": 0,
        "CreationDateTime": 1542397468.348
    }
}
```

**Important**  
 Lorsque vous appelez `DescribeTable` sur une table à la demande, les unités de capacité de lecture et d'écriture sont remises à 0. 

### Exemple 2 : créer une table allouée
<a name="create-provisioned-example"></a>

L' AWS CLI exemple suivant montre comment créer une table (`Music`). La clé primaire se compose de `Artist` (clé de partition) et de `SongTitle` (clé de tri), chacune d’elles ayant le type de données `String`. Le débit maximum pour cette table est de 10 unités de capacité de lecture et 5 unités de capacité d’écriture.

```
aws dynamodb create-table \
    --table-name Music \
    --attribute-definitions \
        AttributeName=Artist,AttributeType=S \
        AttributeName=SongTitle,AttributeType=S \
    --key-schema \
        AttributeName=Artist,KeyType=HASH \
        AttributeName=SongTitle,KeyType=RANGE \
    --provisioned-throughput \
        ReadCapacityUnits=10,WriteCapacityUnits=5
```

L’opération `CreateTable` renvoie des métadonnées pour la table, comme illustré ci-dessous.

```
{
    "TableDescription": {
        "TableArn": "arn:aws:dynamodb:us-east-1:123456789012:table/Music",
        "AttributeDefinitions": [
            {
                "AttributeName": "Artist",
                "AttributeType": "S"
            },
            {
                "AttributeName": "SongTitle",
                "AttributeType": "S"
            }
        ],
        "ProvisionedThroughput": {
            "NumberOfDecreasesToday": 0,
            "WriteCapacityUnits": 5,
            "ReadCapacityUnits": 10
        },
        "TableSizeBytes": 0,
        "TableName": "Music",
        "TableStatus": "CREATING",
        "TableId": "12345678-0123-4567-a123-abcdefghijkl",
        "KeySchema": [
            {
                "KeyType": "HASH",
                "AttributeName": "Artist"
            },
            {
                "KeyType": "RANGE",
                "AttributeName": "SongTitle"
            }
        ],
        "ItemCount": 0,
        "CreationDateTime": 1542397215.37
    }
}
```

L’élément `TableStatus` indique l’état réel de la table (`CREATING`). La création de la table peut prendre un certain temps, selon les valeurs que vous spécifiez pour `ReadCapacityUnits` et `WriteCapacityUnits`. Plus ces valeurs sont élevées, plus DynamoDB doit allouer des ressources à la table.

### Exemple 3 : créer une table à l’aide de la classe de tables DynamoDB Standard-Infrequent Access
<a name="create-infrequent-access-example"></a>

Pour créer la même table `Music` à l’aide de la classe de tables DynamoDB Standard-Infrequent Access.

```
aws dynamodb create-table \
    --table-name Music \
    --attribute-definitions \
        AttributeName=Artist,AttributeType=S \
        AttributeName=SongTitle,AttributeType=S \
    --key-schema \
        AttributeName=Artist,KeyType=HASH \
        AttributeName=SongTitle,KeyType=RANGE \
    --provisioned-throughput \
        ReadCapacityUnits=10,WriteCapacityUnits=5 \
    --table-class STANDARD_INFREQUENT_ACCESS
```

L’opération `CreateTable` renvoie des métadonnées pour la table, comme illustré ci-dessous.

```
{
    "TableDescription": {
        "TableArn": "arn:aws:dynamodb:us-east-1:123456789012:table/Music",
        "AttributeDefinitions": [
            {
                "AttributeName": "Artist",
                "AttributeType": "S"
            },
            {
                "AttributeName": "SongTitle",
                "AttributeType": "S"
            }
        ],
        "ProvisionedThroughput": {
            "NumberOfDecreasesToday": 0,
            "WriteCapacityUnits": 5,
            "ReadCapacityUnits": 10
        },
        "TableClassSummary": {
            "LastUpdateDateTime": 1542397215.37,
            "TableClass": "STANDARD_INFREQUENT_ACCESS"
        },
        "TableSizeBytes": 0,
        "TableName": "Music",
        "TableStatus": "CREATING",
        "TableId": "12345678-0123-4567-a123-abcdefghijkl",
        "KeySchema": [
            {
                "KeyType": "HASH",
                "AttributeName": "Artist"
            },
            {
                "KeyType": "RANGE",
                "AttributeName": "SongTitle"
            }
        ],
        "ItemCount": 0,
        "CreationDateTime": 1542397215.37
    }
}
```

## Description d’une table
<a name="WorkingWithTables.Basics.DescribeTable"></a>

Affichez les détails d’une table à l’aide de l’opération `DescribeTable`. Vous devez fournir le nom de la table. La sortie de `DescribeTable` est au même format que celle de `CreateTable`. Elle inclut l’horodatage de la création de la table, son schéma de clé, ses paramètres de débit alloué, sa taille estimée et tout index secondaire présent.

**Important**  
 Lorsque vous appelez `DescribeTable` sur une table à la demande, les unités de capacité de lecture et d’écriture sont remises à 0. 

**Example**  

```
aws dynamodb describe-table --table-name Music
```

La table est prête à l’emploi lorsque `TableStatus` passe de `CREATING` à `ACTIVE`.

**Note**  
Si vous exécutez une demande `DescribeTable` immédiatement après une demande `CreateTable`, DynamoDB peut renvoyer une erreur (`ResourceNotFoundException`). En effet, `DescribeTable` utilise une demande à cohérence à terme et les métadonnées pour votre table peuvent ne pas être disponibles à ce moment-là. Attendez quelques secondes, puis réessayez d’envoyer la demande `DescribeTable`.  
À des fins de facturation, vos coûts de stockage DynamoDB incluent une surcharge par élément de 100 octets. (Pour en savoir plus, consultez [Tarification DynamoDB](https://aws.amazon.com/dynamodb/pricing/).) Ces 100 octets supplémentaires par élément ne sont pas utilisés dans les calculs d’unité de capacité ou par l’opération `DescribeTable`. 

## Mise à jour d’une table
<a name="WorkingWithTables.Basics.UpdateTable"></a>

L’opération `UpdateTable` vous permet d’exécuter l’une des actions suivantes :
+ Modifier les paramètres de débit alloué d’une table (pour les tables en mode alloué)
+ Modifiez le mode de read/write capacité de la table.
+ Manipuler des index secondaires globaux dans la table (voir [Utilisation d’index secondaires globaux dans DynamoDB](GSI.md))
+ Activer ou désactiver DynamoDB Streams sur la table (voir [Modifier la récupération de données pour DynamoDB Streams](Streams.md)).

**Example**  
L' AWS CLI exemple suivant montre comment modifier les paramètres de débit provisionné d'une table.  

```
aws dynamodb update-table --table-name Music \
    --provisioned-throughput ReadCapacityUnits=20,WriteCapacityUnits=10
```

**Note**  
Lorsque vous émettez une demande `UpdateTable`, le statut de la table passe de `AVAILABLE` à `UPDATING`. La table reste entièrement utilisable pendant sa `UPDATING`. Lorsque ce processus est terminé, le statut de la table passe de `UPDATING` à `AVAILABLE`.

**Example**  
L' AWS CLI exemple suivant montre comment modifier le mode de read/write capacité d'une table en mode à la demande.  

```
aws dynamodb update-table --table-name Music \
    --billing-mode PAY_PER_REQUEST
```

## Suppression d’une table
<a name="WorkingWithTables.Basics.DeleteTable"></a>

Vous pouvez supprimer une table non utilisée avec l’opération `DeleteTable`. Une fois supprimée, une table est irrécupérable. Pour supprimer une table à l’aide d’ AWS Management Console, consultez [Étape 6 : (Facultatif) supprimer votre table DynamoDB pour nettoyer les ressources](getting-started-step-6.md).

**Example**  
L' AWS CLI exemple suivant montre comment supprimer une table.  

```
aws dynamodb delete-table --table-name Music
```

Lorsque vous émettez une demande `DeleteTable`, le statut de la table passe de `ACTIVE` à `DELETING`. La suppression de la table peut prendre un certain temps, selon les ressources utilisées (par exemple les données stockées dans la table ou les flux ou index sur la table).

Une fois l’opération `DeleteTable` terminée, la table n’existe plus dans DynamoDB.

## Utilisation de la protection contre la suppression
<a name="WorkingWithTables.Basics.DeletionProtection"></a>

Vous pouvez protéger une table contre toute suppression accidentelle grâce à la propriété de protection contre la suppression. L’activation de cette propriété pour les tables permet de s’assurer que celles-ci ne seront pas supprimées accidentellement lors des opérations classiques de gestion des tables par vos administrateurs. Cela vous aidera à éviter toute interruption de vos activités métier normales.

 Le propriétaire de la table ou un administrateur autorisé contrôle la propriété de protection contre la suppression pour chaque table. La propriété de protection contre la suppression pour chaque table est désactivée par défaut. Cela inclut les répliques globales et les tables restaurées à partir de sauvegardes. Lorsque la protection contre la suppression est désactivée pour une table, celle-ci peut être supprimée par tous les utilisateurs autorisés par une stratégie Identity and Access Management (IAM). Lorsque la protection contre la suppression est activée pour une table, personne ne peut la supprimer. 

Pour modifier ce paramètre, accédez aux **Paramètres supplémentaires** de la table, puis au volet **Protection contre la suppression** et sélectionnez **Activer la protection contre la suppression**. 

La propriété de protection contre la suppression est prise en charge par la console DynamoDB, l’API, CLI/SDK et CloudFormation. L’API `CreateTable` prend en charge la propriété de protection contre la suppression lors de la création de la table, et l’API `UpdateTable` prend en charge la modification de la propriété de protection contre la suppression pour les tables existantes.

**Note**  
Si un AWS compte est supprimé, toutes les données de ce compte, y compris les tables, sont toujours supprimées dans les 90 jours.
Si DynamoDB perd l’accès à une clé gérée par le client ayant permis de chiffrer une table, il archive tout de même la table. L’archivage implique la création d’une sauvegarde de la table et la suppression de l’original.

## Liste des noms de table
<a name="WorkingWithTables.Basics.ListTables"></a>

L'`ListTables`opération renvoie les noms des tables DynamoDB pour le compte AWS courant et la région.

**Example**  
L' AWS CLI exemple suivant montre comment répertorier les noms des tables DynamoDB.  

```
aws dynamodb list-tables
```

## Description des quotas de débit alloué
<a name="WorkingWithTables.Basics.DescribeLimits"></a>

L'`DescribeLimits`opération renvoie les quotas de capacité de lecture et d'écriture actuels pour le AWS compte courant et la région.

**Example**  
L' AWS CLI exemple suivant montre comment décrire les quotas de débit actuellement provisionnés.  

```
aws dynamodb describe-limits
```
La sortie indique les quotas supérieurs d'unités de capacité de lecture et d'écriture pour le AWS compte courant et la région.

Pour en savoir plus sur ces quotas et la procédure à suivre pour demander une augmentation des quotas, consultez [Quotas de débit par défaut](ServiceQuotas.md#default-limits-throughput).