0

En utilisant node.js, j'essaie de supprimer et de créer de nouveau une table dynamoDB. J'ai besoin de supprimer tous les enregistrements de la table et mettre de nouveaux, donc je pense que c'est une bonne solution pour simplement supprimer et recréer toute la table. J'essaie avec ce codeSupprimer et créer une table dynamoDB

dynamo.deleteTable({ 
     TableName: tableName 
    }, function(err, data){ 
     if (err) { 
      console.log(err); 
     } 
     else { 
      dynamo.createTable({ 
       TableName: tableName, 
       KeySchema: [{ 
        AttributeName: "id", 
        KeyType: "HASH" 
       }], 
       AttributeDefinitions: [{ 
        AttributeName: "id", 
        AttributeType: "S" 
       }], 
       ProvisionedThroughput: { 
        ReadCapacityUnits: 10, 
        WriteCapacityUnits: 10 
       } 
      }, function(err){ 
       if (err) { 
        console.log(err); 
       } 
       else { 
        // putNewData(data, callback); 
       } 
      }) 
     } 
    }); 

Et je reçois ResourceInUseException d'erreur: La table existe déjà:

Répondre

1

Vous pouvez utiliser le SDK tableNotExists waiter pour assurer une table a été complètement supprimé avant d'appeler createTable.

+0

Belle solution, tnx – Nemanja

2

Il faut un certain temps pour DynamoDB pour supprimer réellement une table, vous devez donc attendre que la table soit retirée.

Si vous obtenez une erreur ResourceInUseException, cela signifie que la table que vous essayez de recréer n'est pas encore supprimée. Vous devez donc attendre un peu et réessayer.

Si vous ne modifiez pas la clé de votre table et si vous ne créez pas de nouveaux index secondaires locaux, vous pouvez utiliser la méthode UpdateTable à la place. Voici quelques restrictions cependant:

Vous ne pouvez effectuer l'une des opérations suivantes à la fois:

Modifier les paramètres de débit provisionnées de la table.

Activer ou désactiver les flux sur la table.

Supprime un index secondaire global de la table.

Créez un nouvel index secondaire global sur la table. Une fois que l'index commence

remblayage, vous pouvez utiliser UpdateTable pour effectuer d'autres opérations.

+0

hmm j'ai pensé que le rappel m'aidera pour ça. Comment puis-je savoir quand la table est supprimée, est-ce un événement ou juste pour définir un certain délai et l'espoir est supprimé? – Nemanja

+1

Je vous suggérerais de réessayer l'appel de l'API createTable en utilisant l'arrêt exponentiel. Doc: http://docs.aws.amazon.com/general/latest/gr/api-retries.html – Antonio

+0

Malheureusement, il n'y a pas d'événement lorsqu'une table est supprimée une table. Le rappel est appelé lorsque DynamoDB a renvoyé une réponse, qui peut être un succès ou une erreur (si la table n'est pas encore supprimée) –