DynamoDBテーブルの 低頻度アクセス (Standard-Infrequent Access) を試してみた (CloudFormation & マネジメントコンソール) #reinvent

DynamoDBテーブルのテーブルクラスをCloudFormationで設定できました
2021.12.03

DynamoDBテーブルに「低頻度アクセス時のコスト改善」を目的としたテーブルクラスが追加されました。

本記事では、実際に試してみました。

おすすめの方

  • DynamoDBテーブルの Standard-Infrequent Access をCloudFormationで作りたい方

マネジメントコンソールでDynamoDBテーブルのテーブルクラスを設定する

DynamoDBテーブル作成時に、「テーブルクラス」の設定ができるようになっていました。

  • DynamoDB 標準
  • DynamoDB 標準 - 低頻度アクセス

DynamoDBテーブルで低頻度アクセスが選べる

なお、キャパシティー設定もオンデマンド・プロビジョニングがそれぞれ選べます。

CloudFormationでDynamoDBテーブルのテーブルクラスを設定する

CloudFormationテンプレート

TableClassで指定します。

  • STANDARD
  • STANDARD_INFREQUENT_ACCESS

dynamodb.yaml

AWSTemplateFormatVersion: "2010-09-09"
Description: DynamoDB Table Class Sample 

Resources:
  SampleTable:
    Type: AWS::DynamoDB::Table
    Properties:
      BillingMode: PAY_PER_REQUEST
      TableClass: STANDARD_INFREQUENT_ACCESS
      AttributeDefinitions:
        - AttributeName: userId
          AttributeType: S
      KeySchema:
        - AttributeName: userId
          KeyType: HASH

デプロイ

aws cloudformation deploy \
    --template-file dynamodb.yaml \
    --stack-name Dynamodb-Table-Class-Sample-Stack \
    --capabilities CAPABILITY_NAMED_IAM

DynamoDBテーブルの様子

できました。

DynamoDBテーブルで低頻度アクセスが作れた

DynamoDBテーブル作成後も、テーブルクラスの変更はできます

マネジメントコンソールでも、CloudFormationでも、テーブルクラスの変更ができます。

DynamoDBテーブルのテーブルクラスを変更する

DynamoDBテーブルのテーブルクラスを変更する

料金について

本記事の作成時点では、DynamoDBの料金は、まだ更新されていませんでした。 しかし、AWS公式ブログでは下記の記載があります。

例えば、米国東部 (バージニア北部) の DynamoDB 標準 – IA ストレージの料金は GB あたり 0.10 USD (DynamoDB 標準より 60% 低い) になりましたが、読み取りと書き込みは 25% 高くなっています。

https://aws.amazon.com/jp/blogs/news/new-dynamodb-table-class-save-up-to-60-in-your-dynamodb-costs/

データはたくさんあるけど、普段はアクセスしないDynamoDBテーブルに向いていそうです。 ただし、「ストレージ料金が安くなる&読み書き料金が高くなる」ので、DynamoDBテーブルのデータ量が少ない場合は、メリットが少なそうですね。

参考