用于查询 GraphQL 端点的 Lambda 函数?
Posted
技术标签:
【中文标题】用于查询 GraphQL 端点的 Lambda 函数?【英文标题】:Lambda functions to query the GraphQL endpoint? 【发布时间】:2019-10-11 11:53:21 【问题描述】:如何使用 Lambda 函数在 Node.js 中查询 GraphQL 端点 (AppSync)?我应该使用哪个 GraphQL 客户端?
我见过AWS AppSync javascript SDK,它似乎是用于移动应用程序或反应/前端的。
PS:我不是在谈论 AWS Lambda 解析器。
【问题讨论】:
【参考方案1】:我们使用一个简单的 https 包来查询 graphql。在这种情况下,您可能需要手动形成所有 graphql 查询。如果您想使用处理自动发现和查询对象,您可以使用 apollo-fetch 客户端。简单的 CURL 也可以。
这里详细介绍了所有方法。
https://blog.apollographql.com/4-simple-ways-to-call-a-graphql-api-a6807bcdb355
希望对你有帮助。
【讨论】:
【参考方案2】:如果您使用 AWS_IAM 或 AMAZON_COGNITO_USER_POOLS 作为身份验证类型,我认为 AWS AppSync JavaScript SDK 是一个很大的帮助,您只需按照here 的说明设置您的代码:
"use strict";
/**
* This shows how to use standard Apollo client on Node.js
*/
global.WebSocket = require('ws');
require('es6-promise').polyfill();
require('isomorphic-fetch');
// Require exports file with endpoint and auth info
const aws_exports = require('./aws-exports').default;
// Require AppSync module
const AUTH_TYPE = require('aws-appsync/lib/link/auth-link').AUTH_TYPE;
const AWSAppSyncClient = require('aws-appsync').default;
...
此外,您必须提供凭据
const AWS = require('aws-sdk');
AWS.config.update(
region: aws_exports.REGION,
credentials: new AWS.Credentials(
accessKeyId: aws_exports.AWS_ACCESS_KEY_ID,
secretAccessKey: aws_exports.AWS_SECRET_ACCESS_KEY
)
);
const credentials = AWS.config.credentials;
或者只是检索 Lambda 会话凭据(不要忘记授予 Lambda 执行 GraphQL API 的权限)。
【讨论】:
以上是关于用于查询 GraphQL 端点的 Lambda 函数?的主要内容,如果未能解决你的问题,请参考以下文章
如何将签名的 HTTP 请求从 AWS Lambda 发送到 AppSync GraphQL?
ReactJS - NodeJS - 在 AWS Lambda 上连接到 Graphql 的问题
400 对 GraphQL 端点的错误请求(我的测试查询有啥问题?)