Разрешить пользователям API запускать AWS Lambda с использованием роли выполнения из пула идентификации Cognito - PullRequest
0 голосов
/ 03 октября 2018

Я использую AWS Ampify для создания приложения, в которое пользователи могут загружать изображения, используя уровни доступа к частным или общедоступным файлам, как описано в документации.Помимо этого, я реализовал лямбда-функцию, которая по запросу через API-шлюз изменяет изображение и возвращает ссылку на измененное изображение.

Я хочу, чтобы данный пользователь мог вызывать API иизменять только свои изображения, но не изображения других пользователей;т.е. разрешить лямбда-функции AWS использовать роль выполнения от пользователя cognito.Если я позволю лямбда-функции получить доступ ко всем данным в корзине S3, то она будет работать нормально, но я не хочу, чтобы пользователи могли иметь доступ к изображениям других пользователей.теперь пробую разные вещи безрезультатно.

Теперь я интегрировал API с пулом пользователей, как описано здесь: https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-enable-cognito-user-pool.html

И затем я попытался следовать этому руководству:https://aws.amazon.com/premiumsupport/knowledge-center/cognito-user-pool-group/

Что не работает, так как «cognito: role» отсутствует в переменной события lambda_handler (предположительно, потому что нет групп пула пользователей?).

Как правильно поступить в приложении AWS Amplify?Прежде всего, я следовал этому руководству: https://aws.amazon.com/premiumsupport/knowledge-center/cognito-user-pool-group/

1 Ответ

0 голосов
/ 02 апреля 2019

Использовать сопоставление запросов к API-шлюзу и проверять разрешения в самой Lambda :

  1. Использовать сопоставление запросов к API-шлюзу для передачи context.identity.cognitoIdentityId к лямбде.Просто это должна быть лямбда-интеграция с отображением (а не интеграция с прокси).Другое ограничение состоит в том, что запрос API должен быть POST, для GET это также возможно, если вы сопоставите cognitoIdentityId с строкой запроса .

  2. Lambda имеет доступ ко всем файлам в S3

  3. Реализовать проверку контроля доступа в самой Lambda.Лямбда может читать все разрешения файла в S3.А затем посмотрите, является ли владелец Cognito.

...