Сканирование на IAM-области DynamoDB таблицы - PullRequest
0 голосов
/ 28 мая 2018

У меня есть таблица, которая позволяет пользователям (прошедшим проверку подлинности через Cognito) читать и записывать только свои собственные записи, включенные политикой IAM, как показано ниже:

"Condition": {
                "ForAllValues:StringEquals": {
                    "dynamodb:LeadingKeys": [
                        "${cognito-identity.amazonaws.com:sub}"
                    ]
                 }
             }

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

При выполнении сканирования, DynamoDB сначала применяет область действия пользователя к таблице (таким образом, единственными отсканированными документами будут документы пользователя), или сканирование будет использовать всю таблицу, а затем применяет политику для области действия записей?

Смысл этого вопроса в том, насколько эффективна проверка - если будет сканироваться вся таблица, то операция будет очень дорогой, но если только собственные записи пользователя (небольшая часть таблицы)сканируются, тогда сканирование может быть приемлемо эффективным.

1 Ответ

0 голосов
/ 29 мая 2018

Рекомендуется разрабатывать приложение для использования запросов вместо сканирований.Сканирование дорогое и сканирует всю таблицу по определению.Согласно документации Dynamodb Scan and Query Best Practice :

Если возможно, следует избегать использования операции сканирования для большой таблицы или индекса с фильтром, удаляющим много результатов

То, что вы предлагаете, является именно этим сценарием.Пожалуйста, рассмотрите редизайн, чтобы избежать этого.

Модуль безопасности IAM будет выполнять работу по предотвращению редактирования данных других пользователей, но для одного пользователя сканирование должно будет удалить файлы других пользователей из проверки и будет дорогостоящим.

...