Как получить удостоверение личности пользователей Cognito в AWS Lambda - PullRequest
0 голосов
/ 20 октября 2019

В моем проекте AWS я использую API Gateway для создания API, которые вызывают лямбда-функции. API вызываются приложением Android. Я использую пул пользователей Cognito и пул Cognito Identity для управления моими пользователями (аутентифицированными и не прошедшими аутентификацию).

В моих лямбда-функциях мне нужно получить идентификационный идентификатор пользователей. После некоторых исследований я понял, что для этого мне нужно проверить Invoke with caller credentials в запросе на интеграцию моего API.

К сожалению, когда я вызываю свой API, я получаю ошибку 500 со следующим журналом: Execution failed due to configuration error: Invalid permissions on Lambda function. Очевидно, это потому, что роль пула удостоверений Cognito не имеет разрешений лямбда-вызовов для лямбды-бэкенда.

Итак, чтобы иметь возможность получить идентификатор удостоверения в моей функции лямбда-выражений, как я могу добавить эти разрешенияи, если возможно, каков синтаксис CloudFormation для добавления этих разрешений?

Спасибо за вашу помощь.

Ответы [ 2 ]

0 голосов
/ 24 октября 2019

Вот что отсутствовало в моем шаблоне CloudFormation, просто добавьте его в политику Cognito Identity Pool (или политики, если вы имеете дело с неаутентифицированными пользователями):

          - Effect: 'Allow'
            Action:
              - 'lambda:InvokeFunction'
            Resource:
              Fn::Join:
                - ''
                -
                  - 'arn:aws:lambda:'
                  - Ref: AWS::Region
                  - ':'
                  - Ref: AWS::AccountId
                  - ':function:*'
0 голосов
/ 24 октября 2019

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

В AWS API добавлен ли авторизатор, который устанавливает разрешение (разрешить / запретить) дляполучить доступ к API.

Если ваши пользователи находятся в Cognito User Pool, вам не нужен API-шлюз, Lambda и т. Д. Просто используйте AWS Amplify и все запекается в фреймворке.

https://aws -amplify.github.io / docs / js / authentication

Робин

...