使用 AWS CLI 管理 EC2
EC2
EC2 是 AWS 的云服务器服务
EC2: Elastic Compute Cloud
创建实例
选择一个系统镜像(AMI):
AMI(Amazon Machine Image)定义了启动实例所需的信息。您可以使用 AWS CLI 查询:
# 查询 Ubuntu 24.04 x86_64
aws ec2 describe-images \
--owners 'amazon' \
--query 'Images[*].[ImageId,Name]' \
--filters "Name=name,Values=*ubuntu/*22.04*" "Name=architecture,Values=x86_64" # 查询 Windows Server 2022 Chinese Simplified
aws ec2 describe-images \
--owners 'amazon' \
--query 'Images[*].[ImageId,Name]' \
--filters 'Name=name,Values=*Windows_Server-2022-Chinese_Simplified*' # 查询 macOS 14
aws ec2 describe-images \
--owners 'amazon' \
--query 'Images[*].[ImageId,Name]' \
--filters 'Name=name,Values=*macos-14*'
替换查询参数以匹配您想要的操作系统。
查看 AMI 详细信息:
aws ec2 describe-images \
--image-id 'ami-01bef798938b7644d'
不同地区的可用镜像不同
选择一个实例类型:
实例类型就是云服务器的硬件配置。例如
t2.micro
,c7i.xlarge
,mac2.metal
等。查询实例类型列表:
# 查找 C7 系列的所有 arm64 配置
aws ec2 describe-instance-types \
--query 'InstanceTypes[*].[InstanceType]'
--filters 'Name=instance-type,Values=c7*' 'Name=processor-info.supported-architecture,Values=arm64' # 查找适用于 macOS 的所有配置
aws ec2 describe-instance-types \
--query 'InstanceTypes[*].[InstanceType]'
--filters 'Name=instance-type,Values=mac*'
查看实例类型详细信息:
aws ec2 describe-instance-types \
--instance-type 't2.micro' \
--query 'InstanceTypes[*].{FreeTierEligible:FreeTierEligible,MemorySizeInMiB:MemoryInfo.SizeInMiB, NetworkPerformance:NetworkInfo.NetworkPerformance, ProcessorInfo:ProcessorInfo, vCPUs:VCpuInfo.DefaultVCpus}'
创建一个密钥对(如果还没有的话):
生成新的密钥对:
aws ec2 create-key-pair \
--key-name 'MyKeyPair' \
--query 'KeyMaterial' \
--output 'text' > MyKeyPair.pem
切记保存生成的
.pem
文件,并设置正确的文件权限:chmod 400 MyKeyPair.pem
或者上传已有的公钥:
aws ec2 import-key-pair \
--key-name 'MyKeyPair' \
--public-key-material 'fileb://~/.ssh/id_rsa.pub'
如果你在 Docker 容器中运行 AWS CLI,则应该运行如下命令:
PUB_KEY=$(cat ~/.ssh/id_rsa.pub | base64 | tr -d '\n')
# 上传公钥
aws ec2 import-key-pair \
--key-name "MyKeyPair" \
--public-key-material "$PUB_KEY"
删除密钥的方法:
aws ec2 delete-key-pair --key-name 'MyKeyPair'
启动实例:
aws ec2 run-instances \
--image-id 'ami-04b70fa74e45c3917' \
--count 1 \
--instance-type 'c7i.xlarge' \
--key-name 'MyKeyPair' \
--security-groups 'my-security-group' \
--block-device-mappings '[{"DeviceName":"/dev/sda1","Ebs":{"VolumeSize":30}}]' \
--query 'Instances[*].[InstanceType,KeyName,Architecture]'
这将会创建一个操作系统为 Ubuntu 24.04 并带有 30 GB 存储空间的实例。
替换
ami-04b70fa74e45c3917
为您选择的 AMI ID,MyKeyPair
为您的密钥对名字,my-security-group
为您的安全组。查看实例
aws ec2 describe-instances \
--query 'Reservations[*].Instances[*].[InstanceId,InstanceType,Architecture,State.Name,PublicIpAddress]'
这会显示您所有实例的基本信息,如实例 ID、实例类型、架构、状态和公共 IP。
终止实例
查找实例 ID
如果您不知道要终止的实例的ID,可以首先列出您的所有实例以及它们的状态,以便找到正确的实例ID:
aws ec2 describe-instances \
--query 'Reservations[*].Instances[*].[InstanceId,InstanceType,Architecture,State.Name,PublicIpAddress]'
上述命令显示了所有实例的 ID、类型、架构、状态和公共 IP。查找您需要终止的实例的 ID。
终止实例
一旦您有了实例 ID,可以使用以下命令终止实例:
aws ec2 terminate-instances \
--query 'TerminatingInstances[*].[InstanceId,CurrentState.Name]' \
--instance-ids 'i-1234567890abcdef0'
在上述命令中,
i-1234567890abcdef0
是您要终止的实例的 ID。如果您有多个实例需要终止,可以一次列出所有实例 ID:aws ec2 terminate-instances \
--query 'TerminatingInstances[*].[InstanceId,CurrentState.Name]' \
--instance-ids 'i-1234567890abcdef0' 'i-abcdef1234567890'
确认实例已终止
终止命令后,您可以检查实例的状态来确认它已被终止:
aws ec2 describe-instances \
--query 'Reservations[*].Instances[*].State.Name' \
--instance-ids 'i-1234567890abcdef0'
这将返回实例的当前状态,如果实例已成功终止,则应返回
"terminated"
。
更改实例类型
停止 EC2 实例
在更改实例类型之前,您需要先停止实例。
aws ec2 stop-instances \
--instance-ids 'i-1234567890abcdef0'
确认实例完全停止。您可以使用以下命令检查实例状态:
aws ec2 describe-instances \
--instance-ids 'i-1234567890abcdef0' \
--query 'Reservations[*].Instances[*].[State.Name]'
更改实例类型
停止实例后,使用以下命令更改实例类型:
aws ec2 modify-instance-attribute \
--instance-id 'i-1234567890abcdef0' \
--instance-type '{"Value": "m5.large"}'
启动实例
完成实例类型更改后,启动实例:
aws ec2 start-instances --instance-ids 'i-1234567890abcdef0'
重启实例
aws ec2 reboot-instances --instance-ids 'i-1234567890abcdef0'
EBS
EBS(Elastic Block Store)
创建 EBS 卷
创建一个新的 EBS 卷:
aws ec2 create-volume \
--availability-zone us-east-1a \
--size 30 \
--volume-type "gp3"
--availability-zone
: 卷被创建的可用区。这通常是 EC2 实例所在的同一可用区。--size
: 卷的大小,以 GB 为单位。--volume-type
: 卷的类型,比如gp2
(通用 SSD),io1
(高性能 SSD), 等等。
此命令将返回卷的详细信息,包括卷的 ID(例如
vol-123abc456def7890
)。此 ID 稍后用于将卷附加到实例。将 EBS 卷附加到 EC2 实例
一旦你拥有了 EBS 卷的 ID 和目标 EC2 实例的 ID,你可以使用以下命令将这个卷附加到实例:
aws ec2 attach-volume \
--volume-id 'vol-123abc456def7890' \
--instance-id 'i-01234abcd5678efgh' \
--device '/dev/sdf'
--volume-id
: 你在上一步中创建的卷 ID。--instance-id
: 你希望附加新卷的 EC2 实例的 ID。--device
: 该设备在实例中的名称。确保这个设备名没有被实例中已有的设备使用。
格式化和挂载卷(在 EC2 实例上)
附加卷后,你需要登录到你的 EC2 实例并进行格式化及挂载:
sudo mkfs -t ext4 /dev/xvdf # 格式化卷
sudo mkdir /mnt/myvolume # 创建挂载点
sudo mount /dev/xvdf /mnt/myvolume # 挂载卷
替换
/dev/xvdf
和挂载点目录/mnt/myvolume
为你实际需要的配置。
删除 EBS 卷
分离 EBS 卷
如果卷仍附着在某个 EC2 实例上,你需要首先将其分离。使用此命令分离卷:
aws ec2 detach-volume --volume-id 'vol-xxxxxxx'
--volume-id
: 要分离的卷的 ID。
分离命令可能需要几秒钟到几分钟的时间来处理,具体取决于卷的当前状态和它是否在活跃使用中。
检查卷的状态
在尝试删除之前,确认卷的状态是
available
。这意味着卷已经成功分离并准备好被删除。使用以下命令来检查卷的状态:aws ec2 describe-volumes --volume-ids 'vol-xxxxxxx'
查看输出结果中的
State
字段,确认其值为available
。如果状态显示为in-use
,则说明卷仍然在被实例使用,应重新检查是否已正确分离。删除 EBS 卷
一旦卷的状态为 available
,你就可以安全地删除它。使用以下命令删除卷:
aws ec2 delete-volume --volume-id 'vol-xxxxxxx'
--volume-id
: 此前分离的卷的 ID。
执行此命令后,卷将被删除,并且与之相关联的存储资源将被释放。
安全组
添加入站规则
查询安全组 ID
aws ec2 describe-security-groups --query 'SecurityGroups[*].[GroupId,GroupName]'
添加入站规则
aws ec2 authorize-security-group-ingress \
--group-id 'GROUP_ID' \
--protocol tcp \
--port '3389' \
--cidr '0.0.0.0/0'
检查安全组规则
aws ec2 describe-security-groups --group-ids 'GROUP_ID'
删除入站规则
aws ec2 revoke-security-group-ingress \
--group-id 'GROUP_ID' \
--protocol tcp \
--port '3389' \
--cidr '0.0.0.0/0'
See also:
使用 AWS CLI 管理 EC2的更多相关文章
- [Notes] AWS Automation using script and AWS CLI
(c) 2014 Amazon Web Services, Inc. and its afflialtes, All rights reserved. The content in this file ...
- AWS CLI 中使用S3存储
登录 通过控制面板, 在S3管理器中创建一个新的bucket 所有AWS服务 -> 安全&身份 -> IAM -> 组, 创建一个新的组, 例如 "s3-user& ...
- AWS Switching to an IAM role (AWS CLI)
一,引言 今天额外分享一篇 AWS 的技术内容,需要在 EC2 切换到跨账号 IAM 角色(AWS CLI).假设我们使用两个 AWS 账户,A账号,B账号.我们希望允许 A 账号用于 "i ...
- AWS CLI使用s3
aws CLI是什么东西,暂且先不去了解,目前的需求是s3. 我在Jenkins上创建一个bucket,然后申请access_key,然后就可以使用s3来存储数据了.也就是说,s3就是一个网盘. 1. ...
- [AWS] Install the AWS cli
On Windows, just download the installer and install it. Configure: aws configure In your aws console ...
- RabbitMQ CLI 管理工具 rabbitmqadmin(管理和监控)
插个广告,公司最近在招".NET"开发(杭州),如果你现在还从事 .NET 开发(想用 .NET Core,但被公司不认可),想转 JAVA 开发(但又没有工作经验,惧怕面试),想 ...
- 用aws cli 下载s3中数据到本地
参考https://blog.csdn.net/DynastyRumble/article/details/76649120 1 首先注册AWS账户,绑定信用卡.一定要填写正确的手机,因为验证方式是它 ...
- AWS CLI以及AWS S3 SYNC命令行使用
1.到AWS的IAM创建用户,并且获取到访问密钥 ID 和私有访问密钥.下载密钥并保存. 2.到http://docs.amazonaws.cn/cli/latest/userguide/instal ...
- aws cli command line interface的安装与使用
安装 在centos中安装aws cli,安装依赖python,先装好python,然后按下述命令执行 yum install wget wget https://bootstrap.pypa.io/ ...
- varnish CLI管理
命令:varnishadm [-t timeout] [-S secret_file] [-T address:port] [-n name] [command [...]] ./varnishadm ...
随机推荐
- 洛谷P1790
这道题可以说也是非常有意思的数学题,并且坑点也是非常多 刚开始以为是连通块的问题,后面发现没有那么简单,因为必须要分成两个部分才行,连通块可能会分成三个部分 后面想到利用割痕来解决,以为唯一的一种分割 ...
- 动手学Avalonia:基于硅基流动构建一个文生图应用(一)
文生图 文生图,全称"文字生成图像"(Text-to-Image),是一种AI技术,能够根据给定的文本描述生成相应的图像.这种技术利用深度学习模型,如生成对抗网络(GANs)或变换 ...
- 操作系统|C语言模拟实现首次适应和最佳适应两种内存分配算法以及内存回收
两种算法 首次适应 首次适应算法从空闲分区表的第一个表目起查找该表,把最先能够满足要求的空闲区分配给作业,这种方法目的在于减少查找时间.为适应这种算法,空闲分区表(空闲区链)中的空闲分区要按地址由低到 ...
- 测试思想-流程规范 用例优先级定义与使用规范 V1.0
用例优先级定义与使用规范 V1.0 By:授客 1. 规范说明 目的 对软件测试过程中的用例级别进行详细描述及标准化定义,明确不同测试阶段的测试范围,减少测试冗余投入,提高测试效率,建立 ...
- 🚀RabbitMQ+redis+Redisson分布式锁+seata实现订单服务
引言 订单服务涉及许多方面,分布式事务,分布式锁,例如订单超时未支付要取消订单,订单如何防止重复提交,如何防止超卖.这里都会使用到. 开启分布式事务可以保证跨多个服务的数据操作的一致性和完整性, 使用 ...
- 假期小结4hive学习beeline
学习Beeline是连接和管理Hive的一种有效方式.Beeline是一个用于与Hive交互的命令行工具,它支持通过JDBC连接到Hive服务器,并执行查询和管理Hive表等操作. 以下是一些关于Be ...
- CSP-S提高组数据结构算法模板大合集
CSP-S 算法总结 2.2.1 基础知识与编程环境 无 2.2.2 C++ 程序设计 2 set/nultiset map/multimap deque/priority_queue STL 2.2 ...
- Jenkins如何使用CrumbIssuer防御CSRF攻击
1.CSRF(跨站请求伪造)概述 在讲解Jenkins的跨站请求伪造(CSRF)保护机制之前,让我们首先对CSRF这一安全威胁及其重要性进行简明扼要的概述. 1.1 CSRF(跨站请求伪造)的原理 ...
- 使用ventoy安装windows10
使用ventoy安装windows10 在ventoy中选择windows10镜像 进入Windows安装界面 下一步,选择现在安装 稍等片刻 选择我没有产品密钥 根据需求选择对应版本 下一步,接受许 ...
- 汇编+qemu玩转控制台打印
有段时间开始对汇编感兴趣,也因此在写各种不同的demo,现在分享之前学习的成果,需要下载的东西有nasm和qemu-system-i386,看看枯燥的汇编能产生多大的能量. 先来复习一下通用寄存器: ...