简介:
欢迎来到小李哥全新亚马逊云科技AWS云计算知识学习系列,适用于任何无云计算或者亚马逊云科技技术背景的开发者,通过这篇文章大家零基础5分钟就能完全学会亚马逊云科技一个经典的服务开发架构方案。
我会每天介绍一个基于亚马逊云科技AWS云计算平台的全球前沿云开发/架构技术解决方案,帮助大家快速了解国际上最热门的云计算平台亚马逊云科技AWS最佳实践,并应用到自己的日常工作里。本次介绍的是如何利在亚马逊云科技上利用CloudFormation Infrastructure as Code (IaC)服务开发基础设施,提升版本更新部署效率,简化基础设施管理。
方案所需基础知识
什么是亚马逊云科技 CloudFormation 服务?
亚马逊云科技 CloudFormation 是一项基础设施即代码(Infrastructure as Code, IaC)服务,允许用户通过编写模板文件来自动化创建和管理 AWS 资源。CloudFormation 提供了一种简便的方法,使用户能够定义 AWS 资源的全部配置,包括计算、存储、数据库、以及网络资源,并将其部署为一个可重复使用的模板,从而简化复杂环境的设置和管理。
使用 CloudFormation 创建基础设施的优势
自动化与一致性:
通过 CloudFormation,用户可以自动化创建和配置 AWS 资源,确保在不同环境中使用相同的模板部署基础设施。这样避免了手动配置可能导致的不一致性,提升了部署的可靠性和可重复性。
简化管理与更新:
CloudFormation 允许用户以代码的形式定义基础设施,并可以在需要时轻松更新或扩展资源配置。通过模板,用户可以快速地对基础设施进行变更管理,而不必手动调整每个资源。
可视化与审计:
CloudFormation 提供对资源创建和配置过程的完全可视化,使用户能够清晰地了解每个资源的状态。此外,由于模板文件记录了所有资源配置,审计和合规性检查也变得更加简单。
支持基础设施的版本控制:
由于 CloudFormation 模板是代码文件,用户可以将其与代码库一起进行版本控制。这使得团队能够追踪基础设施配置的变更历史,轻松回滚到之前的版本,进一步提升了管理的灵活性和安全性。
本方案包括的内容
1. 开发亚马逊云科技基础设施及代码(IaC)资源脚本
2. 利用CloudFormation服务运行IaC脚本部署EC2服务器
3. 利用服务器启动脚本启动NGINX服务器
项目搭建具体步骤
1. 打开亚马逊云科技控制台,打开Cloud9云端IDE开发环境。
2. 点击Open进入到IDE中
3. 创建一个空白文件”cloudformation.template“,这个就是CloudFormation的代码脚本格式,复制以下内容到脚本中,大家需要根据自己的服务器具体配置更新脚本中的???的值。该脚本定义了一个EC2服务器的配置信息,配置了NGINX的自启动Bash脚本,并输出创建的EC2 IP。
AWSTemplateFormatVersion: 2010-09-09
Description: >
This template creates an Amazon EC2 instance. It installs and configures
the Nginx web server via user data.
Parameters:
AmazonLinuxAMIID:
Type: AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>
Default: /aws/service/ami-amazon-linux-latest/al2023-ami-kernel-6.1-x86_64
Resources:
WebServer:
Type: AWS::EC2::Instance
Properties:
ImageId: ???
InstanceType: t3.micro
SecurityGroupIds:
- ???
SubnetId: ???
UserData:
Fn::Base64: !Sub |
#!/bin/bash
yum install -y nginx
systemctl enable nginx
systemctl start nginx
Outputs:
Website:
Description: URL to site
Value: !Sub 'http://${WebServer.PublicIp}'
4. 接下来我们在IDE的命令行中运行以下命令,开始创建一个CloudFormation Stack用于创建EC2服务器。
aws cloudformation create-stack --stack-name nginx-Web-Server --template-body file://~/environment/cloudformation.template
得到输出如下,返回了该CloudFormation的Stack ARN ID:
******************************
**** This is OUTPUT ONLY. ****
******************************
{
"StackId": "arn:aws:cloudformation:us-west-2:111111111111:stack/nginx-Web-Server/bab88ad0-388b-11ee-aa2c-02f2933b4349"
}
5. 继续运行以下命令,可以查看该Stack的创建进度
aws cloudformation describe-stacks --stack-name "nginx-Web-Server" --query "Stacks[0].StackStatus"
如果得到以下回复"CREATE_COMPLETE",则表示该Stack创建成功。
******************************
**** This is OUTPUT ONLY. ****
******************************
"CREATE_IN_PROGRESS"
"CREATE_IN_PROGRESS"
"CREATE_IN_PROGRESS"
"CREATE_COMPLETE"
6. 我们运行以下命令,可以返回创建的EC2服务器的Public IP:
aws cloudformation describe-stacks --stack-name "nginx-Web-Server" --query "Stacks[0].Outputs"
得到如下回复:
**************************************
**** This is EXAMPLE OUTPUT ONLY. ****
**************************************
[
{
"OutputKey": "Website",
"OutputValue": "http://54.218.70.234",
"Description": "URL to site"
}
]
7. 我们进入到CloudFormation服务主页
8. 可以查看到我们刚通过命令行创建的Stack资源,里面包含了一台EC2服务器
9.我们找到CloudFormation返回的EC2 IP,复制到浏览器中打开
10. 即可看到我们成功创建了一台运行NGINX的EC2服务器
以上就是在亚马逊云科技上利用CloudFormation服务创建云资源基础设施的全部步骤。欢迎大家关注0基础5分钟上手AWS系列,未来获取更多国际前沿的AWS云开发/云架构方案。