Est-il possible d'exporter des données de la table DynamoDB dans un format quelconque?
Le cas concret est que je souhaite exporter les données de ma base de données de production dynamodb et les importer dans mon instance locale dynamodb afin que mon application puisse utiliser une copie locale des données plutôt que des données de production.
J'utilise link en tant qu'instance locale de DynamoDB.
Il existe un outil nommé DynamoDBtoCSV
qui peut être utilisé pour exporter toutes les données dans un fichier CSV. Cependant, dans le cas contraire, vous devrez créer votre propre outil. Ma suggestion est que vous ajoutiez cette fonctionnalité à l'outil et que vous la contribuiez au référentiel Git.
Vous pouvez également utiliser AWS Data Pipeline pour cette tâche (vous éviterez ainsi tous les coûts de lecture des données en dehors de l'infrastructure AWS). L'approche est similaire:
Exportez-le depuis l'interface DynamoDB vers S3.
Puis convertissez-le en Json en utilisant sed:
sed -e 's/$/}/' -e $'s/\x02/,"/g' -e $'s/\x03/":/g' -e 's/^/{"/' <exported_table> > <exported_table>.json
Essayez mon simple script node.js dynamo-archive . Il exporte et importe au format JSON.
J'ai trouvé le meilleur outil actuel pour les importations/exportations simples (y compris les allers-retours dans DynamoDB Local): ce script Python:
https://github.com/bchew/dynamodump
Ce script prend en charge l'exportation/importation de schéma ainsi que l'importation/exportation de données. Il utilise également les API de lot pour des opérations efficaces.
Je l'ai utilisé avec succès pour transférer des données d'une table DynamoDB vers DynamoDB local à des fins de développement et cela a très bien fonctionné pour mes besoins.
J'ai créé une classe utilitaire pour aider les développeurs à exporter. Cela peut être utilisé si vous ne souhaitez pas utiliser la fonctionnalité de pipeline de données d'AWS. Le lien vers le référentiel git hub est - ici
Pour ceux d’entre vous qui préfèrent utiliser Java, il existe DynamodbToCSV4j .
JSONObject config = new JSONObject();
config.put("accessKeyId","REPLACE");
config.put("secretAccessKey","REPLACE");
config.put("region","eu-west-1");
config.put("tableName","testtable");
d2csv d = new d2csv(config);