1. 首页
  2. 技术
  3. Linux

AWS-CLI:使用命令行免登陆创建、控制EC2、更换ip等操作

安装AWS CLI

AWS CLI分为版本1和版本2,这里我们安装版本2。

Linux系统

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64-2.0.30.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install

MacOS系统

curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg"
sudo installer -pkg AWSCLIV2.pkg -target /

 

Windows系统

下载软件安装即可。https://awscli.amazonaws.com/AWSCLIV2.msi

检查安装

输入如下命令即可检查是否安装成功

aws –version

结果类似如下即表示安装成功:

aws-cli/2.1.24 Python/3.7.4 Windows/10 botocore/2.0.0

 

 

配置环境

创建用户

首先登陆aws控制台,然后打开如下地址以创建一个新用户。或者通过aws控制台搜索 iam 进入。https://console.aws.amazon.com/iam

在导航窗格中,选择用户,然后创建用户,给用户随便取个名:AWS-Cli。访问类型:编程访问1123834321 截屏2021-03-22 08.59.15.png

创建新组,分配权限 AmazonEC2FullAccess,意为对EC2相关的产品有完全的访问权限。 1536345126

创建用户一共有五步,上面只给出最关键的两步,其他都是 下一步。创建成功后,我们就获得了 Access Key ID 和 Secret Access Key,务必保存 ID 和 Key ,关闭窗口后将无法再次找到。

配置环境

使用如下命令配置aws的环境。

aws configure

依次输入 Access Key ID、 Secret Access Key 、默认地区和输出格式。默认地区指的是在你不指定地区时默认使用此地区,输出格式指的是aws向你呈现结果的格式。默认地区我们不选择,直接回车;输出格式选择json或者table,便于阅读。

当我们需要修改配置,有这几个方法:

  1. configure 命令仍然使用命令:aws configure,不需要修改的配置直接回车,需要修改的直接输入即可。
  2. set 命令使用set命令,指定要修改的配置,如修改地区region为us-west-2.
aws configure set region us-west-2

 

3、修改文件直接进入保存配置的文件修改,简单粗暴。默认路径:

  • 凭证文件: ~/.aws/credentials(在 Linux 或 macOS 上)或 C:UsersUSERNAME.awscredentials(在 Windows 上)
  • 配置文件: ~/.aws/config(在 Linux 或 macOS 上)或 C:UsersUSERNAME.awsconfig(在 Windows 上)。

操作安全组

创建安全组

aws ec2 create-security-group --group-name my-sg --description "My security group" --vpc-id vpc-1a2b3c4d --region us-west-2

 

  • group-name:安全组的组名。
  • description:简单描述安全组。
  • vpc-id:ec2的id,因为我们没有ec2就可以不用此参数。
  • region:指定地区。因为我们在配置aws时没有指定region,这里就必须指定。

查看安全组

aws ec2 describe-security-groups --region us-west-2

 

如果加上 group-ids 参数,就能查看指定的安全组,否则就是查看当前地区所有的安全组。aws有很多地方都这样,不加参数就显示全部,加上参数就是指定。除了group-ids,还有 group-names。另外aws必须要有地区概念,无论是安全组还是密钥对,ec2就更不用说,都存在“地区隔离”。us-west-2创建的任何东西都无法在其他地区使用,所以请指定region。

添加规则

aws ec2 authorize-security-group-ingress --group-id sg-903004f8 --protocol tcp --port 3389 --cidr 203.0.113.0/24

 

创建好了安全组后,我们需要往它里面添加规则。下面表示指定id为sg-903004f8的安全组开放tcp协议、端口3389给 ip段:203.0.113.0/24。

一般情况下我们是会向外界开放所有流量的,下面使用命令开放所有协议允许所有流量:

aws ec2 authorize-security-group-ingress --group-id sg-903004f8 --protocol all --cidr 0.0.0.0/0

 

删除安全组

aws ec2 delete-security-group --group-id sg-903004f8

 

操作密钥

创建密钥

