Как использовать Dynamodb: LeadingKeys, когда ключ раздела имеет более одного вида значений

Dec 25 2020

В моих таблицах Dynamo в качестве ключа раздела в моем мультитенантном приложении используется tenant_id, но в моем ключе раздела также есть другие типы сущностей в дополнение к tenant_id.

Например: (Это небольшой пример, мы используем этот шаблон повсюду)

PK                                        SK                               Att
Customer-4312a674-54a                  user-abc                            672453782
user-abc                                   user-abc                            672453782

Я хотел бы использовать, dynamodb:LeadingKeysчтобы данные одного арендатора никогда не были доступны другому арендатору. Как я могу это сделать в этом случае, когда PKон перегружен и в нем есть другие объекты.

Ответы

1 Maurice Dec 28 2020 at 17:41

В мультитенантной системе я бы рекомендовал добавить tenant-id в качестве префикса к ключу раздела всех элементов, принадлежащих арендатору. Таким образом, вы можете использовать dynamodb:LeadingKeysусловие для контроля доступа.

В любом случае идентификатор клиента должен быть известен во время запроса для каждого запроса, я предполагаю, что он, вероятно, хранится в информации о сеансе. Это означает, что вы можете добавить идентификатор клиента к каждому ключу и по-прежнему выполнять перегрузку ключа раздела.