Help us understand the problem. What is going on with this article?

【AWS】DynamoDBにDataPipeline以外でのデータインポート

More than 3 years have passed since last update.

今までDynamoDBに対してデータを取り込む際、
データ件数が少なくてもDataPipelineを毎回使っていました。
ですが、DataPipelineも何度も使うとお金がかかってくるので
他に一括でデータを入れる方法がないか考えました。

事前準備

AWS CLIのインストール

コマンドラインからAWSを操作するためのAWS CLIをインストールします。
今回はEC2から行うため、Amazon Linux上から行います。

動作環境としてPythonが必要なため、インストールします。

python_install
$ sudo yum install python-setuptools
$ sudo easy_install pip

インストールしたpipからawscliをインストールします。

awscli_install
$ sudo pip install awscli

インストール後、aws --versionでバージョン確認ができればOKです。

AWS CLIの基本設定

CLIからアクセスするための、IAMユーザを作成し
アクセスキーと、シークレットアクセスキーを取得します。

その後、以下のコマンドでCLIのコンフィグを設定します。

CLI
$ aws configure
AWS Access Key ID [None]: ****************MYZA
AWS Secret Access Key [None]:****************Vz+l
Default region name [None]: ap-northeast-1
Default output format [None]: text

Default regionはデフォルトで利用するリージョンをせってします。
Default output formatはCLIの実行結果を出力する際の、ファイル形式を設定します。
今回はtextにしますが、json、tableも設定可能です。

設定したconfigはホームディレクトリの.awsディレクトリに保管されます。

CLI操作

awsのコマンドからJSON形式で登録が出来る

CLI
aws dynamodb put-item --table-name <テーブル名> --item '<JSON>' --return-consumed-capacity TOTAL

JSONの形式はDataPipelineで使用したものでOK

実行した感想

今のところ、1回のコマンドで1行分のJSONしか読み込み方がわからなかったので
とりあえず、行数分コマンドをExcelで生成して一気に流してみました。
100件とかその程度のデータなら、コマンドのほうがよっぽど早い

DataPipeline使うにしても行数分のJSONデータは作らないといけないので、
データの準備は変わらないし件数が少ない場合はDataPipelineよりコマンドかな。
DataPipelineだとインスタンスの起動時間とかで結構時間もかかる。

ただ、1000件以上のデータだとちょっと時間がかかる。。。
ひょっとしたらこっちはDataPipelineのが早いかもしれない。
ユニットは書き込みに15振ってあるけど、3ぐらいしか使えてないし、
もっとコマンドに付け足しで効率よくユニット使えれば早くなるかもです。

まとめ

今日やりたかった事は、データ件数が少なくてもDataPipelineを
使っていることに対するコスト削減なのでとりあえず完了です。
ユニットをもうすこし効率よく使えないかは今後の課題にします。

hisayuki
IT系ノマドワーカーです。主にWeb系だけどRuby未経験、PHPはあんま好きじゃない。メインはJVM言語、そろそろ他のやりたいなって思えてきてる。 最近使ってる: aws/terraform/spring/kotlin/Angular/Typescript/DDD/github/CICD 興味ある: serverless/自動化/gcp
https://hisa-tech.site
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away