我有一个使用AWS Amplify的React应用程序设置。该应用程序的最初目的是充当AWS Appstream的门户。用户可以通过Appstream api登录和启动流媒体实例。
生成流式URL的部分是Lambda函数。目前,这是通过AWS sdk直接从应用程序调用的(IAM上下文通过Cognito实现)。但是,门户网站的功能会增长,我可能需要api。为此,我正在考虑使用AppSync / GraphQL。
但我想知道我是否可以通过使用GraphQL来简化应用程序中的编码模式。也就是说,我可以使用GraphQL / AppSync来调用我创建的Lambda函数吗?我想这样做有几个原因:
对不起,如果这是一个天真的问题 - 我正在学习AppSync / GraphQL,Lambda和Amplify。
看看AppSync本身,似乎我可以创建一个名为Fleet
的对象,并使streamingUrl
成为GetFleet()
返回的属性。然后,我可以将解析器附加到此属性的Lambda函数。但是,似乎没有明显的方法通过Amplify配置它。我已经通过amplify function add
成功地重新创建了我的Lambda函数,这很不错。
有没有办法通过Amplify实现自动化?也许这是创建我自己的GraphQL Transform的问题?或者在Amplify中有什么东西可以做到这一点,我只是没有看到它?
更新:
现在似乎可以通过AppSync实现。你可以阅读更多关于它here和here
原始答案:
回答关于通过GraphQL调用Lambda的问题部分:
我认为现在可以使用AppSync,但不能使用Amplify。
使用AppSync控制台将允许您创建Lambda解析器 - Amplify目前不支持此功能。当您从Amplify发布时,您的解析器将被覆盖。
看来这个问题正在解决:
是的,你可以在Amplify上做到这一点。
放大:https://aws-amplify.github.io/docs/cli-toolchain/graphql#function
AWS AppSync(值得一读也是有用的一般指导):https://docs.aws.amazon.com/appsync/latest/devguide/tutorial-lambda-resolvers.html
演练+代码回购: