【发布时间】:2020-05-19 06:27:53
【问题描述】:
我最近开始尝试使用 bref (https://bref.sh/docs/) 包在 Amazon AWS 上将 PHP 用于 Lambda 函数。我可以很好地使用这个包来上传一个简单的 Lambda 函数,尽可能简单:
<?php
require __DIR__.'/vendor/autoload.php';
lambda(function ($event) {
return $event;
});
然后我使用这个 Lambda 函数并开始将它分配给 Cognito 触发器。它非常适合预注册触发器,当我从 Cognito 的管理面板创建新帐户时完全没有问题。
但是,当我采用相同的确切触发器并将其添加到 Pre-authentication Cognito 触发器时,然后使用我在本地运行的简单 Symfony 应用程序对其进行测试,以充当使用 Cognito 的简单身份验证机制(使用本教程开发:@ 987654322@),它立即返回错误:
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"}
当我禁用上面的 lambda 时,它会立即开始工作而不会出现错误,所以问题不在于我的 Symfony 应用程序,而在于 lambda(即使它只是返回给定的事件并适用于其他触发器,如如上所述)。
即使我将其替换为在 Node 中基本上等效的简单 lambda,它也可以正常工作:
exports.handler = async (event) => {
return event;
};
有人知道为什么 PHP lambda 似乎无法与 Cognito 预身份验证触发器一起使用吗?如果可能,我更愿意在 PHP 中执行此操作。
【问题讨论】:
标签: aws-lambda amazon-cognito bref