AWS AppSync Lambda authoriser always results in "Error: Request failed with status code 401"

AWS AppSync Lambda authoriser always results in "Error: Request failed with status code 401"

我目前正在尝试使用 AWS AppSync,我正在尝试使用 Lambda 授权者功能为 GraphQL API.

执行一些自定义身份验证

我使用正确的基于资源的策略设置了 Lambda 函数,以允许 AppSync 调用该函数,并且我将 AppSync 的 Default authorization mode 设置为调用我的 Lambda。

这是我的 lambda 代码:

exports.handler = (event) => {
  console.log(JSON.stringify(event));
  const response = {
    isAuthorized: true,
  };
  console.log(JSON.stringify(response));
  return response;
};

现在我面临的问题是,当我尝试 运行 GraphQL 采石场时,Lambda 授权者总是给我以下错误:

Error: Request failed with status code 401

这个问题调试了两个小时后,我可以说一下:

据我所知,一切都应该如此,但无论我做什么,我仍然得到 401,我感到非常沮丧。

经过一些非常令人沮丧的调试后,我终于发现问题出在 Lambda 处理程序函数上。事实证明,Node.js lambda 处理程序应该是异步的。

因此将 lambda 更改为以下代码可以解决问题:

exports.handler = async (event) => {
    console.log(JSON.stringify(event));
    const response = {
        isAuthorized: true,
    };
    console.log(JSON.stringify(response));
    return response;
};

我不知道这一点,因为直到没有我只对 Lambda 使用 Python,而且问题很难发现,因为 console.log 仍然 运行 正确所以我虽然函数返回了正确的数据,但实际上它返回了 null.