this.table = new dynamodb.Table(this, `${stackName}-${id}`, {
tableName: `${stackName}-${id}`,
partitionKey: { name: 'message_id', type: dynamodb.AttributeType.STRING },
sortKey: { name: 'entityId', type: dynamodb.AttributeType.STRING },
billingMode: dynamodb.BillingMode.PAY_PER_REQUEST,
tableClass: dynamodb.TableClass.STANDARD,
stream: dynamodb.StreamViewType.NEW_IMAGE,
timeToLiveAttribute: 'ttl',
removalPolicy: RemovalPolicy.DESTROY,
});
但是我需要将
partitionKey
从message_id
更改为messageId
。有没有办法以编程方式执行此操作?或者我是否必须在每个环境中手动删除该表?这尚未部署到生产环境,但已部署到开发环境。
您必须删除并重新创建表才能更改分区键和/或排序键的名称。
哎呀,你甚至无法更改 DDB 中记录的 PK 值。
最好的解决方案是在 message_id 属性上创建全局二级索引 (GSI)。这允许您高效地通过message_id查询表。