背景
利用頻度が予測できない場合はオンデマンドの方がコストを最適化できる。
手順
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;
}
}
}
}