web-dev-qa-db-fra.com

Comment exporter un schéma de table dynamodb existant vers json?

Je voudrais répliquer certaines tables dynamodb, schéma uniquement, dans mon environnement local à des fins de test. J'ai d'abord essayé:

aws dynamodb describe-table --table-name Foo > FooTable.json

Mais il est évident que le schéma de sortie n'est pas conforme au schéma d'entrée du create-table commande:

aws dynamodb create-table --cli-input-json file://FooTable.json --endpoint=http://localhost:8000

Ce que j'essaye d'éviter, c'est de générer des dizaines de squelettes avec aws dynamodb create-table --generate-cli-skeleton et remplissez-les manuellement: /

Existe-t-il un moyen d'obtenir le schéma de table dans un format "utile" pour les loisirs? Je trouve incroyable qu'il n'y ait pas de moyen simple de le faire via l'interface graphique Web ou la ligne de commande aws standard - après avoir entendu à quel point leur service était "bon".

19
marcio

J'ai juste réussi à faire un vidage complet et à "restaurer" en utilisant bchew/dynamodump :

git clone [email protected]:bchew/dynamodump.git

Remarquez le --schemaOnly option dans la documentation https://github.com/bchew/dynamodump . La commande était:

./dynamodump.py -m backup --schemaOnly --region foo-region --Host localhost --srcTable '*' --port 8000 --accessKey fooKey --secretKey barKey

Ensuite, vous pouvez utiliser le -m restore mode pour replacer les données ou le schéma dans une dynamodb locale ou où vous le souhaitez :)

Cela dit, je trouve toujours incroyable la gravité de la chaîne d'outils Amazon dynamodb. Allez les gars.

8
marcio

DynamoDB est une base de données NoSQL qui, à l'exception de la clé primaire et des index secondaires, n'a pas de schéma. Vous remarquerez peut-être dans la description-table qu'elle ne montre que les clés et les index, pas d'autres colonnes.

J'écris généralement du code pour créer la table et les clés dans une sorte de code d'initialisation, puis je commence à utiliser la table. Cela ne fera pas de mal si la table est déjà là. Plus tard, si j'essaie d'insérer des données et que la "colonne" n'existe pas, cela n'a pas d'importance car DynamoDB les créera automatiquement.

Si vous avez besoin d'exporter les données, il existe des outils pour cela qui vous permettra d'exporter (et certains autorisent également l'importation) à partir de DynamoDB.

1
stdunbar