如何使用 AWS CLI 从头开始​​创建堆栈?

Posted

技术标签:

【中文标题】如何使用 AWS CLI 从头开始​​创建堆栈?【英文标题】:How to use AWS CLI to create a stack from scratch? 【发布时间】:2022-01-14 02:34:24 【问题描述】:

问题

我正在接近 AWS,第一个测试项目将是一个网站,但我正在努力研究如何使用资源和工具来实现这一点。 AWS 文档对初学者并不友好,所以对我来说,这就像在第一次拳击训练课上被打脸。

第一次尝试

我已经安装了 bot AWS 和 SAM cli 工具,所以我期望首先能够创建一个空堆栈并按照给定/概述的规范一个一个地添加资源,而不是我所看到的是我需要为工具提供一个模板来创建新堆栈,但这意味着我需要事先知道如何编写它,因此需要知道每种资源类型的模板规范。

第二次尝试

这导致我从在线控制台创建堆栈和相关资源以获得最终的堆栈模板,但是我需要在本地测试每个新资源或任何更新的资源,所以我必须从在线复制模板控制台到我的机器并使用它运行 cli 工具,但显然这不是所需的开发流程。

我的预期

来自标准/经典 Web 开发,我希望能够在本地创建项目,在本地测试相关资源,对其进行版本化,并将部署委托给管道。

那又怎样?

所有这一切让我明白,“可能”我错过了有关如何使用 aws cli 工具以及如何开发 aws 托管应用程序的内容。 我不是在寻找关于特定资源类型的指南,比如我在网上找到的每一个教程,而是在更高层次上关于如何处理 aws 上的项目开发、最佳实践和类似的东西,然后我可以更深入地挖掘稍后在需要时使用任何资源。

【问题讨论】:

and the first test project will be a website ...这个问题太宽泛了;我建议你适当缩小你的问题范围 阅读此***.com/help/how-to-ask 我认为项目的类型与最后一个问题无关,因为我要问的是如何使用 aws cli 工具在本地一次创建我的应用程序一个资源,无需使用云界面更新堆栈模板,然后将其复制到我的机器上运行测试并最终部署整个项目 【参考方案1】:

如果您只是想尝试一下 AWS,AWS SAM 实际上是一个不错的选择。 SAM 是一个围绕 aws-cli 的开源包装器,它允许您在大约 10 行代码中创建像 Lambda 这样的 aws 资源,而如果您直接使用 aws-cli,则需要大约 100 行代码。是的,您需要学习 SAM 特定的东西,例如 SAMtemplate 和 SAM-cli,但使用 this doc 非常简单。

一旦掌握了窍门,就可以更轻松地开始深入了解 SAM 的工作方式/方式,并根据需要使用 aws-cli 深入研究。然后,您可以为 SAM 可能不支持的复杂用例构建自定义解决方案(使用 aws-cli)。警告:SAM 仍然很新,并且有 open issues 可能成为高级功能/复杂用例的障碍。

【讨论】:

【参考方案2】:

AWS 的 Cloud Development Kit 勾选了您的特定条件。

警告:CDK 的学习曲线与其功能和灵活性相符。在 AWS 上部署 Web 应用程序有很多更简单的方法,例如更高级别的 AWS Amplify 框架,其中的抽象专为希望尽量减少在底层基础设施上花费的脑力的前端开发人员量身定制。

每个 squillion AWS 和 3rd 方部署工具都非常适合某些人。尽管如此,看看您在“我所期望的”中的明确要求,我们可以接近 CDK 作为客观答案:

来自标准/经典网络开发

所以你知道 JS/Python。使用 CDK,您可以将基础设施编码为函数和类,而不是像 SAM 那样使用 500 行 YAML。 CDK 的 reference implementation 在 Typescript 中。也支持 JS/Python。这些和其他受支持的语言有step-by-step AWS online workshops。

在本地创建项目

您的大部分工作将以您选择的语言在本地完成,使用cdk deploy CLI 命令 捆绑部署工件并将它们发送到云端。

本地测试相关资源

CDK 内置了testing and assertion support。

版本

“确定性部署”是CDK design goal。提交您的代码和生成的部署工件,以便您对基础架构进行更改控制。

将部署委托给管道

CDK 有很好的pipeline support:即推送到远程主分支可以启动部署。

【讨论】:

这个答案似乎为我指明了正确的方向,我会尽快检查。我不得不提一下,我是从 aws sam 开始的,因为“无服务器”这个词最近听起来像是 web 开发的未来标准,而在 aws 中这是由 lambdas 完成的,我没有查看其他 aws服务(太多了,我试图检查所有这些以找到最适合我的服务,但我迷失在文档中)

以上是关于如何使用 AWS CLI 从头开始​​创建堆栈?的主要内容,如果未能解决你的问题,请参考以下文章

AWS - SAM cli yaml 模板不适用于 cloudformation 堆栈

查询 AWS 堆栈资源 AWS CLI

AWS CLI 仅列出当前正在运行的 cloudformation 堆栈的名称?

如何将 AWS 漂移堆栈资源恢复到预期状态

使用 AWS CLI 时发布的错误中更新 cloudformation 堆栈时出现回滚错误

AWS CloudFormation 创建堆栈与部署