Skip to content

AWS Amplify で作成した DynamoDB のキャパシティーモードをオンデマンドに変更する

Updated:

背景

利用頻度が予測できない場合はオンデマンドの方がコストを最適化できる。

手順

1. オーバーライドの実施

公式ドキュメント に従ってオーバーライドを実施する。

amplify override storage

2. DynamoDB の設定変更

作成された override.ts に次の内容を記載する。

import {
  AmplifyDDBResourceTemplate,
  AmplifyProjectInfo,
} from "@aws-amplify/cli-extensibility-helper";
import { isResolvableObject } from "aws-cdk-lib";

export function override(
  resources: AmplifyDDBResourceTemplate,
  amplifyProjectInfo: AmplifyProjectInfo
) {
  resources.dynamoDBTable.billingMode = "PAY_PER_REQUEST";
  resources.dynamoDBTable.provisionedThroughput = {
    readCapacityUnits: 0,
    writeCapacityUnits: 0,
  };

  if (!isResolvableObject(resources.dynamoDBTable.globalSecondaryIndexes)) {
    for (const globalSecondaryIndex of resources.dynamoDBTable.globalSecondaryIndexes) {
      if (
        !isResolvableObject(globalSecondaryIndex) &&
        !isResolvableObject(globalSecondaryIndex.provisionedThroughput)
      ) {
        // @ts-ignore
        globalSecondaryIndex.provisionedThroughput.readCapacityUnits = 0;
        // @ts-ignore
        globalSecondaryIndex.provisionedThroughput.writeCapacityUnits = 0;
      }
    }
  }
}

参考