问题标签 [aws-appsync]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
712 浏览

amazon-web-services - Appsync/GraphQL 是实时显示缩减的基于 S3 的时间序列数据的好解决方案吗?

我有包含时间序列样本数据的 JSON 文件被输入到 S3 中。我有一个带有组件的 React 客户端,该组件需要显示最近 x 分钟的样本数据的最新统计平均值。

理想情况下,更新将由 S3 上传触发,而不是浏览器需要轮询 Web 服务。Websockets 和服务器发送事件不是一个选项。考虑到这些要求,我是否可以实际使用 AWS Appsync 的订阅来提供实时数据?

如果需要,我不反对使用中间数据库。我认为查询数据以计算平均值的时间范围的步骤将是有益的,并且我假设我将使用 S3 触发 Lambda 并使用它将 S3 对象数据拉入数据库。

亚马逊在 2 月宣布增加本地解析器

例如,Lambda 函数可以调用 AWS AppSync 的 GraphQL 突变以响应发生的某些事件,例如处理上传到 S3 存储桶的数据

这听起来很有希望,但我找不到任何涉及本地解析器和 Lambda/S3 的示例。我能找到的唯一文档是here

编辑:

在阅读了 GraphQL 之后,我了解了 API,看来我应该能够在 lambda 中使用 HTTP 客户端来进行突变。用 curl 试过这个,它起作用了:

有了这个,我想我现在可以通过 Lambda 调用“addIntervalData”突变,将每个 S3 对象的内容添加到数据库中,并使用 lambda 解析器来实现“getAverage”并进行平均计算。似乎是个好方向?

0 投票
1 回答
1204 浏览

amazon-dynamodb - 错误:与数据源关联的解析器

我遇到了无服务器错误: Resolver associated with data sources从 serverless.yml 配置文件构建时:

我也有一个 schema.graphql:

我找不到关于此错误含义的任何线索,并且我无法从构建日志中获得任何其他信息。

0 投票
1 回答
1091 浏览

amazon-dynamodb - AppSync 中使用 IAM 身份验证的组授权

我的服务需要用户组来授权访问数据。

AppSync 文档中的组授权示例基于用户池声明。我正在使用 IAM 身份验证,因此 $context.identity 不包含声明或任何类似信息。

例如,请参阅主题“用例:组可以创建新记录”: https ://docs.aws.amazon.com/appsync/latest/devguide/security-authorization-use-cases.html

我希望只从用户表中检查用户是否在授予此权限的组中。但是,DynamoDB 条件似乎不支持查询其他表。

0 投票
2 回答
5295 浏览

amazon-web-services - AWS AppSync 订阅参数

AppSync GraphQL 订阅上的参数可以用来做什么?根据文档上的实时数据页面:

使用 GraphQL 订阅的一个重要部分是了解何时以及如何使用参数,因为细微的变化将允许您修改通知客户端发生突变的方式和时间。(...) 在默认示例中,客户端可以在传递特定 eventId 参数时订阅 Comments

不过,我找不到任何访问订阅参数的方法。我有不同的评论“频道”,我希望用户能够单独订阅,可选择使用密码。我设置的订阅会响应所有频道中的评论。

有什么方法可以通过映射模板或类似模板“过滤”订阅中的数据?如果不是,订阅参数的预期用途是什么?过滤必须在客户端完成吗?

0 投票
1 回答
1395 浏览

amazon-web-services - AppSync S3Object 检索

根据提供的教程,我的文件目前正在上传到 s3 存储桶。

我有一个带有指向 S3Object 的文件字段的 Post 类型。S3Object 有 bucket、key 和 region 的值。

我想允许我的用户下载他们上传的文件,但我无法通过查询访问 Post > 文件。这意味着我无法获取下载 URL。

现在,DynamoDB 在上传时为文件存储以下内容(我在此处更改了值): {"s3":{"key":"id.pdf","bucket":"my-bucket","region":"my-region"}}

