AWS - вызывать общую задачу Lambda для каждого API - PullRequest
0 голосов
/ 21 апреля 2020

У нас есть требование написать пользовательские журналы для приложения, чтобы фиксировать такие вещи, как, кто, что и когда сделал.

Для этого мы создали лямбда-код для вставки журналов в базу данных DynamoDb. Нам нужно, чтобы эта лямбда вызывалась из общего места каждый раз, когда мы вызываем API из внешнего интерфейса приложения, а не вызываем его в каждой отдельной лямбде.

Мы пытались вызвать ее в API Gateway Authorizer, но она не работает, потому что наш авторизатор шлюза имеет тип 'Token'. Таким образом, он не принимает никаких других параметров, кроме токена доступа. Мы не можем изменить тип пользовательского авторизатора на тип «Запрос», потому что нам нужен токен доступа для авторизации пользователя в Cognito. Вопрос: Есть ли место, где мы можем вызвать эту лямбду-логи, чтобы она выполнялась при вызове каждого API?

Ответы [ 2 ]

0 голосов
/ 21 апреля 2020

попробуйте использовать другой триггер события. Если ваша лямбда может быть вызвана очередью или облачным фронтом, у вас не будет проблем с авторизацией. однако ваше приложение должно взять на себя подходящую роль, чтобы использовать некоторые из них. Если вы используете Java, вы можете перехватить ваш запрос разными способами и сделать лямбда-вызов через SDK перед обработкой API. Нужно больше деталей, чтобы предоставить решение holisti c.

0 голосов
/ 21 апреля 2020

Ваш последний абзац не имеет смысла, но, как правило, лучший способ сделать это - потоковая передача, так как это минимизирует количество Lambda-вызовов, которые вам нужно сделать. путь, текущее время, принципал к потокам журналов Cloudwatch или лямбда.

В этой лямбде вы можете создавать свои собственные логи c. Если у вас есть другие источники, которые будут иметь различные типы событий, вам может понадобиться использовать Kinesis напрямую для потоковой передачи.

...