aws ec2 create-key-pair --region us-west-2 --key-name MyKeyPair --query 'KeyMaterial' --output text > MyKeyPair.pem

 

  • key-name:密钥名
  • output:密钥格式
  • MyKeyPair.pem:保存到本地当前目录的密钥名。确保和key-name一致,否则你会搞混的。

查看密钥

aws ec2 describe-key-pairs --key-name MyKeyPair --region us-west-2

 

查看名为MyKeyPair的密钥。请注意:密钥生成后保管好,无法再次查看和创建。丢失后只能创建新的密钥对。

删除密钥

aws ec2 delete-key-pair --key-name MyKeyPair

 

删除名为MyKeyPair的密钥。

创建EC2

aws ec2 run-instances --image-id ami-xxxxxxxx --count 1 --instance-type t2.micro --key-name MyKeyPair --security-group-ids sg-903004f8 --subnet-id subnet-6e7f829e

 

完成安全组和密钥的创建后,现在开始创建EC2实例。

  • image-id:镜像id,就是系统
  • count:创建数量。默认是1
  • instance-type:套餐类型。-key-name:选择我们上面创建好的密钥
  • security-group-ids:选择我们上面创建好的安全组
  • subnet-id:子网id。可以不指定,会默认选择

查看ec2

aws ec2 describe-instances --filters "Name=instance-type,Values=t2.micro" --region us-west-2

 

查看套餐为t2.micro的系统。不加filters显示所有。filters意为过滤,筛选符合条件的结果。下面是filters支持的参数:

  • image-id:镜像id
  • instance-id:实例id
  • ip-address:ipv4地址
  • instance-type:套餐类型
  • key-name:实例对应的密钥名
  • availability-zone:所在地区
  • instance.group-name:实例所在的安全组名
  • instance.group-id:实例所在的安全组id
  • private-ip-address:内网ip

假设知道一个vps的实例id为i-0648f34776c549d6d,根据实例id查询vps的ip地址:

aws ec2 describe-instances --filters "Name=instance-id,Values=i-0648f34776c549d6d" --query "Reservations[].Instances[].[PublicIpAddress]" --output text

 

终止ec2

终止ec2意味着删除。一旦ec2的状态变为 shutting-down 或 terminated,那么你也将停止为该ec2付费。

aws ec2 terminate-instances --instance-ids i-5203422c

 

停止ec2理解为关机。

aws ec2 stop-instances --instance-ids i-5203422c

 

开启ec2

aws ec2 start-instances --instance-ids i-5203422c

 

重启ec2

aws ec2 reboot-instances --instance-ids i-5203422c

 

更换IP

确定vps等InstanceId和其ip地址,首先分配一个新的弹性ip

aws ec2 allocate-address --domain vpc --query "PublicIp" --output text

 

执行后会出现一个ip地址,这就是我们的新ip。例如:192.168.1.1

aws ec2 associate-address --instance-id InstanceId --public-ip 192.168.1.1

 

把新ip绑定到vps,这里 InstanceId 指的就是vps。绑定了新ip后,我们找到旧ip的分配id。

aws ec2 describe-addresses --filters "Name=public-ip,Values=OldPublicIpAddress" --query "Addresses[*].[AllocationId]" --output text

 

利用这个分配id,我们就能释放旧ip了。

aws ec2 release-address --allocation-id AllocationId

 

分配ip用了associate-address命令,这个命令用法(支持的参数):

  • domain:指定弹性ip分配到VPC还是Classic中,不用想只能是VPC
  • address:要从地址池中恢复的弹性ip或者ipv4

显示结果:

{
    "PublicIp": "70.224.234.241",
    "AllocationId": "eipalloc-02463d08ceEXAMPLE",
    "PublicIpv4Pool": "amazon",
    "NetworkBorderGroup": "us-west-2-lax-1",
    "Domain": "vpc"
}

 

除了弹性ip以外,还有一个 AllocationId 分配id,这个分配id可以用来关联到实例。

关联/绑定ip:associate-address

  • instance-id:要关联的实例id
  • public-ip:要关联的弹性ip
  • allocation-id:要关联的弹性ip的分配id

