DynamoDB требует, чтобы вы объявляли ТОЛЬКО атрибуты, составляющие вашу схему ключей.( См. Документы AWS )
Если id
является единственным атрибутом, который используется для создания вашей ключевой схемы, ваш ресурс должен выглядеть следующим образом:
resources:
Resources:
StoreDynamoDbTable:
Type: 'AWS::DynamoDB::Table'
DeletionPolicy: Retain
Properties:
AttributeDefinitions:
- AttributeName: id
AttributeType: S
KeySchema:
- AttributeName: id
KeyType: HASH
ProvisionedThroughput:
ReadCapacityUnits: 1
WriteCapacityUnits: 1
TableName: ${self:provider.environment.TableStore}
DynamoDB не заботится о других атрибутах.После вставки ваших данных DynamoDB обнаружит новые атрибуты, не объявляя их в схеме.В этом весь смысл нереляционной базы данных.
Кроме того, если вы хотите иметь дату в качестве ключа сортировки в своей ключевой схеме, у вас может быть что-то вроде этого:
resources:
Resources:
StoreDynamoDbTable:
Type: 'AWS::DynamoDB::Table'
DeletionPolicy: Retain
Properties:
AttributeDefinitions:
- AttributeName: id
AttributeType: S
- AttributeName: date
AttributeType: S
KeySchema:
- AttributeName: id
KeyType: HASH
- AttributeName: date
KeyType: RANGE
ProvisionedThroughput:
ReadCapacityUnits: 1
WriteCapacityUnits: 1
TableName: ${self:provider.environment.TableStore}
У ключевой схемы всегда есть по крайней мерераздел (HASH
) и может иметь ключ сортировки (RANGE
). Отметьте это, чтобы узнать больше о ключевой схеме DynamoDB.