在物理服务器的黑暗时代,基础架构是通过螺丝刀和电缆在潮湿的地下室中进行配置的。当公共云解决方案开始取代本地基础架构成为首选的服务器配置和运行方式时,这些黑暗时代变得更加明亮起来。在这篇博客文章中,了解如何使用AWS CLI和CloudFormation部署云解决方案。
这是Karl Eriksson的客座文章,他是Mocki的联合创始人——一个让您在几分钟内创建模拟API的工具。
如果您只运行一个应用程序环境,那么可以通过图形用户界面(GUI)(如AWS控制台)轻松管理事务。但是,当您拥有多个环境(如开发、演示和生产)时,事情会变得更加困难。人为错误和时间成为问题。AWS CLI和CloudFormation可以提供帮助。
您需要将您的基础架构管理为代码。在AWS世界中,使用CloudFormation堆栈来实现。
首次部署CloudFormation堆栈时,AWS将从头开始创建所有内容。如果将堆栈部署为更新,则会检测基础架构的任何更改并仅部署这些更改。
CloudFormation堆栈确保相同的更改应用于不同的环境。
CloudFormation:AWS基础架构即代码

AWS CloudFormation是一個用於在AWS環境中編寫和提供基礎架構即代碼的工具。CloudFormation支持AWS的大多數服務。您可以使用AWS控制台創建的幾乎所有資源,例如虛擬伺服器、資料庫、負載均衡器和檔案儲存,都可以添加到CloudFormation堆疊中。一旦添加,所有這些資源都可以從命令行或其他自動化流程進行部署。
對於更新,CloudFormation確保操作以最高效的方式執行,如果出現問題,甚至會自動回滾更改。
現在讓我們學習如何使用AWS CLI和CloudFormation創建基礎架構。
先決條件
在本文的其餘部分中,請確保您擁有以下內容才能跟隨CloudFormation教程:
- 一個AWS帳戶
- AWS CLI-請參閱如何下載和設置這裡。您可以通過運行
aws s3 ls
來確認CLI是否設置成功。如果命令成功返回,則一切正常。
如果您使用AWS CLI配置了多个AWS配置文件,请在本教程中使用适用于开发或测试目的的配置文件。
创建您的第一个CloudFormation堆栈
足够的背景信息,让我们开始使用AWS CLI和CloudFormation创建一个堆栈!
在本例中,您将创建一个堆栈,其中包含部署在静态文件托管服务AWS S3上的静态网站所需的基础设施。
要开始,请创建一个名为template.yaml
的新文件,并填充以下内容:
AWSTemplateFormatVersion
– 确定模板的格式版本,以便AWS在部署时能够正确解释它。Description
– 包含模板的描述,一旦部署,将显示在AWS控制台中。Resources
– 包含您要添加到模板中的所有基础设施。在本例中,资源将创建一个简单的S3存储桶,用于托管静态站点。
BucketName
属性必须是唯一的,因此请尝试使用除了your-bucket-name之外的其他名称。
使用AWS CLI和CloudFormation部署堆栈
现在您已经创建了一个简单的模板以进行部署,请使用以下命令通过AWS CLI和CloudFormation将其部署到AWS:
运行命令后,导航到AWS控制台,然后转到Services → CloudFormation。然后,您应该可以看到部署正在运行。几分钟后,您应该可以看到它进入CREATE_COMPLETE
状态。如果是这样,就完成了!
如果有任何错误,您应该能够在查看堆栈详细信息时在事件部分看到它们。
通过导航到Services → S3,您现在应该可以看到一个全新的S3存储桶已创建。
构建简单的网站
一旦您准备好一个用于存储网站的S3存储桶,请创建一个index.html文件作为网站的主页。
如果您没有自己的内容,请在index.html文件中使用以下内容:
保存index.html文件,并通过AWS控制台将其上传到S3存储桶。
确保授予索引文件公共读访问权限,因为它将对访问站点的所有人可见。
更新模板
現在,剛創建的S3存儲桶並未配置為托管網站。讓我們更改一下吧。您目前可以通過AWS控制台下載索引文件,但無法通過公共網絡訪問。使用AWS CLI和CloudFormation,更改配置以啟用靜態網站托管。
請按照以下內容更改template.yaml文件以啟用它。下面介紹了模板中的一些新屬性。
AccessControl
– 將對S3存儲桶的訪問權限設置為公共讀取,以便任何訪問該站點的用戶都可以看到index.html
文件WebsiteConfiguration
– 配置S3存儲桶作為一個網站,當用戶訪問存儲桶URL時,將提供上傳的index.html文件Outputs
– 可以是堆棧的一部分的資源的不同屬性。在上面的示例中,WebsiteURL
是堆棧輸出。當您再次部署模板時,您應該在AWS CloudFormation控制台中看到網站URL作為輸出。
現在使用與前一步驟相同的命令將更改部署到現有堆棧中:
為了確認結果,請前往CloudFormation控制台。幾分鐘後,您應該會注意到堆疊處於”UPDATE_COMPLETE”狀態。當堆疊進入此狀態時,請前往”輸出”標籤,在模板中您應該能看到”WebsiteUrl”作為一個輸出項目。
點擊提供的URL,您應該能在瀏覽器中看到您的網站。
恭喜!通過AWS CLI和CloudFormation,您現在已經使用基礎架構代碼部署了您的第一個堆疊!在這一點上,根據您的需求繼續添加到您的模板文件中以部署新的更改或創建一個新的。
結論
在本教程中,您了解了基礎架構代碼的概念以及它相對於手動配置基礎架構的優勢。然後,使用AWS CLI和CloudFormation的基礎架構代碼方法,您部署了一個堆疊以創建靜態網站。
使用本教程中學到的原則,您可以完全使用CloudFormation部署一個生產就緒的系統。
進一步閱讀
如果您想更多了解基礎架構代碼作為一種現象,請查看HashiCorp的”Infrastructure as Code in the Real World”。
如果您想了解如何將CloudFormation整合到您的開發流程中並使用CloudFormation管理您的所有基礎架構,請務必查看:
祝您使用AWS中的基础设施即代码部署所有基础设施的旅程好运!
Source:
https://adamtheautomator.com/aws-cli-and-cloudformation/