输出结果是关联id:

{
"AssociationId": "eipassoc-2bebb745"
}

有关联就有取消关联:disassociate-address

  • association-id:要取消关联的关联id
  • public-ip:要取消关联的弹性ip

释放ip:release-address。释放的是弹性ip,可以使用弹性ip地址或者分配id来释放

  • allocation-id:根据分配id释放
  • public-ip:根据ip地址释放

ec2实例自带的外网ip不是弹性ip,在第一次将弹性ip关联到实例时,是没有弹性ip空闲的,也就不用释放。将关联实例的弹性ip取消关联后,实例会重新生成新ip,这个新ip也不是弹性ip。具体理解请前往lightsail进行申请、绑定、解绑弹性ip操作,你会加深aws的弹性ip关联的理解。

根据这些命令,就能写出一个创建、删除、重启、开关机、更换ip的脚本了。完整的关于ec2的命令行官方文档:https://docs.aws.amazon.com/cli/latest/reference/ec2

地区

  • 弗吉尼亚:us-east-1
  • 俄亥俄州:us-east-2
  • 加利福尼亚:us-west-1
  • 俄勒冈:us-west-2
  • 开普敦:af-south-1
  • 香港:ap-east-1
  • 孟买:ap-south-1
  • 大阪:ap-northeast-3
  • 首尔:ap-northeast-2
  • 新加坡:ap-southeast-1
  • 悉尼:ap-southeast-2
  • 东京:ap-northeast-1
  • 加拿大:ca-central-1
  • 法兰克福:eu-central-1
  • 爱尔兰:eu-west-1
  • 伦敦:eu-west-2
  • 米兰:eu-south-1
  • 巴黎:eu-west-1
  • 斯德哥尔摩:eu-north-1
  • 巴林:me-south-1
  • 圣保罗:sa-east-1

不同账户默认开放不同的地区,创建之前请注意地区权限。一般默认禁用 香港、巴林、开普敦和米兰。

套餐类型

  • t2.nano:1vCPU 0.5GiB
  • t2.micro:1vCPU 1GiB(符合条件免费)
  • t2.small:1vCPU 2GiB
  • t2.medium:2vCPU 4GiB
  • t2.large:2vCPU 8GiB
  • t2.xlarge:4vCPU 16GiB
  • t2.2xlarge:8vCPU 32GiB
  • t3.nano:2vCPU 0.5GiB
  • t3.micro:2vCPU 1GiB
  • t3.small:2vCPU 2GiB
  • t3.medium:2vCPU 4GiB
  • t3.large:2vCPU 8GiB
  • t3.xlarge:4vCPU 16GiB
  • t3.2xlarge:8vCPU 32GiB
  • … …
  • … …
  • … …

镜像id

1、控制台登陆控制台,打开下面地址:https://console.aws.amazon.com/ec2/

2、命令行查找

aws ec2 describe-images --owners self amazon

3、参考下面下面都是免费镜像,其他镜像自行前往控制台查看。

Linux 2 AMI:ami-093d73f27794c5b1dRed Hat Enterprise Linux 8:ami-f4fab885SUSE Linux Enterprise Server 15 SP2:ami-0b4017973f2328b15SUSE Linux Enterprise Server 12 SP5:ami-0937793114349c8feUbuntu Server 20.04 LTS:ami-0774445f9e6290ccdUbuntu Server 18.04 LTS:ami-036915aa0cb1d91a1Ubuntu Server 16.04 LTS:ami-a7a9ebd6Microsoft Windows Server 2019:ami-0b6b45fa8b883020bMicrosoft Windows Server 2012 R2 Base:ami-04cd2556af182fac8Microsoft Windows Server 2016 Base:ami-0156dd61aa6aaf241Microsoft Windows Server 2004 Core Base:ami-02c5a5352e19d7115Debian 10:ami-05b7d5ed6f439d5f6

原创文章,作者:admin,如若转载,请注明出处:https://www.huiyingwu.com/4374/

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注