LoginSignup
4
5

More than 5 years have passed since last update.

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

Last updated at Posted at 2016-02-07

今まで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を
使っていることに対するコスト削減なのでとりあえず完了です。
ユニットをもうすこし効率よく使えないかは今後の課題にします。

4
5
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
4
5