当前位置: 首页 > 知识库问答 >
问题:

使用Amplify?为AppSync自动化Lambda解析器?

葛高澹
2023-03-14

我有一个带有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转换的问题?或者放大器中已经有东西可以做到这一点,而我只是没有看到它?

  • 共有2个答案

    宰父飞翼
    2023-03-14

    更新:

    似乎这在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

    呼延永新
    2023-03-14

    是的,你可以在放大上做这个。

    放大:https://aws-amplify.github.io/docs/cli-toolchain/graphql#function

    AWS AppSync(也值得一读,以获得有用的一般指南):https://docs.aws.amazon.com/appsync/latest/devguide/tutorial-lambda-resolvers.html

    演练代码回购:

    • https://dev.to/dabit3/lambda-function-graphql-resolvers-11cd
     类似资料:
    • 我是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部分生成代码。 最初我使用: