Node.js 如何从nodejs中的另一个lambda调用graphql lambda?
我按照以下说明创建了graphql lambda: 它可以与API网关配合使用。但是,我需要从另一个lambda调用这个lambda函数。我想我需要在另一个lambda函数中放入Node.js 如何从nodejs中的另一个lambda调用graphql lambda?,node.js,amazon-web-services,aws-lambda,graphql,Node.js,Amazon Web Services,Aws Lambda,Graphql,我按照以下说明创建了graphql lambda: 它可以与API网关配合使用。但是,我需要从另一个lambda调用这个lambda函数。我想我需要在另一个lambda函数中放入ApolloClient,以便发送graphql请求。但是,它不起作用,因为我无法选择调用lambda的正确链接。 因此,我正在寻找如何以编程方式构建graphql请求。我可以将请求作为事件发送以触发graphql lambda 有办法吗 例如,如果我有一个变异请求,如: mutation sendMessage {
ApolloClient
,以便发送graphql请求。但是,它不起作用,因为我无法选择调用lambda的正确链接。
因此,我正在寻找如何以编程方式构建graphql请求。我可以将请求作为事件发送以触发graphql lambda
有办法吗
例如,如果我有一个变异请求,如:
mutation sendMessage {
sendMessage(text: "hello"){
text
}
我需要找到一种方法将请求转换为以下有效负载:
{"id":"1","type":"start","payload":{"variables":{},"extensions":{},"operationName":"sendMessage","query":"mutation sendMessage {\\n sendMessage(text: \\"hello\\") {\\n text\\n __typename\\n }\\n}\\n"}}
然后我将此有效负载发送到graphql lambda函数您可以使用graphql客户端通过使用HTTP的API网关端点执行graphql请求 假设您有一个指向graphQL服务器的API网关端点,您可以从另一个lambda向该端点执行graphQL请求 对服务器的GraphQL查询只是以某种方式格式化的常规
POST
请求。因此,如果需要,可以使用任何服务器端HTTP客户端来执行该请求。然而,使用像这样的库会使它简单得多
您可以使用包执行服务器端graphQL请求
import { request } from 'graphql-request'
const endpoint="https://your-api-gateway-endpoint";
const headers = {
"x-api-key": 'api-gateway-key' // if your endpoint requires API key
};
const client = new GraphQLClient(endpoint, { headers });
const query = `{
mutation sendMessage {
sendMessage(text: "hello"){
text
}
}`;
const data = await client.request(query);
console.log(JSON.stringify(data, undefined, 2));
您可以使用graphQL客户端通过API网关端点使用HTTP执行graphQL请求 假设您有一个指向graphQL服务器的API网关端点,您可以从另一个lambda向该端点执行graphQL请求 对服务器的GraphQL查询只是以某种方式格式化的常规
POST
请求。因此,如果需要,可以使用任何服务器端HTTP客户端来执行该请求。然而,使用像这样的库会使它简单得多
您可以使用包执行服务器端graphQL请求
import { request } from 'graphql-request'
const endpoint="https://your-api-gateway-endpoint";
const headers = {
"x-api-key": 'api-gateway-key' // if your endpoint requires API key
};
const client = new GraphQLClient(endpoint, { headers });
const query = `{
mutation sendMessage {
sendMessage(text: "hello"){
text
}
}`;
const data = await client.request(query);
console.log(JSON.stringify(data, undefined, 2));
我考虑过这个解决方案,但它会为请求提供更多的延迟。它将请求发送到API网关,网关将其转发到不太好的lambda。有没有一种方法可以在lambda中生成graphql请求负载并将其直接发送到graphql lambda?我认为使用lambda调用不是一个好主意,即使它是可能的。由于您的客户机lambda将一直运行到您的服务器lambda,因此您将为更高的lambda使用率付费。延迟将以毫秒为单位,所以我不会担心。我考虑过这个解决方案,但它会为请求提供更多的延迟。它将请求发送到API网关,网关将其转发到不太好的lambda。有没有一种方法可以在lambda中生成graphql请求负载并将其直接发送到graphql lambda?我认为使用lambda调用不是一个好主意,即使它是可能的。由于您的客户机lambda将一直运行到您的服务器lambda,因此您将为更高的lambda使用率付费。延迟将以毫秒为单位,所以我不会担心。