我有一个带有AWS Amplify的React应用程序设置。该应用程序的最初目的是充当AWS Appstream的门户。用户可以通过Appstream api登录并启动流实例。
生成流url的部分是Lambda函数。目前,这是通过AWS sdk直接从应用程序调用的(IAM上下文通过Cognito实现)。然而,门户的功能将不断增长,我可能需要一个api。为此,我考虑使用AppSync/GraphQL。
但是我想知道我是否可以通过专门使用GraphQL来简化应用程序中的编码模式。也就是说,我可以使用GraphQL/AppSync调用我创建的Lambda函数吗?我想这么做有几个原因:
>
我的主要目标是将放大器简化为通用协议(在本例中为GraphQL)。这意味着我可以创建在本地运行的门户版本。它还有助于支持我的另一个目标——通过使用GraphQL,它可以使改变云提供商成为可能(无需重写所有内容)
我想在榆树中原型应用程序——看看针对放大器编码是否实用。与榆树有没有AWS/放大器库。但是有一个GraphQL库。这可以提供一种减少互操作的方法
我可以为Lambda调用添加一个restapi,但最好保持api对一个方法的访问
抱歉,如果这是一个幼稚的问题-我目前正在学习AppSync/GraphQL、Lambda和Amplify。
看看AppSync本身,我似乎可以创建一个名为Fleet
的对象,并将streamingUrl
作为GetFleet()
返回的属性。然后,我可以为这个属性的Lambda函数附加一个解析器。然而,似乎没有明显的方法通过放大来配置它。我已经通过放大函数add
成功地重新创建了Lambda函数,这很好。
有没有办法通过放大器实现自动化?也许这是一个创建我自己的GraphQL转换的问题?或者放大器中已经有东西可以做到这一点,而我只是没有看到它?
更新:
似乎这在AppSync中是可能的。你可以在这里和这里阅读更多关于它的信息
原始答复:
在回答关于通过GraphQL调用Lambda的部分问题:
我认为这在AppSync中是可能的,但在Amplify中是不可能的。
使用AppSync控制台将允许您创建Lambda解析器-Amplify当前不支持此操作。从“放大”发布时,解析程序将被覆盖。
似乎正在研究这个问题:
https://github.com/aws-amplify/amplify-cli/issues/74
https://github.com/aws-amplify/amplify-cli/issues/83
是的,你可以在放大上做这个。
放大:https://aws-amplify.github.io/docs/cli-toolchain/graphql#function
AWS AppSync(也值得一读,以获得有用的一般指南):https://docs.aws.amazon.com/appsync/latest/devguide/tutorial-lambda-resolvers.html
演练代码回购:
我是AWS的新手。我有appsync模型、查询和由amplify和use DynamoDB创建的突变。我需要向DynamoDB添加新的timestamp字段,以防一个特定字段被更新。我找到的唯一方法应该是Lambda函数,并将此函数用作突变更新任务的自定义解析器。所以我创建了它(它基本上只是检查特定字段是否已更新,如果已更新,它将把updateXY设置为当前时间戳。我返回已更改的对象)。问题是,如
Amplify是否支持此处概述的脱机功能:https://docs.aws.amazon.com/appsync/latest/devguide/building-a-client-app-react.html#offline-背景 我应该这样设置吗?https://aws.github.io/aws-amplify/media/api_guide#configuration-for-graphq
我对GraphQL,Appsync和放大器非常陌生。我使用AWS AppSync与放大器通过GraphQL查询从DynamoDB表获取记录。前端在ReactJS中。看看aws文档上的一些例子,我似乎可以用JSON格式获取记录,就像它存储在表中一样。我想找到一些留档或示例,说明如何迭代返回的记录集,并在返回的数据发送回客户端之前对其执行一些计算。但是我无法将在线留档与我想要实现的目标联系起来。 例如
我有一个使用Amplify(使用AppSync API和Cognito)制作的工作应用程序。我想制作另一个不同的应用程序,但与我的第一个项目共享一些数据(相同的产品,但不同的目标、用法和安全规则)。 有没有一种干净的方法可以在新项目中使用Amplify,告诉GraphQLAPI从我的第一个Amplify项目中获取DynamoDB中的一些数据? 这些数据会经常变化,而且会很重——所以我不太喜欢任何同
我为appsync迁移了一个Flatter本地插件来放大。现在我想知道在appsync控制台中更新GraphQL之后,如何在我的Flatter项目的android部分生成代码。 最初我使用: