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

时间:2018-10-24 00:12:12

标签: aws-lambda graphql aws-appsync aws-amplify

我有一个使用AWS Amplify的React应用程序设置。该应用程序的最初目的是充当AWS Appstream的门户。用户可以通过Appstream api登录并启动流实例。

生成流URL的部分是Lambda函数。当前,这是通过AWS sdk从应用程序直接调用的(通过Cognito实现了IAM上下文)。但是,门户网站的功能将不断增长,我可能需要使用api。为此,我正在考虑使用AppSync / GraphQL。

但是我想知道是否可以通过单独使用GraphQL来简化应用程序中的编码模式。也就是说,我可以使用GraphQL / AppSync调用我创建的Lambda函数吗?我想这样做的原因有两个:

  1. 我的主要目标是将Amplify简化为通用协议(在本例中为GraphQL)。这意味着我可以创建在本地运行的门户版本。它还有助于实现我的另一个目标-通过使用GraphQL,它可以使更改云提供商成为可能(无需重新编写所有内容)

  2. 我想在Elm中对该应用程序进行原型设计-看看针对Amplify进行编码是否可行。对于Elm,没有AWS / Amplify库。但是有一个GraphQL库。这可以提供减少互操作的方法

  3. 我可以为Lambda调用添加Rest api,但是最好保持api对一种方法的访问权限

很抱歉,如果这是一个幼稚的问题-我目前正在学习AppSync / GraphQL,Lambda和Amplify。

看看AppSync本身,看来我可以创建一个名为Fleet的对象,并使streamingUrl成为GetFleet()返回的属性。然后,我可以将此属性的解析器附加到Lambda函数。但是,似乎没有明显的方法可以通过Amplify进行配置。我已经通过amplify function add成功地重新创建了Lambda函数,这很好。

是否可以通过Amplify自动执行此操作?也许是创建自己的GraphQL Transform的问题?还是Amplify中已经有东西可以做到这一点,而我只是没有看到它?

2 个答案:

答案 0 :(得分:2)

更新:

AppSync现在似乎可以做到这一点。您可以详细了解herehere

原始答案:

回答有关通过GraphQL调用Lambda的部分问题:

我认为现在可以通过AppSync来实现,但不能通过Amplify来实现。

使用AppSync控制台将允许您创建Lambda解析器-Amplify当前不支持此功能。当您从Amplify发布时,您的解析器将被覆盖。

似乎正在解决此问题:

https://github.com/aws-amplify/amplify-cli/issues/74

https://github.com/aws-amplify/amplify-cli/issues/83

答案 1 :(得分:1)