用于查询 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 的问题

用于文件下载的 GraphQL 端点

400 对 GraphQL 端点的错误请求(我的测试查询有啥问题?)

从 lambda 调用 AWS AppSync GraphQL API 变异查询

有没有办法在 Magento 2.3 graphql 端点中使用动态过滤器查询产品?