服务器测评网
我们一直在努力

AWS虚拟机常用命令有哪些,怎么用命令行启动实例?

掌握 AWS 虚拟机(EC2)的命令行操作是云运维工程师从“图形界面操作员”进阶为“自动化架构师”的关键分水岭,相比于 AWS 控制台的点击式操作,AWS CLI(命令行界面)提供了更高的效率、更强的可重复性以及批量处理能力。核心上文归纳在于:熟练运用 AWS CLI 命令不仅能够将日常运维效率提升数倍,更是实现基础设施即代码和自动化部署的必要前提。 本文将摒弃基础罗列,基于实战场景,深度解析 AWS EC2 的核心管理命令、高级筛选技巧以及自动化运维解决方案。

AWS虚拟机常用命令有哪些,怎么用命令行启动实例?

基础环境构建与配置优化

在执行任何 EC2 命令之前,确保 CLI 工具的配置精准无误是第一步,虽然 aws configure 是基础配置命令,但在生产环境中,强烈建议使用命名配置文件来管理多环境或跨账号的访问

通过 aws configure --profile production 命令,我们可以将生产环境的凭证与开发环境隔离,避免误操作,为了提高命令的响应速度和输出可读性,默认输出格式应配置为 tablejson,JSON 格式便于后续脚本解析,而 table 格式则适合人类快速阅读,在执行大规模查询时,合理设置 --region 参数至关重要,因为 EC2 的资源是区域性的,错误的区域设置会导致查询不到资源或误操作其他区域的实例。

实例生命周期管理的核心命令

EC2 实例的生命周期管理包括启动、停止、终止以及重启,这是运维中最频繁的操作。

启动实例不仅仅是运行一个简单的命令,更涉及到镜像(AMI)、实例类型和密钥对的精准选择,使用 aws ec2 run-instances 命令时,必须指定 --image-id--instance-type--key-name,为了实现更高级的自动化,建议结合 --user-data 参数注入启动脚本,这在实例首次启动时自动配置环境(如安装 Docker、挂载磁盘)极为有效。

对于停止与启动操作,aws ec2 stop-instancesaws ec2 start-instances 是标准命令,但在执行停止操作前,务必确认实例的 DisableApiTermination 属性,如果该属性被启用,普通的终止命令将失效,必须先使用 aws ec2 modify-instance-attribute 命令移除该保护。终止实例使用 aws ec2 terminate-instances,这是一个不可逆的操作,因此在脚本中通常需要加入二次确认逻辑或强制指定 --force 参数的提示。

精准筛选与高效查询的艺术

在拥有数百台虚拟机的复杂环境中,单纯列出所有实例是毫无意义的。AWS CLI 的强大之处在于其服务端过滤能力

使用 aws ec2 describe-instances 时,必须掌握 --filters 参数的使用,若要查找所有“生产环境”且处于“运行中”的 Web 服务器,可以使用如下组合:--filters Name=tag:Environment,Values=Production Name=instance-state-name,Values=running Name=tag:Role,Values=WebServer,这种过滤是在 AWS 服务端完成的,比将所有数据拉取到本地再使用 grep 或 jq 过滤要高效得多。

AWS虚拟机常用命令有哪些,怎么用命令行启动实例?

--query 参数配合 JMESPath 语法是提取关键数据的利器,运维人员往往不需要完整的 JSON 输出,只需要实例 ID 和私有 IP 地址,通过 --query 'Reservations[*].Instances[*].[InstanceId,PrivateIpAddress]',可以直接将输出简化为二维列表,极大地提升了信息获取的效率,这种“只取所需”的思维方式是编写高效 CLI 脚本的核心。

安全组与网络管理的实战策略

网络安全是云运维的重中之重,管理安全组规则时,不应在控制台手动修改,而应通过 CLI 命令进行版本化管理

使用 aws ec2 authorize-security-group-ingress 添加入站规则时,推荐明确指定具体的端口范围和源 CIDR,尽量避免开放 0.0.0.0/0,除非是业务必须的负载均衡器,为了便于审计,每一条规则授权时都应附带描述信息,利用 --description 参数记录规则开通的申请人、原因和时间,这在后续的安全合规检查中极具价值。

对于复杂的网络环境,经常需要查询某个 IP 关联的实例或安全组,这可以通过结合 describe-instances 和 describe-network-interfaces 实现,通过过滤 network-interface.addresses.private-ip-address 可以快速定位到占用特定 IP 的实例,从而解决 IP 冲突或网络故障排查问题。

自动化运维与批量处理的专业解决方案

真正的专业能力体现在解决复杂问题的自动化方案上。利用 AWS CLI 结合 Shell 脚本,可以实现高效的批量运维

在非业务高峰期自动关闭所有开发环境的实例以节省成本,我们可以编写一个脚本,先通过 describe-instances 配合 --filters 筛选出标签为 Environment=Dev 且状态为 running 的实例,然后通过管道将提取的 InstanceID 传递给 stop-instances 命令。

另一个典型场景是批量打标签,合规性要求所有资源必须拥有“Owner”和“CostCenter”标签,对于历史遗留的无标签资源,可以使用 aws ec2 create-tags 命令,结合 --resources(接受多个 ID)和 --tags 参数,一次性为数百台实例补全标签。这种批量操作不仅规范了管理,更极大地优化了云成本的分摊与核算

AWS虚拟机常用命令有哪些,怎么用命令行启动实例?

监控与故障排查的命令行洞察

除了 CloudWatch 控制台,CLI 也能提供即时的状态洞察。aws ec2 describe-instance-status 命令不仅能显示实例的系统状态,还能显示实例状态。

系统状态 指的是 AWS 基础设施(如硬件、网络)的健康状况,而 实例状态 指的是操作系统层面的健康状况,在排查故障时,应优先关注系统状态,如果系统状态显示 impaired,通常意味着底层硬件故障,需要 AWS 介入或主动重启实例迁移到健康硬件上,通过 --filters Name=instance-status.status,Values=impaired,运维人员可以快速定位问题节点,防患于未然。

相关问答

Q1:在使用 AWS CLI 终止实例时,提示“OperationNotPermitted”,该如何解决?
A: 这通常是因为该实例开启了“终止保护”功能,解决方法是先使用命令 aws ec2 modify-instance-attribute --instance-id i-xxxxxxxx --disable-api-termination 关闭该属性,然后再执行 aws ec2 terminate-instances 命令即可成功终止,这是为了防止关键生产环境被意外删除的重要安全机制。

Q2:如何通过 AWS CLI 快速找出本月未使用的或空闲的弹性 IP(EIP)以节省成本?
A: 可以使用 aws ec2 describe-addresses 命令,EIP 没有关联任何实例,其 InstanceId 字段为空,你可以结合 --query 参数筛选出 InstanceId==null 的记录,aws ec2 describe-addresses --query 'Addresses[?InstanceId==null].AllocationId',这将列出所有未绑定的 EIP ID,随后你可以评估是否释放这些闲置资源。

如果您在执行上述 AWS CLI 命令时遇到权限报错或参数配置问题,欢迎在评论区留言,我们将为您提供具体的排查思路。

赞(0)
未经允许不得转载:好主机测评网 » AWS虚拟机常用命令有哪些,怎么用命令行启动实例?