Не могу добавить вторичный индекс для dynamicodb в cdk, используя python - PullRequest
0 голосов
/ 11 октября 2019

Я пытаюсь создать таблицу DynamoDB со вторичным индексом с разделом и ключом сортировки. Я могу создать таблицу без вторичного индекса, но пока не смог найти способ добавить вторичный индекс

Я просмотрел оба этих ресурса, но не нашел ничего, что на самом делепоказывает, какой код мне нужен в моем скрипте cdk python для создания ресурса со вторичным индексом https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-dynamodb.Table.html https://docs.aws.amazon.com/cdk/api/latest/docs/aws-dynamodb-readme.html

Это код, который создаст таблицу

table_name = 'event-table-name'
    event_table = dynamoDB.Table(self, 'EventsTable',
         table_name=table_name,
         partition_key=Attribute(
             name='composite',
             type=AttributeType.STRING
         ),
         sort_key=Attribute(
             name='switch_ref',
             type=AttributeType.STRING
         ),
         removal_policy=core.RemovalPolicy.DESTROY,
         billing_mode=BillingMode.PAY_PER_REQUEST,
         stream=StreamViewType.NEW_IMAGE,
                                 )

и это вторичный индекс, который мне нужно прикрепить к нему

secondaryIndex = dynamoDB.GlobalSecondaryIndexProps(
        index_name='mpan-status-index',
        partition_key=Attribute(
            name='field1',
            type=AttributeType.STRING
        ),
        sort_key=Attribute(
            name='field2',
            type=AttributeType.STRING
        ),
    )

Я попытался добавить блок внутри создания таблицы и попытался вызвать метод addSecondaryindex для таблицы. Но оба они терпят неудачу либо говорят, что неожиданное ключевое слово, либо объект не имеет атрибута addGlobalSecondaryIndex

Ответы [ 2 ]

0 голосов
/ 12 октября 2019

addGlobalSecondaryIndex должен вызываться для класса Table.

Код ниже (в машинописном тексте) прекрасно работает для меня:

const table = new ddb.Table(this, "EventsTable", {
  tableName: "event-table-name",
  partitionKey: { name: 'composite', type: ddb.AttributeType.STRING },
  sortKey: { name: 'switch_ref', type: ddb.AttributeType.STRING },
  removalPolicy: cdk.RemovalPolicy.DESTROY,
  billingMode: BillingMode.PAY_PER_REQUEST,
  stream: StreamViewType.NEW_IMAGE
});
table.addGlobalSecondaryIndex({
  indexName: 'mpan-status-idex',
  partitionKey: { name: 'field1', type: ddb.AttributeType.STRING },
  sortKey:  { name: 'field2', type: ddb.AttributeType.STRING }
});
0 голосов
/ 11 октября 2019

Вы пытались использовать метод addGlobalSecondaryIndex, как в

event_table.addGlobalSecondaryIndex({indexName: "...", partitionKey: "...", ...})

Взгляните на документацию для метода.

...