DynamoDB On-DemandをServerless Framework使って設定してみた #reinvent
はじめに
こんにちは、福岡オフィス所属、IT推進室の井手です。
re:Invent 2018にて、DynamoDB On-Demandという機能追加が発表されました。 【アップデート】Amazon DynamoDBが従量課金で利用できるようになりました! #reinvent
設定方法はコンソール、CloudFormation等色々あると思いますが、今回はServerless Frameworkを使って設定してみたのでご紹介します。
DynamoDB On-Demandとは何か?
詳しくは、上記ブログほか、弊社のブログ等を確認いただければと思いますが、従量課金 = ある意味真の意味で使った分だけの課金体系、を選べるようになりました。当然、通常考慮しなければならないRead Capacity UnitとWrite Capacity Unitの値を考慮する必要がなくなります。自身のケースだとBatch的に月1にそこそこ大きな処理をLambda - DynamoDBで処理する事があり、できるだけWCU、RCUを少なめにしつつも月1の処理に対応する為にDynamoDB AutoScalingで対応、としていましたが、処理数が増えてくると調整が必要になってきます。一例ですがここをOn-Demandにする事で幸せになれそうな気がしています。
やってみた
serverless.ymlを書き換えるだけなので簡単です。
環境
Serverless Framework - 1.35.1
準備
検証用のサービスを作成します。
$ mkdir dynamotest $ cd dynamotest/ $ serverless create --template aws-python3 --path dynamotest
編集
python3用のサービスが出来ました。次に、serverless.ymlを編集します。
service: dynamotest provider: name: aws runtime: python3.7 region: ap-northeast-1 functions: hello: handler: handler.hello resources: Resources: ondemanddb: Type: 'AWS::DynamoDB::Table' Properties: TableName: ondemand_test AttributeDefinitions: - AttributeName: id AttributeType: S KeySchema: - AttributeName: id KeyType: HASH # ProvisionedThroughput: # ReadCapacityUnits: 5 # WriteCapacityUnits: 5 BillingMode: PAY_PER_REQUEST # On-Demand用設定値
通常、ProvisionedThroughput以下の値を記入する箇所が不要になり、BillingMode: PAY_PER_REQUESTを設定しています。
デプロイ
$ sls deploy -v
結果
DynamoDBを確認してみます。リクエストごとの支払いになっていますね!
さいごに
On-Demandを選ぶのかどうかは状況によると思いますが、個人的には今後検証、開発段階はOn-Demandを選択すると思います。どなたかの参考になれば幸いです。
参考にさせてもらった記事/ブログ
DynamoDB On-Demand: When, why and how to use it in your serverless applications