我的 Post > 文件解析器如下所示: { "version": "2017-02-28", "operation": "GetItem", "key": { "id": $util.dynamodb.toDynamoDBJson($ctx.source.id), } }

响应模板: $util.dynamodb.fromS3ObjectJson($ctx.result.file)

当我运行查询时,我收到以下错误: Error: GraphQL error: Unable to convert {bucket=my-bucket, region=my-region, key=id.pdf} to class java.lang.Object.

0 投票
2 回答
1690 浏览

javascript - 将 AWS Appsync 订阅与 Node JS 和 EJS 一起使用时遇到问题

这是我在这里的第一个问题,我最近才开始编写 Node JS 代码。现在我正在使用 NodeJS 和 EJS 作为我的应用程序的模板引擎。我的数据库是 DynamoDB,我想通过使用 AWS Appsync 来制作一个实时表。使用 Appsync,我可以查询和更改表中的字段,但我似乎无法订阅任何更改。当我调用订阅时,也没有打开任何 MQTT websocket。

我尝试按照 Appsync 文档中的 Appsync 订阅示例进行操作,但它似乎不起作用。

注意:我已经定义了我的 infoID 变量,类型信息{} 是在模式中创建的,mutate 和 query 都可以工作。只是订阅不起作用,并且没有在模板上创建 MQTT websocket(这甚至可以使用 NodeJS 和 EJS 吗?)。

我的架构如下:

而我用来查询和订阅的代码是这样的:

我的突变代码是:

感谢任何回答或阅读或以任何方式提供帮助的人!

0 投票
2 回答
4418 浏览

aws-lambda - AWS Appsync 从 Lambda 调用变异?

我有一个订阅 Appysync 事件的客户端应用程序。数据源是 RDS 的 Lambda 函数。是否可以从 RDS 更新时触发的 Lambda 函数调用 mutate?

0 投票
4 回答
11354 浏览

amazon-web-services - AWS Cognito/Amplify - 将新用户注册自动添加到用户组

我正在使用 AWS Amplify 库为 AppSync 项目注册并执行身份验证。这使用 Cognito。但是,当新用户通过 Amplify/Cognito 注册时,新用户不会分配到 cognito 池中的任何特定组。我正在使用 Amplify 高阶组件进行登录/注册。

我包裹了一个组件

Amplify 在 index.js 中设置

aws-exports.js 由 AWS Mobile Hub CLI 自动生成。好像...

0 投票
0 回答
69 浏览

amazon-web-services - 无法共享 AppSync 所有权

我是 AWS 新手,正在尝试使用 AppSync。我想与我的同事共享访问权限,但我似乎无法让它发挥作用。我尝试过创建一个组织并将他添加到其中,并启用所有组织功能。

0 投票
1 回答
419 浏览

reactjs - 当用户不一定经过身份验证时,如何拥有根级别的 AppSync/Apollo 客户端?

对于背景,我正在使用 react、redux、react-router(v4)、react-cognito 和 appsync。我的应用程序使用PrivateRoute来确保用户对请求的每个路由都有授权。react-cognito 为我处理所有身份验证并将 JWT 令牌、联合身份临时 IAM 访问密钥/秘密访问密钥/会话令牌存储在 redux 存储中。

AppSync 教程假设您使用的是 AWS-amplify 而不是 react-cognito,并将其置于<ApolloProvider client = {this.client}>根应用程序级别,其中

就我而言,在根组件安装时,react-cognito 商店中还没有任何内容(我的一半 SPA 是公开的,不需要身份验证),我不确定在安装时可以调用什么异步函数来拉取这个似乎可用在上面的例子中完成。

目前我已经通过将 ApolloProvider 放在组件级别解决了这个问题,只针对需要它并且存在于 PrivateRoutes 中的组件(因此在商店中会有可用的凭证信息),但这会导致代码重复并且感觉不对。

没有迁移到 aws-amplify,有什么建议可以重构它吗?