Время ожидания AWS Lambda после запроса GraphQL в AWS AppSync - PullRequest
0 голосов
/ 01 декабря 2018

Я развернул оконечную точку AWS AppSync GraphQL с Amplify, следуя этому руководству:

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

Я создал функцию Lambda с Node.js и TypeScript для запроса данных:

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);
}

Теперь, когда я вызываю функцию Lambda через HTTP, она получает данные и регистрирует их вконсоль.Но он никогда не завершает запрос и не отвечает, он всегда работает по таймауту, даже если я увеличу тайм-аут до 30 секунд.То же самое происходит для запуска мутации и вставки данных.

Есть идеи, что может быть не так?

1 Ответ

0 голосов
/ 02 декабря 2018

Проблема в том, что вы смешиваете свои лямбда-сигнатуры.

Либо вы используете async и return (или 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);
}
...