Я недавно начал экспериментировать с использованием пакета bref (https://bref.sh/docs/) для использования PHP для функций Lambda на Amazon AWS. Я могу прекрасно использовать этот пакет для загрузки простой лямбда-функции, настолько простой, насколько это возможно:
<?php
require __DIR__.'/vendor/autoload.php';
lambda(function ($event) {
return $event;
});
Затем я беру эту лямбда-функцию и начинаю назначать ее триггерам Cognito. Он отлично работает для триггера предварительной регистрации, никаких проблем с ним не возникает, когда я создаю новую учетную запись из админ-панели в Cognito.
Однако, когда я беру этот же точный триггер и добавляю его в Pre -authentication Триггер Cognito, затем протестируйте его с помощью простого Symfony приложения, которое я запускаю локально, чтобы действовать как простой механизм аутентификации с использованием Cognito (разработанного с использованием этого руководства: https://tech.mybuilder.com/managing-authentication-in-your-symfony-project-with-aws-cognito/), оно немедленно возвращает ошибку :
Error executing "AdminInitiateAuth" on "https://cognito-idp.us-east-2.amazonaws.com"; AWS HTTP error: Client error: `POST https://cognito-idp.us-east-2.amazonaws.com` resulted in a `400 Bad Request` response:
{"__type":"InvalidLambdaResponseException","message":"Unrecognizable lambda output"}
InvalidLambdaResponseException (client): Unrecognizable lambda output - {"__type":"InvalidLambdaResponseException","message":"Unrecognizable lambda output"}
Когда я отключаю лямбду, указанную выше, она сразу начинает работать без ошибок, поэтому проблема не в моем приложении Symfony, а в лямбде (хотя оно просто возвращает событие, которое оно возвращает) предоставляется и работает для других триггеров, как отмечено выше).
Даже когда я заменяю это простой лямбдой, которая в основном эквивалентна Node, она отлично работает:
exports.handler = async (event) => {
return event;
};
У кого-нибудь есть идеи, почему лямбда PHP не работает с триггером предварительной аутентификации Cognito? Я бы предпочел сделать это в PHP, если это возможно.