EC2にDynamic-DynamoDBをインストールする

  • 16
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

Dynamic-DynamoDBとは?

インストール

EC2インスタンスへのインストールは下記のどちらかで。

  • CloudFormastion Templateを使ってインストール
    • CloudFormationで構築する場合は、t1.microインスタンスの料金が必要になります。
  • 既存のEC2インスタンスにインストール

ここでは既存のEC2インスタンスにインストールします。

環境

item value
OS Amazon Linux 2013.09
conf /etc/dynamic-dynamodb
log /var/log/dynamic-dynamodb

手順

Dynamic-DynamoDBインストール

$ sudo pip install dynamic-dynamodb

コンフィグ

コンフィグファイルを配置

$ sudo mkdir /etc/dynamic-dynamodb
$ cd /etc/dynamic-dynamodb
$ sudo wget https://github.com/sebdah/dynamic-dynamodb/blob/master/example-dynamic-dynamodb.conf
$ sudo mv example-dynamic-dynamodb.conf dynamic-dynamodb.conf

コンフィグファイルを編集します。

  • AWSのキーを設定
    • IAMユーザー作成を推奨
    • DynamoDBのフルアクセス権と、CloudWatchのリードオンリーアクセス権が必要
  • Tokyoリージョンを指定
  • ログの出力先の設定を変更
dynamic-dynamodb.conf
aws-access-key-id: AWSAccessKey
aws-secret-access-key-id: AWSSecretKey
region: ap-northeast-1
log-file: /var/log/dynamic-dynamodb.log

ログ

ログ出力先のディレクトリ作成。

$ sudo mkdir /var/log/dynamic-dynamodb

ログファイルは2種類。

  • dynamic-dynamodb.log
  • service.log

自動起動の設定

起動スクリプト

起動スクリプトはCloudFormastion Templeteを参考にしてます。
CloudFormastion TemplateはS3からコンフィグの取得などしてますが、今回は使わないので削ってます。

/etc/rc.d/init.d/dynamic-dynamodb
#!/usr/bin/env bash
### BEGIN INIT INFO
# Provides:        dynamic-dynamodb
# Required-Start:  $remote_fs $syslog
# Required-Stop:   $remote_fs $syslog
# Default-Start:   2 3 4 5
# Default-Stop:    0 1 6
### END INIT INFO

NAME=dynamic-dynamodb
DAEMON=/usr/bin/dynamic-dynamodb
DRY_RUN=$2
DAEMON_START_ARGS="--config /etc/dynamic-dynamodb/dynamic-dynamodb.conf --daemon start"
DAEMON_STOP_ARGS="--config /etc/dynamic-dynamodb/dynamic-dynamodb.conf --daemon stop"
SCRIPTNAME=/etc/init.d/$NAME
SERVICE_LOG_FILE=/var/log/dynamic-dynamodb/service.log

if [ "$DRY_RUN" == "--dry-run" ]; then
   DAEMON_START_ARGS="--config /etc/dynamic-dynamodb/dynamic-dynamodb.conf --dry-run --daemon start"
   DAEMON_STOP_ARGS="--config /etc/dynamic-dynamodb/dynamic-dynamodb.conf --dry-run --daemon stop"
elif [ "$2" != "" ]; then
   echo $2
   echo "Second parameter has to be --dry-run and is used only when running start/restart/force-reload commands"
   exit 1
fi

# Exit if the package is not installed
[ -x $DAEMON ] || exit 1

. /etc/rc.d/init.d/functions

log(){
    timenow=`date +%Y-%m-%dT%H:%M:%S.%N`
    echo "$timenow: $1"
    echo "$timenow: $1" >> $SERVICE_LOG_FILE
}

error_exit(){
  log "$1"
  exit 1
}


do_start()
{
   if [ "$DRY_RUN" == "--dry-run" ]; then
      log "do_start:Dry run mode"
   else
      log "do_start:Firstly"
   fi
   log "do_start:Starting $NAME"
   daemon $DAEMON $DAEMON_START_ARGS  || error_exit "Failed in starting $NAME service"
}

do_stop()
{
   log "do_stop:Stopping $NAME"
   daemon $DAEMON $DAEMON_STOP_ARGS || error_exit "Failed in stopping $NAME service"
}


case "$1" in
  start)
  do_start
  ;;
  stop)
  do_stop
  ;;
  status)
  status "$DAEMON" "$NAME" && exit 0 || exit $?
  ;;
  restart|force-reload)
  do_stop
  do_start
    #*)
  ;;
  *)
  echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
  exit 3
  ;;
esac

:

サービス登録

$ sudo chkconfig --add dynamic-dynamodb

起動

$ sudo service dynamic-dynamodb start

--dry-runオプションを付けると、DynamoDBのスループット変更を行わないモードで起動します。dynamic-dynamodb.logを確認して、意図したスケール動作となるかなど、一度確認する。

停止

$ sudo service dynamic-dynamodb stop

気をつけた方が良いこと

  • DynamoDBのスループットダウンは1日4回までしか出来ない。スループットアップは何回も可。
  • 高スループットのままでダウン出来ないのは避けたい(料金が!)ので、バッチなどは時間帯をまとめるか、オプションのmaintenance-windowsをうまく使うを良いかも(まだ試してない)