如何移除DynamoDB表的sort key,可通过AWS控制台UI或命令行操作?
移除DynamoDB表排序键(Sort Key)操作指南
首先明确:DynamoDB不支持直接修改或删除已创建表的主键结构(排序键是主键的组成部分),你需要通过重建原表的方式完成排序键移除,以下是两种路径的具体操作步骤:
一、通过AWS控制台UI操作
- 第一步:进入DynamoDB控制台,打开目标表的「导出/导入」标签页,选择「导出到S3」,将表全量数据导出到你有权限的S3存储桶中,导出格式选择DynamoDB JSON即可
- 第二步:回到表列表页,点击「创建表」,配置和原表完全一致的表名(如果要保留原表名需要先删除原表,建议先确认数据导出完成再操作)、分区键,不填排序键,其余配置(读写容量模式、加密规则、TTL等)按需和原表保持一致,完成新表创建
- 第三步:进入新创建的表的「导出/导入」标签页,选择「从S3导入」,选择之前导出到S3的数据文件,源格式选DynamoDB JSON,导入目标选择刚创建的新表,等待导入完成即可
- 验证新表数据无误后,可按需删除原表
二、通过AWS命令行(CLI)操作
- 第一步:导出原表数据到S3,执行以下命令,替换对应占位符为你的实际资源参数:
aws dynamodb export-table-to-point-in-time --table-arn 原表ARN --s3-bucket 你的S3桶名 --s3-prefix 导出文件前缀 --export-format DYNAMODB_JSON - 第二步:创建不带排序键的新表,示例命令如下,按需修改参数:
aws dynamodb create-table --table-name 新表名 --attribute-definitions AttributeName=你的分区键名,AttributeType=S --key-schema AttributeName=你的分区键名,KeyType=HASH --billing-mode PAY_PER_REQUEST - 第三步:导入S3数据到新表,执行命令:
aws dynamodb import-table --s3-bucket-source S3Bucket=你的S3桶名,S3KeyPrefix=导出文件前缀 --input-format DYNAMODB_JSON --table-creation-parameters '{"TableName":"新表名","KeySchema":[{"AttributeName":"你的分区键名","KeyType":"HASH"}],"AttributeDefinitions":[{"AttributeName":"你的分区键名","AttributeType":"S"}],"BillingMode":"PAY_PER_REQUEST"}' - 验证新表数据正常后,可执行以下命令删除原表:
aws dynamodb delete-table --table-name 原表名
注意:操作前请确认你已开启原表的时间点恢复(PITR)功能,否则无法使用上述导出接口;如果未开启PITR,也可以通过
scan命令全量读取原表数据后批量写入新表,数据量较大时不推荐该方案。
内容的提问来源于stack exchange,提问作者Nilotpal
相关产品推荐
相关产品推荐

