Как создать несколько GSI при создании таблицы из CLI - DynamoDB

Я пытаюсь создать таблицу из CLI, которая имеет несколько GSI. Тем не менее, он возвращает ошибку:

Ошибка проверки параметра: отсутствует обязательный параметр в GlobalSecondaryIndexes [5]: «IndexName» Отсутствует обязательный параметр в GlobalSecondaryIndexes [5]: «KeySchema» Отсутствует обязательный параметр в GlobalSecondaryIndexes [5]: «Проекция»

Это то, что у меня есть

aws dynamodb create-table 
--region=eu-west-2 
--endpoint-url http://localhost:8000 
--table-name PBA2 
--attribute-definitions 
    AttributeName=PK,AttributeType=S 
    AttributeName=SK,AttributeType=S 
    AttributeName=GSI1PK,AttributeType=S 
    AttributeName=GSI1SK,AttributeType=S 
    AttributeName=GSI2PK,AttributeType=S 
    AttributeName=GSI2SK,AttributeType=S 
    AttributeName=GSI3PK,AttributeType=S 
    AttributeName=GSI3SK,AttributeType=S 
    AttributeName=GSI4PK,AttributeType=S 
    AttributeName=GSI4SK,AttributeType=S 
    AttributeName=GSI5PK,AttributeType=S 
    AttributeName=GSI5SK,AttributeType=S 
--key-schema 
    AttributeName=PK,KeyType=HASH 
    AttributeName=SK,KeyType=RANGE 
--provisioned-throughput ReadCapacityUnits=10,WriteCapacityUnits=10 
--global-secondary-indexes 
'IndexName=GSI1,KeySchema=[{AttributeName=GSI1PK,KeyType=HASH},{AttributeName=GSI1SK,KeyType=RANGE}],Projection={ProjectionType=ALL}' 
'IndexName=GSI2,KeySchema=[{AttributeName=GSI2PK,KeyType=HASH},{AttributeName=GSI2SK,KeyType=RANGE}],Projection={ProjectionType=ALL}' 
'IndexName=GSI3,KeySchema=[{AttributeName=GSI3PK,KeyType=HASH},{AttributeName=GSI3SK,KeyType=RANGE}],Projection={ProjectionType=ALL}' 
'IndexName=GSI4,KeySchema=[{AttributeName=GSI4PK,KeyType=HASH},{AttributeName=GSI4SK,KeyType=RANGE}],Projection={ProjectionType=ALL}' 
'IndexName=GSI5,KeySchema=[{AttributeName=GSI5PK,KeyType=HASH},{AttributeName=GSI5SK,KeyType=RANGE}],Projection={ProjectionType=ALL}' 
ProvisionedThroughput="{ReadCapacityUnits=10,WriteCapacityUnits=10}"

Я пытался следовать этому ответу, но, как вы видите, я не получаю желаемого результата. Как я могу добавить несколько GSI?

Всего 2 ответа


Вы случайно указали ProvisionedThroughput=... как 6-й GSI.

Вместо этого он должен быть (необязательным) атрибутом в каждом из первых 5 GSI. Как то так (цитата по необходимости:

IndexName=GSI1,KeySchema=[{AttributeName=GSI1PK,KeyType=HASH},{AttributeName=GSI1SK,KeyType=RANGE}],Projection={ProjectionType=ALL},ProvisionedThroughput={ReadCapacityUnits=10,WriteCapacityUnits=10} 
IndexName=GSI2,KeySchema=[{AttributeName=GSI2PK,KeyType=HASH},{AttributeName=GSI2SK,KeyType=RANGE}],Projection={ProjectionType=ALL},ProvisionedThroughput={ReadCapacityUnits=10,WriteCapacityUnits=10} 
....

Я наконец понял это:

aws dynamodb create-table 
--region=eu-west-2 
--endpoint-url http://localhost:8000 
--table-name PBA2 
--attribute-definitions 
    AttributeName=PK,AttributeType=S 
    AttributeName=SK,AttributeType=S 
    AttributeName=GSI1PK,AttributeType=S 
    AttributeName=GSI1SK,AttributeType=S 
    AttributeName=GSI2PK,AttributeType=S 
    AttributeName=GSI2SK,AttributeType=S 
    AttributeName=GSI3PK,AttributeType=S 
    AttributeName=GSI3SK,AttributeType=S 
    AttributeName=GSI4PK,AttributeType=S 
    AttributeName=GSI4SK,AttributeType=S 
    AttributeName=GSI5PK,AttributeType=S 
    AttributeName=GSI5SK,AttributeType=S 
--key-schema 
    AttributeName=PK,KeyType=HASH 
    AttributeName=SK,KeyType=RANGE 
--provisioned-throughput ReadCapacityUnits=10,WriteCapacityUnits=10 
--global-secondary-indexes 
IndexName=GSI1,KeySchema=["{AttributeName=GSI1PK,KeyType=HASH}","{AttributeName=GSI1SK,KeyType=RANGE}"],Projection="{ProjectionType=ALL}",ProvisionedThroughput="{ReadCapacityUnits=10,WriteCapacityUnits=10}" 
IndexName=GSI2,KeySchema=["{AttributeName=GSI2PK,KeyType=HASH}","{AttributeName=GSI2SK,KeyType=RANGE}"],Projection="{ProjectionType=ALL}",ProvisionedThroughput="{ReadCapacityUnits=10,WriteCapacityUnits=10}" 
IndexName=GSI3,KeySchema=["{AttributeName=GSI3PK,KeyType=HASH}","{AttributeName=GSI3SK,KeyType=RANGE}"],Projection="{ProjectionType=ALL}",ProvisionedThroughput="{ReadCapacityUnits=10,WriteCapacityUnits=10}" 
IndexName=GSI4,KeySchema=["{AttributeName=GSI4PK,KeyType=HASH}","{AttributeName=GSI4SK,KeyType=RANGE}"],Projection="{ProjectionType=ALL}",ProvisionedThroughput="{ReadCapacityUnits=10,WriteCapacityUnits=10}" 
IndexName=GSI5,KeySchema=["{AttributeName=GSI5PK,KeyType=HASH}","{AttributeName=GSI5SK,KeyType=RANGE}"],Projection="{ProjectionType=ALL}",ProvisionedThroughput="{ReadCapacityUnits=10,WriteCapacityUnits=10}"

Есть идеи?

10000