Политика S3, которая позволяет загружать в подпапку только из пользовательского Cognito `sub`
Цели:
- Ограничить загрузку определенным набором подкаталогов, что помогает бэкэнду определить причину загрузки:
/avatar/...
,/cover/...
- Иметь способ определить Cognito пользователя загрузки
- Запретить другим пользователям переопределять содержимое в подпапке этого пользователя
Имея это в виду, я не могу понять, как ограничить возможность пользователя загружать только в подпапку с именем, полученным из Cognito пользователя sub
идентификатор. Или любая другая строка, из которой я могу идентифицировать и извлечь пользователя из пула когнитивных функций.
Пример: avatar/${aws:cognito-sub}/filename
я нашел aws:userid
в документах, но это относится к:
идентификатор роли: имя, указанное вызывающим абонентом
где идентификатор роли - это уникальный идентификатор роли, а имя-роли-вызывающего абонента указывается параметром RoleSessionName, передаваемым в запрос AssumeRoleWithWebIdentity.
Больше контекста: загрузка обрабатывается в лямбда-выражении. Лямбда преобразует изображение, но затем необходимо сохранить преобразования в другом s3 и сослаться на них пользователю в DynamodB.