Я использую AWS SAM для развертывания таблицы DynamoDB, и мой template.yaml выглядит примерно так :
AWSTemplateFormatVersion: "2010-09-09"
Transform: AWS::Serverless-2016-10-31
DynamoDBTable:
Type: AWS::DynamoDB::Table
Properties:
BillingMode: PAY_PER_REQUEST
AttributeDefinitions:
- AttributeName: owner
AttributeType: S
KeySchema:
- AttributeName: owner
KeyType: HASH
Я делаю sam build && sam deploy
, чтобы (повторно) развернуть его. Когда я добавляю sortKey и/или GlobalSecondaryIndex, файл yaml выглядит примерно так:
AWSTemplateFormatVersion: "2010-09-09"
Transform: AWS::Serverless-2016-10-31
DynamoDBTable:
Type: AWS::DynamoDB::Table
Properties:
BillingMode: PAY_PER_REQUEST
AttributeDefinitions:
- AttributeName: owner
AttributeType: S
- AttributeName: Timestamp
AttributeType: S
KeySchema:
- AttributeName: owner
KeyType: HASH
- AttributeName: Timestamp
KeyType: RANGE
GlobalSecondaryIndexes:
- IndexName: TestIndex
KeySchema:
- AttributeName: owner
KeyType: HASH
- AttributeName: Timestamp
KeyType: RANGE
Projection:
ProjectionType: KEYS_ONLY
В соответствии с документами, обновляющими эти поля должны быть возможны (без прерывания). Но в моем случае команда deploy всегда воссоздает всю таблицу (удаляя все данные). Я делаю что-то не так здесь?
Редактировать
Может быть, мое объяснение было неясным по этому поводу. Я пытался добавить оба (GSI и sortKey), но я также пробовал добавлять каждый по одному, т.е. просто добавляя GSI.