Magicode logo
Magicode
2 min read

【AWS CDK】DynamoDB(GSI含む)のキャパシティ戦略をProvisioned Auto Scalingにする

https://cdn.apollon.ai/media/notebox/6d8d464d-ff4b-405d-ac35-09922701ed6e.jpeg
CDKのインターフェースが分かりづらく、ググってもなかなか見つからなかったためシェアします。

コード

const bookTable = new dynamodb.Table(this, 'BookTable', {
  partitionKey: {
    name: 'PK',
    type: dynamodb.AttributeType.STRING
  },
  sortKey: {
    name: 'SK',
    type: dynamodb.AttributeType.STRING
  },
  stream: dynamodb.StreamViewType.NEW_IMAGE
})
const bookTableReadCapacity = bookTable.autoScaleReadCapacity({
  minCapacity: 1,
  maxCapacity: 3
})
bookTableReadCapacity.scaleOnUtilization({
  targetUtilizationPercent: 80
})
const bookTableWriteCapacity = bookTable.autoScaleWriteCapacity({
  minCapacity: 1,
  maxCapacity: 3
})
bookTableWriteCapacity.scaleOnUtilization({
  targetUtilizationPercent: 80
})

bookTable.addGlobalSecondaryIndex({
  indexName: 'bookId_index',
  partitionKey: {
    name: 'BookId',
    type: dynamodb.AttributeType.STRING
  },
  sortKey: {
    name: 'SK',
    type: dynamodb.AttributeType.STRING
  }
})
bookTable.autoScaleGlobalSecondaryIndexReadCapacity('bookId_index', {
  minCapacity: 1,
  maxCapacity: 3
}).scaleOnUtilization({
  targetUtilizationPercent: 80
})
bookTable.autoScaleGlobalSecondaryIndexWriteCapacity('bookId_index', {
  minCapacity: 1,
  maxCapacity: 3
}).scaleOnUtilization({
  targetUtilizationPercent: 80
})

追伸

こちらの記事の流れで実施したのですが、DynamoDBの詳細は本旨でなかったため、別記事にしました。

Discussion

コメントにはログインが必要です。