一起使用 Amplify 和 SAM?

Posted

技术标签:

【中文标题】一起使用 Amplify 和 SAM?【英文标题】:Using Amplify and SAM together? 【发布时间】:2020-11-07 19:45:50 【问题描述】:

我在这里有些困惑,想看看是否有人可以纠正我。

我正在将 Amplify 用于 Vue 应用程序。它调用调用 Lambda 的 API Gateway,所有这些都是手动设置的,但我想利用 IaaS 的强大功能并使用 SAM 来完成。

Amplify CLI 包括添加 API/函数并反过来创建 CloudFormation 模板和堆栈的能力,这很好。然而,这似乎并没有创建 Amplify 应用程序本身,只是创建了一个连接到无 repo 的空应用程序,当然 CLI 只能扩展到这么多服务。

我发现可以在 CloudFormation 中配置 Amplify 应用程序。 SAM 附带的命令行工具也很有用。设置这一切的正确方法是什么??

我能否创建一个用于 Amplify 创建的 SAM 模板,该模板与 Amplify 创建的堆栈一起使用以创建 API/功能,而不是在没有自动生成帮助的情况下手动构建 SAM 模板?然后,如果我稍后添加不支持 Amplify 的服务,我也可以将它们添加到 SAM。

我正在尝试导航 SAM/CF/CDK/Amplify 哈哈

【问题讨论】:

【参考方案1】:

我希望这会有所帮助。让我们从更简单的问题开始:

我正在尝试导航 SAM/CF/CDK/Amplify 哈哈

是的。

AWS CF (Cloudformation) 是 aws 致力于提供一种使用模板引擎创建 (/rud) AWS 资源的方法。它相当庞大。而且很奇怪。这是来自User Guide的示例

这是Create a simple DynamoDB table 的 JSON 模板。 这是与它相同的模板from the Designer Link next 这是一个 pastebin 版本:1QNXGTdZ

如果上面提到的问题是,为什么两个模板不同?你不是一个人。总体而言,CF 规模庞大但非常简洁,因为它可以让您创建/使用 AWS 资源

AWS SAM(无服务器应用程序模型)IMO 是更简单/容易得多的 CF 版本。在这里,您可以 CRUD AWS 资源并将它们组织在一个堆栈中。 注意:SAM 在后台使用 CF。

Amplify 是一个用于使用 cognito(登录)、aws js sdks 等的框架。它可以使用您的 vue/react 应用程序并添加服务,例如 api、身份验证和文档 (dynamodb)。对于节点应用程序,它将配置信息存储在名为“aws-exports.js”的文件中。 Amplify 还可以帮助您部署和存储代码库。

如果您使用 amplify cli 创建任何资源,它会在后台使用 CF。我相信所有文件都存储在名为“.amplify”的文件夹中。 IMO,这并不好玩,因为以后使用 Amplify CLI 或 AWS 控制台很难管理。

我能否为 Amplify 创建创建一个 SAM 模板,该模板与 Amplify 创建的堆栈一起使用以创建 API/函数,而不是在没有自动生成帮助的情况下手动构建 SAM 模板?

是的。继续使用 Amplify CLI。一旦不再有趣,请使用 AWS 控制台。

如果我稍后添加不支持 Amplify 的服务,我也可以将它们添加到 SAM。

也是的。您可以随时使用 lambda、用户池等创建新的 SAM 堆栈,然后它们会通过您的 Amplify 应用程序新发现的 AWS 开发工具包连接到它们。

根据我有限的经验:

试试 AWS SAM。它比 CF 更简单,更容易获得 我不再使用 Amplify CLI。一开始它很整洁,但我已经过时了,因为与 SAM 模板定义相比,运行命令让我头疼

【讨论】:

Petey,感谢您的详细回答。关于此的另一个问题:如果我让我们说使用 SAM 的功能,然后添加了放大(相同的应用程序),我如何将此功能连接到应用程序,以便我可以在功能下的管理 ui 中看到它? @aleXela lambda 函数将独立于您的 webapp 应用程序(vue/react/etc),因为它是一个单独的 yaml 资源。要连接,您需要将 amplify 添加到 web 应用程序(不要忘记导入您的自定义 aws-exports.js)。请参阅 here 和 here

以上是关于一起使用 Amplify 和 SAM?的主要内容,如果未能解决你的问题,请参考以下文章

将现有 AppSync API 与/ Amplify 一起使用

如何将现有的 dynamo db 与 AWS Amplify 和 graphql 一起使用

如何将 AWS Amplify 与 Sapper 一起使用?

Quantum Amplititude Amplification

量子搜索算法基础: Quantum Amplititude Amplification

量子搜索算法基础: Quantum Amplititude Amplification