Как использовать Dynamodb: LeadingKeys, когда ключ раздела имеет более одного вида значений
В моих таблицах Dynamo в качестве ключа раздела в моем мультитенантном приложении используется tenant_id, но в моем ключе раздела также есть другие типы сущностей в дополнение к tenant_id.
Например: (Это небольшой пример, мы используем этот шаблон повсюду)
PK SK Att
Customer-4312a674-54a user-abc 672453782
user-abc user-abc 672453782
Я хотел бы использовать, dynamodb:LeadingKeys
чтобы данные одного арендатора никогда не были доступны другому арендатору. Как я могу это сделать в этом случае, когда PK
он перегружен и в нем есть другие объекты.
Ответы
В мультитенантной системе я бы рекомендовал добавить tenant-id в качестве префикса к ключу раздела всех элементов, принадлежащих арендатору. Таким образом, вы можете использовать dynamodb:LeadingKeys
условие для контроля доступа.
В любом случае идентификатор клиента должен быть известен во время запроса для каждого запроса, я предполагаю, что он, вероятно, хранится в информации о сеансе. Это означает, что вы можете добавить идентификатор клиента к каждому ключу и по-прежнему выполнять перегрузку ключа раздела.