2

私はS3にデータをバックアップするためにAWSデータパイプラインテンプレートを見つけました。しかし、私はテーブル全体をバックアップしたくありません。私はちょうど最後の7日間に起こった変更のスナップショットを保持したい。DynamoDBからS3への最後の7日間の変更/作成データをバックアップする方法は?

私はこれにアプローチする方法は、変更されたレコードをスキャンするlast_updated_dateカラムのテーブルにGSIを持たせることだと思います。今、AWS Datapipelineを使用して結果を得ることは可能ですか?

答えて

2

これは一度だけの作業でない限り、DynamoDB StreamsとKinesisまたはLambdaを使用して、変更を耐久性のあるストレージにバックアップすることをお勧めします。 DynamoDBストリームは、DynamoDBテーブル内のアイテムレベルの変更の時間順シーケンスを取得し、この情報をログに最大24時間保存します。 DynamoDBストリームと組み合わせてLambda関数をトリガーし、S3に変更を書き込んでほぼリアルタイムの連続バックアップを実現できます。

GSIを使用すると、もちろんルックアップを高速化できますが、大きなテーブルを処理するタスクでは、GSIとプログラム自体に多くのプロビジョニングされたスループット能力が必要になります。

DynamoDB Update – Triggers (Streams + Lambda) + Cross-Region Replication App

希望これを:例とそれについての素晴らしいブログの記事も

1. Capturing Table Activity with DynamoDB Streams

2. Using the DynamoDB Streams Kinesis Adapter to Process Stream Records

あります:

あなたは以下のストリームについての関連AWSのドキュメントを見つけることができます助けて!

+0

私はこのようにそれを行うにはしたくない申し訳ありませんが。私の仕事は週に一度走り、私はバックアップを取ることができるはずです。私はそれを連続的なプロセスにしたくありません。それらの理由で何かを提案できますか? – Adi

+2

なぜあなたは何かを連続してではなく週に一度したいですか? 1週間に1回行う場合は、何か間違っていると(例えばテーブルを削除するなど)、最大1週間のデータが失われる可能性があります。 – Guy

1

あなたがしようとしているのは、HiveCopyActivityの例に非常に似ています。この例では、2つのDynamoDBテーブル間でデータをコピーします。あなたはカップルの変更を加える必要があるでしょう:

  • あなたが保存するバックアップしたいバケットにS3DataNodeポインティングでoutputを交換してください。
  • 変更、のようなものデータの最後の7日間を引っ張るfilterSql

    "filterSql" : "last_updated_date > unix_timestamp(\"#{minusDays(@scheduledStartTime,7)}\", \"yyyy-MM-dd'T'HH:mm:ss\")" 
    
関連する問題