Quel est le meilleur moyen de vérifier si la table existe dans DynamoDB?
Quelle est la meilleure façon de vérifier si la table existe dans DynamoDb?
Je l'apprécierais si le code est en PHP.
Soit actif ou non.
* Ajouté plus tard comme un exemple pour les différents cas pour le code d'erreur 400
Il est très facile de vérifier si la table n'existe pas, il peut avoir l'une des opérations suivantes
TableStatus => la CRÉATION, l'ACTIF, la SUPPRESSION ou la mise à JOUR
mais dans ce cas j'obtiens l'erreur 400 il peut signifier plus qu'une chose.
1) envoyés à la chaîne null comme un nom de table par erreur.
[x-aws-body] => {"TableName":""}
)
[body] => CFSimpleXML Object
(
[__type] => com.amazon.coral.validate#ValidationException
[message] => The paramater 'tableName' must be at least 3 characters long and at most 255 characters long
)
[status] => 400
2) erreur de syntaxe dans la commande envoyée à DynamoDB, par exemple de l'écriture tabel_name au lieu de table_name.
[x-aws-body] => {"TabelName":"test7"}
)
[body] => CFSimpleXML Object
(
[__type] => com.amazon.coral.validate#ValidationException
[message] => The paramater 'tableName' is required but was not present in the request
)
[status] => 400
3) je suppose, mais n'a pas à vérifier, si je dépasse, en même temps, le approvisionné capacité sur la table.
source d'informationauteur Wiz Cat | 2012-09-05
Vous devez vous connecter pour publier un commentaire.
Vous pouvez avoir un coup d'oeil à "describe_table" de l'officiel SDK PHP. 400 signifie "n'existe pas" Il y a un assez vaste, exemple dans la documentation officielle. Regardez comment il est utilisé dans le "supprimer", par exemple, sur la droite au fond.
http://docs.amazonwebservices.com/amazondynamodb/latest/developerguide/LowLevelPHPTableOperationsExample.html
Ici est l' (stripped) exemple de la doc
Certaines de ces réponses sont en utilisant l'ancien et du SDK j'ai donc pensé que je mettrais à jour ce utile avec ce que j'ai codé en place et fonctionne bien. Les nouvelles exceptions vraiment rendre cette tâche plus facile. Cette fonction vous donne une belle booléen à utiliser dans des scripts.
J'espère que ce complète code de travail aide certains d'entre vous.
Je pense que la réponse qui résout ce avec
describeTable
est une bonne idée, mais faire l'idiot avec le code d'état de réponse rend le code moins lisible et plus confus.J'ai choisi de vérifier une des tables de l'existence à l'aide de
listTables
. Voici les docsAvec DynamoDB, vous devez analyser le contenu du message d'erreur afin de savoir quel type d'erreur reçus depuis le code d'état est presque toujours à 400. Voici un exemple de fonction qui pourrait fonctionner pour déterminer si une table existe. Il vous permet également de spécifier un statut bien, si vous voulez vérifier s'il existe et si c'est dans un certain état.
Mise à jour: Dans le SDK AWS pour PHP 2, exceptions spécifiques sont jetés par le DynamoDB client de cette façon, plus facile à manipuler. Aussi, il y a "Serveur" des objets, dont une pour ce cas d'utilisation (voir la section utilisation de l'appareil de test) qui est conçu pour dormir jusqu'à ce que la table existe.
Les réponses ci-dessus sont correctes si vous voulez juste pour savoir si la table existe ou pas. Je veux faire un autre utile de le souligner, ici au cas où.
Il faut être très prudent en multi-thread ou le niveau de production de code.
En supposant qu'un seul thread supprimé la table, ensuite, vous aurez toujours la réponse que la table existe en réponse à votre requête à partir de la deuxième thread, jusqu'à ce que la table est entièrement supprimé. Dans de tels cas, une fois que la table est supprimée de la table de la poignée dans le deuxième thread zombie, comme le balançant pointeur erreur en C++.
Avec dynamodb cli vous pouvez le faire très simple, comme suit:
Si la table existe, il retourne
Si la table n'existe pas, il retourne
Voir aussi: