Моя настройка:
- Мобильный Хаб
- Cognito User Pool
- Api Gateway
- DynamoDB
То, что я до сих пор работал:
Пользователь может зарегистрироваться / войти в Cognito User Pool и получить Id и AccessToken.
IdToken используется с авторизатором Api Gateway Cognito для доступа к шлюзу Api.
Работает преобразование пользовательского сабвуфера в сообщение интеграции с DynamoDb.
"userId": {
"S": "$context.authorizer.claims.sub"
}
Ограничение доступа к непользовательским строкам в таблице DynamoDb не работает.
Таблицы DynamoDb были созданы с использованием функции защищенных таблиц мобильных концентраторов, которая создает следующую политику:
"Condition": {
"ForAllValues:StringEquals": {
"dynamodb:LeadingKeys": [
"${cognito-identity.amazonaws.com:sub}"
]
}
}
Но это не работает, потому что это выражение возвращает Identity User Id, а не User Pool Sub. Сначала я не использую Identity Pools, а во-вторых, я хочу использовать User Sub здесь.
Я узнал
${cognito-idp.<REGION>.amazonaws.com/<POOL-ID>:sub}
должен сделать трюк, но это тоже не работает.
Если я жестко закодировал Условие для использования Sub моего тестового пользователя, все работает как положено, поэтому с самой Политикой все в порядке, это только выражение для получения, что sub текущего пользователя не работает правильно.
Можно ли отладить IAM Policys, чтобы увидеть, какие значения выражений находятся во время выполнения?
Есть идеи, советы, предложения?
Заранее спасибо.