3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【AWS】S3からDynamoDBへのインポートができるようになりました!(& ちょっと検証)

Posted at

きっかけ

ネットサーフィンしていたら、AWS公式からDynamoDBでS3からのインポートをサポートしました!というブログポストが出ていたので、以前はちょっとしたLambdaとか書いてたなぁと思いつつ、便利っぽいので動作確認しようと思いました。

(流石のクラメソさん、以下でとてもわかりやすくまとめてくれております!)

前提

 移行前テーブル: before_migrate_table

  • 項目: ttl項目についてTTL設定なし, alt_nameはLSI設定時に使用想定
    • id: Number, PK
    • name: String, SK
    • alt_name: String
    • ttl: String
      スクリーンショット 2022-08-20 22.24.45.png
      スクリーンショット 2022-08-20 22.24.54.png
      スクリーンショット 2022-08-20 22.01.30.png
      スクリーンショット 2022-08-20 22.01.47.png

 移行後テーブル想定: after_migrate_table_(json or csv)

  • 項目:
    • id: Number, PK
    • name: String, SK
    • alt_name: String
    • ttl: String

検証① DynamoDBのエクスポート後ファイルからのインポート

  • DynamoDBからのエクスポートジョブを設定し、エクスポートを実施
    スクリーンショット 2022-08-20 22.04.28.png

  • エクスポート結果として各レコードごとに.gz形式でエクスポートされることを確認
    スクリーンショット 2022-08-20 22.15.44.png

  • (解凍後のファイル内容例)
    スクリーンショット 2022-08-20 22.15.30.png

  • S3からのインポートジョブを作成

    • S3のプレフィックスで階層で指定することも可能(ファイル単位でなくても大丈夫そう)
      スクリーンショット 2022-08-20 22.34.17.png
  • テーブルは新規作成する必要あり。(既存テーブルに追加することはできなさそう)
    スクリーンショット 2022-08-20 22.36.29.png

  • LSIを作成することは出来ない
    スクリーンショット 2022-08-20 22.36.53.png

  • ジョブを作成、完了したことを確認

    • テーブル作成+3レコードインポートで3分程度かかっていた
      スクリーンショット 2022-08-20 22.41.32.png
  • 正常にインポートできていることを確認
    スクリーンショット 2022-08-20 22.44.54.png
    スクリーンショット 2022-08-20 22.45.06.png

検証② CSVエクスポート後ファイルからのインポート

  • DynamoDBから項目をCSVにてダウンロード
    スクリーンショット 2022-08-20 22.17.00.png
    - (ダウンロードファイル内容)
    スクリーンショット 2022-08-20 22.17.36.png

  • S3からのインポートジョブを作成

    • jsonの時と異なり、ヘッダとデリメータの設定項目が表示される
      スクリーンショット 2022-08-20 22.50.44.png
  • ジョブを作成、完了したことを確認

    • テーブル作成+3レコードインポートで3分程度かかっていた(jsonと大差なし)
      スクリーンショット 2022-08-20 22.55.55.png
  • 正常にインポートできていることを確認
    スクリーンショット 2022-08-20 22.57.11.png
    スクリーンショット 2022-08-20 22.57.21.png

検証③ インポート後のTTL設定追加

  • after_migrate_table_jsonでttl項目についてTTL設定を有効化する
    スクリーンショット 2022-08-20 22.59.30.png
  • 有効化されたことを確認
    スクリーンショット 2022-08-20 23.00.40.png
    スクリーンショット 2022-08-20 23.00.52.png

検証④ インポート時間の検証

  • CSVデータを1万行に拡張し、インポートジョブを作成
    スクリーンショット 2022-08-20 23.10.15.png
  • 実行結果を確認
    • テーブル作成と10000件インポートで約3分半
    • 前述の結果からDynamoDBの初期設定で約3分、 データ量に対しては十分な速度が出そう
      スクリーンショット 2022-08-20 23.16.30.png

まとめ

  • CSV, JSONで取り込めた
  • S3配下のフォルダ内ファイル全部を対象にできた
  • LSIは設定できなかった
  • TTLは通常と同じく、設定できた
  • インポート時間はDynamoDBの初期設定で3分くらい、データ量に対しては十分な速度が出ていた
3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?