亚马逊云分销商 AWS EC2自动化部署脚本
为什么自动化部署是运维人的"救星"
还记得上次手动创建EC2实例的经历吗?点击、等待、再点击,鼠标都快点出火星子了。要是同时要部署10个实例,估计得把AWS控制台点烂。这时候,自动化脚本就是你的"外挂",一键搞定所有操作,省时省力,还能避免手抖点错。想象一下,你躺在沙发上喝咖啡,脚本默默帮你把服务器部署好了,老板还以为你多厉害——这种感觉,爽不爽?
准备工作:你的AWS CLI装备
安装与配置AWS CLI
首先,你得把AWS CLI这把"瑞士军刀"装好。在终端里敲几行命令:
# 安装AWS CLI(以Ubuntu为例)
sudo apt-get install awscli
然后配置你的凭证,这里要小心,别把access key和secret key暴露在GitHub上。用aws configure命令,输入你的密钥。别担心,这个过程就像注册一个新App,填个用户名密码而已。不过记住,凭证这东西,跟身份证一样重要,别随便乱传。
创建IAM用户与权限
为了安全起见,别用Root账号直接操作。创建一个IAM用户,只给必要的权限。比如,创建一个EC2管理员角色,允许创建实例、管理安全组等。在AWS IAM控制台里点点点,分配策略,然后拿到新用户的AKSK。这样即使脚本泄露,也不会影响整个AWS账户的安全。
亚马逊云分销商 手把手写个自动化部署脚本
创建安全组和密钥对
首先,给实例找个安全的家。安全组就是EC2的"门卫",控制谁可以进来。咱们用AWS CLI创建一个:
aws ec2 create-security-group --group-name \"MySecurityGroup\" --description '允许SSH访问' --vpc-id vpc-xxxxxxx
然后,给这个门卫发个指令:允许22端口(SSH)的流量进来。注意,生产环境别开0.0.0.0/0,否则黑客可能半夜敲门。
aws ec2 authorize-security-group-ingress --group-name \"MySecurityGroup\" --protocol tcp --port 22 --cidr 0.0.0.0/0
接下来,创建密钥对,这相当于你的"钥匙"。用命令:
aws ec2 create-key-pair --key-name \"MyKeyPair\" --query 'KeyMaterial' --output text > MyKeyPair.pem
chmod 400 MyKeyPair.pem
启动EC2实例并部署应用
现在,该让实例跑起来了。这里有个小技巧:用用户数据(user data)让实例启动时自动执行脚本。比如,创建一个install.sh文件,内容如下:
#!/bin/bash
yum update -y
yum install -y nginx
systemctl start nginx
然后,用aws ec2 run-instances命令启动实例,带上这个脚本:
aws ec2 run-instances \
--image-id ami-0c55b159cbfafe1f0 \
--count 1 \
--instance-type t2.micro \
--key-name \"MyKeyPair\" \
--security-group-ids sg-xxxxxxx \
--user-data file://install.sh
等个几秒,实例就启动了。可以用aws ec2 wait instance-running --instance-ids [instance_id]来等待。最后,获取公有IP:
aws ec2 describe-instances --instance-ids [instance_id] --query 'Reservations[0].Instances[0].PublicIpAddress' --output text
现在打开浏览器,输入这个IP,就能看到Nginx的欢迎页面了。是不是比手动操作快多了?
踩过的坑,你别再踩
权限不足?别慌,IAM是你的救星
有时候脚本报错说权限不足,这通常是IAM策略没配好。解决办法是给IAM用户添加足够的权限。比如,创建一个自定义策略,允许ec2:RunInstances、ec2:CreateSecurityGroup等操作。记住,最小权限原则,别一股脑给FullAccess,否则出事就麻烦了。
安全组配置失误导致无法SSH?
最常见的问题就是安全组没开对端口。比如,你只开了SSH的22端口,但应用跑在80端口,那浏览器当然访问不了。检查安全组入站规则,确保开放了应用需要的端口。如果实例启动后无法连接,先用aws ec2 describe-security-groups查看规则是否正确。记住,安全组是'白名单',不放行的端口默认拦截,千万别漏了。
用户数据脚本执行失败?
用户数据脚本如果出错,实例可能启动了但服务没跑起来。查看系统日志的命令是:
aws ec2 get-console-output --instance-id i-xxxxx
或者在脚本开头加个日志输出,比如:
#!/bin/bash
echo \"Starting install script at $(date)\" >> /var/log/user-data.log
yum update -y
# ...其他命令
这样就能看到脚本执行的详细过程,方便排查问题。
总结:让脚本替你打工
自动化部署脚本,本质就是把重复劳动交给机器。AWS CLI虽然看起来有点门槛,但一旦上手,效率提升飞起。下次部署服务器时,别再手动点鼠标了,写个脚本让它自己干活。这样你就能腾出时间,多喝两杯咖啡,或者看看技术文章——比如这篇,对吧?记住,运维人的终极目标就是——让自己忙起来,但不用那么忙。

