Je voudrais copier toutes les tables dynamoDB sur un autre compte aws sans s3 pour enregistrer les données. J'ai vu des solutions pour copier une table avec un pipeline de données mais tous utilisent s3 pour sauvegarder les données. Je voudrais sauter l'étape s3 car la table contient une grande quantité de données, ce qui peut prendre du temps pour les processus d'écriture s3 et de lecture s3. J'ai donc besoin de copier directement la table d'un compte à un autre.
Si cela ne vous dérange pas d'utiliser Python et d'ajouter la bibliothèque boto3 (Sudo python -m pip install boto3), je le ferais comme ceci (je suppose que vous savez comment remplir les noms de clés, de régions et de tables dans le code, respectivement) :
import boto3
import os
dynamoclient = boto3.client('dynamodb', region_name='eu-west-1',
aws_access_key_id='ACCESS_KEY_SOURCE',
aws_secret_access_key='SECRET_KEY_SOURCE')
dynamotargetclient = boto3.client('dynamodb', region_name='us-west-1',
aws_access_key_id='ACCESS_KEY_TARGET',
aws_secret_access_key='SECRET_KEY_TARGET')
dynamopaginator = dynamoclient.get_paginator('scan')
tabname='SOURCE_TABLE_NAME'
targettabname='TARGET_TABLE_NAME'
dynamoresponse = dynamopaginator.paginate(
TableName=tabname,
Select='ALL_ATTRIBUTES',
ReturnConsumedCapacity='NONE',
ConsistentRead=True
)
for page in dynamoresponse:
for item in page['Items']:
dynamotargetclient.put_item(
TableName=targettabname,
Item=item
)
Essayez cette nodejs
module
npm i copy-dynamodb-table
Sauvegarde et restauration simples pour Amazon DynamoDB à l'aide de boto
https://github.com/bchew/dynamodump
qui peut faire ce qui suit:
La lecture et l’écriture sur S3 ne seront pas votre goulet d’étranglement.
Bien que la numérisation à partir de Dynamo soit très rapide, l'écriture des éléments dans la table de destination sera lente. Vous ne pouvez écrire que 1 000 éléments par seconde et par partition. Donc, je ne m'inquiéterais pas du stockage S3 intermédiaire.
Toutefois, Data Pipeline n’est pas non plus le moyen le plus efficace de copier une table dans une autre.
Si vous avez besoin de transferts rapides, votre meilleur choix est de mettre en œuvre votre propre solution. Configurez les tables de destination en fonction du débit de transfert souhaité (mais faites attention aux divisions de partition non souhaitées), puis écrivez une analyse parallèle à l'aide de plusieurs threads, qui écrit également dans la table de destination.
Il existe une implémentation open source en Java que vous pouvez utiliser comme point de départ dans le référentiel AWS Labs.
Pour ce faire, vous pouvez utiliser DynamoDb Streams et Lambda. http://searchaws.techtarget.com/tip/DynamoDB-Streams-keep-database-tables-in-sync