【问题标题】:AWS Lambda timeout after GraphQL query on AWS AppSync在 AWS AppSync 上查询 GraphQL 后 AWS Lambda 超时
【发布时间】:2019-05-03 12:03:04
【问题描述】:

我按照本教程使用 Amplify 部署了 AWS AppSync GraphQL 终端节点:

https://aws-amplify.github.io/docs/js/api#amplify-graphql-client

我用 Node.js 和 TypeScript 创建了一个 Lambda 函数来查询数据:

import { APIGatewayEvent, Callback, Context, Handler } from 'aws-lambda';
import Amplify, { API, graphqlOperation } from "aws-amplify";
import * as queries from './src/graphql/queries';
import * as mutations from './src/graphql/mutations';
import { CreateBlogInput } from './src/API';
import aws_config from "./src/aws-exports";

Amplify.configure(aws_config);

export const list: Handler = async (event: APIGatewayEvent, context: Context, cb: Callback) => {
  const allBlogs = await API.graphql(graphqlOperation(queries.listBlogs));

  // this seems to be working
  console.log(JSON.stringify(allBlogs));

  const response = {
    statusCode: 200,
    body: JSON.stringify(allBlogs),
  };

  cb(null, response);
}

现在,当我通过 HTTP 调用 Lambda 函数时,它会检索数据并将其记录到控制台。但它永远不会完成请求并做出响应,它总是会超时,即使我将超时时间增加到 30 秒。运行突变和插入数据也是如此。

有什么想法可能是错的吗?

【问题讨论】:

  • 您的 Lambda 函数是什么样的?从您的第一个console.log 语句到通过aws-amplify 的AppSync API,它似乎工作正常?此外,请捕获requestIds、响应状态码、响应标头等。您是否尝试单独调用Lambda?我不确定你的问题是什么超时。
  • 贴出的代码是我的 lambda 函数。它一直执行到第一个 console.log ,然后没有响应。回调似乎没有被调用。

标签: amazon-web-services aws-lambda graphql aws-appsync aws-amplify


【解决方案1】:

这里的问题是你混合了你的 lambda 签名。

要么你使用asyncreturn(或者throw以防出错):

export const list: Handler = async (event: APIGatewayEvent, context: Context, cb: Callback) => {
  // ... rest of function

  return response;
}

或者你不使用async而你使用callback函数:

export const list: Handler = (event: APIGatewayEvent, context: Context, cb: Callback) => {
  // ... rest of function

  cb(null, response);
}

【讨论】:

  • 这正是问题所在!你能解释一下原因吗?过去我经常在 Node.js 中使用异步和回调的组合,从来没有遇到过这样的问题。
  • 你必须记住,这不仅仅是一个函数,它是 AWS 调用的东西——所以你必须遵守他们的规则。在这种情况下,当您从异步方法返回时,您会让 AWS 等待您的函数返回某些内容。
猜你喜欢
  • 2021-07-17
  • 2021-09-13
  • 1970-01-01
  • 2020-09-10
  • 2016-01-15
  • 2019-05-13
  • 2021-02-08
  • 2018-10-11
  • 2020-04-17
相关资源
最近更新 更多