AWS Amplify 和无服务器堆栈

Posted

技术标签:

【中文标题】AWS Amplify 和无服务器堆栈【英文标题】:AWS Amplify & Serverless-Stack 【发布时间】:2019-11-15 21:03:51 【问题描述】:

我目前正在研究AWS Amplify 以及正在阅读Serverless Stack。我的目标是创建一个简单的 ToDo 列表应用程序。 “入门”/文档似乎都有相同的目标。但是,AWS Amplify 指南似乎比设置更容易。

这就是我感到困惑的地方。据我了解,AWS Amplify 还使用 DynamoDB 并通过 GraphQL 获取数据。但是这两个文档的区别在哪里呢?

【问题讨论】:

@JC - serverless-stack.com 有一个非常详细的教程,介绍了以传统 REST API 的形式构建无服务器 API 并使用 AWS Cognito 进行身份验证。而 AWS-Amplify 正在使用 API kes 身份验证构建 GraphQL API。相同的概念 - 有点不同的实现。 【参考方案1】:

无服务器堆栈是一种资源,提供有关如何使用 AWS 创建无服务器应用程序的指导。它是由一家名为 Anomaly Innovations 的公司创建的。

AWS Amplify 是由 AWS 维护的开源框架,可帮助开发人员将其应用程序与 AWS 资源集成。

【讨论】:

【参考方案2】:

AWS Amplify 是一项非常令人困惑的服务,由许多组件组成。我会分类如下。

    AWS Amplify 控制台 AWS Amplify CLI 可集成到您的移动设备或网络的 AWS 开发工具包和库 AWS Appsync 转换器

AWS Amplify 控制台使您能够轻松地为您的 Amplify 项目设置持续部署。 Amplify 控制台与 AWS Amplify CLI 一起使用,让您管理不同的环境。 假设您要启动 Todo 应用程序。您从本地开始使用 Amplify CLI 并创建 API Gateway/Lambda/DynamoDB 堆栈。 Amplify CLI 让您可以轻松创建整个堆栈并将其推送到 AWS 以部署整个堆栈。然后,您可以基于相同的堆栈创建不同的环境,假设您需要开发环境、QA 环境和生产环境。 Amplify CLI 为您提供了实现此目的所需的所有命令,然后如果您想在有人将代码推送到您的 Git 存储库时将更改自动部署到 AWS,您可以使用 Amplify 控制台进行准确设置。 Amplify 控制台还与 AWS 域集成,因此您可以轻松地将自己的域指向任何环境。 除此之外,Amplify 还提供了 GraphQL Transformer,您可以轻松地以 Amplify 格式定义 GraphQL 架构,并将其转换并部署到 AWS Appsync。还有一个移动 SDK,您可以在 AppSync 和您的移动设备之间同步数据,并提供一些 UI。

我们使用了我们的一个 Web 项目,我们喜欢它用于 Amplify 的 Continues Deployment 方面,但我们不喜欢 Amplify 的 AppSync(GraphQL) 方面,因为 b/c 实现分层解析器并不容易。

另外,请记住,Amplify CLI/SDK/Transformer 属于一个项目,并且仍然非常脆弱。您可以查看https://www.npmjs.com/package/@aws-amplify/cli 的版本历史记录,您会在一个月内看到很少的版本更新。我们遇到了许多明显的错误,甚至在 AWS 控制台上也是如此。

我还没有使用过Serverless,但据我所知,Serverless 为Amplify 的No1 和No2 提供了更高的稳定性。

【讨论】:

以上是关于AWS Amplify 和无服务器堆栈的主要内容,如果未能解决你的问题,请参考以下文章

AWS SAM(无服务器应用程序模型)和无服务器框架有啥区别?

在本地测试 Elasticache 和无服务器 AWS Lambda

使用 graphql、aws lambda 和无服务器框架的多个 url 路径选项错误

AWS Amplify:如何重新创建手动删除的 CloudFormation 堆栈

AWS Amplify in React,如何从订阅的侦听器呈现新数据

基于 Amazon Amplify 构建自己的首个 iOS 应用程序