0,安装AWS CLI工具
| 12
 3
 
 | pip(3) install awscli  //*安装awsclipip(3) install -U awscli   //*升级awscli
 pip(3) uninstall awscli//*卸载awscli
 
 | 
1,配置AWS CLI工具
- 首先打开aws控制台–>安全性、身份与合规性–>IAM–>创建我们需要的编程用户user.
- 点击用户–>user–>安全证书–>创建访问密钥–>下载csv文件
- 留意下aws_access_key_id和aws_secret_access_key的值,后面配置要用到
2,初始化AWS CLI工具
| 12
 3
 4
 5
 6
 
 | $ aws configureAWS Access Key ID [None]: <aws_access_key_id_value>
 AWS Secret Access Key [None]: <aws_secret_access_key_value>
 Default region name [None]: us-east-2  //*你的实例-->可用区,不要数字后面的字母
 Default output format [None]: json //*执行输出结果为json格式
 complete -C aws_completer aws  //*让aws命令实现自动补全功能
 
 | 
3,配置多个区域
账号密钥配置,可配置多个账号
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 
 | [root@stark .aws][default]
 aws_access_key_id = <aws_access_key_id_value>
 aws_secret_access_key = <aws_secret_access_key_value>
 
 [singapore]
 aws_access_key_id = <aws_access_key_id_value>
 aws_secret_access_key = <aws_secret_access_key_value>
 
 [tokyo]
 aws_access_key_id = <aws_access_key_id_value>
 aws_secret_access_key = <aws_secret_access_key_value>
 
 | 
区域和输出格式配置,要和上面账号对应好区域
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 
 | [default]region = ap-northeast-2
 output = json
 
 [profile singapore]
 region = ap-southeast-1
 output = json
 
 [profile tokyo]
 region = ap-southeast-1
 output = json
 
 | 
验证是否正常使用,出现下列信息说明配置正确
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 
 | [root@stark .aws]{
 "Users": [
 {
 "Path": "/",
 "UserName": "user",
 "UserId": "<aws_access_key_id_value>",
 "Arn": "arn:aws:iam::1234567890:user/user",
 "CreateDate": "2018-08-28T08:28:36Z"
 }
 ]
 }
 
 | 
指定其他区域使用”–profile=”
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 
 | [root@stark .aws]{
 "Users": [
 {
 "Path": "/",
 "UserName": "user",
 "UserId": "<aws_access_key_id_value>",
 "Arn": "arn:aws:iam::1234567890:user/user",
 "CreateDate": "2018-08-28T08:28:36Z"
 }
 ]
 }
 
 | 
4,AWS CLI常用操作命令
aws官方镜像product-code参考信息: [https://wiki.centos.org/Cloud/AWS][1]
查询官方image-id信息
| 1
 | aws ec2 describe-images --owners aws-marketplace --filters Name=product-code,Values=aw0evgkw8e5c1q413zgy5pjce --output json
 | 
ec2实例相关命令
查看该区域所有实例的信息
| 1
 | aws ec2 describe-instances
 | 
查看单个实例的信息
| 1
 | aws ec2 describe-instances --instance-ids "instance-ID"
 | 
查看单个实例的状态
| 1
 | aws ec2 describe-instance-status --instance-ids 'instance-ID'
 | 
启动一个已存在的实例
| 1
 | aws ec2 start-instances --instance-ids "instance-ID"
 | 
停止一个正在运行的实例
| 1
 | aws ec2 stop-intances --instance-ids "instance-ID"
 | 
终止一个实例
| 1
 | aws ec2 terminate-instances --instance-ids "instance-ID"
 | 
创建一个新实例,其中的file://mapping.json是文件路径,mapping.json内容如下
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 
 | [{
 "DeviceName": "/dev/sda1",
 "Ebs": {
 "DeleteOnTermination": true,
 "VolumeSize": 30,
 "VolumeType": "gp2"
 }
 }
 ]
 aws ec2 run-instances --image-id [镜像ID] --security-group-ids [安全组ID] --key-name [密钥对名字] --block-device-mappings file://mapping.json --instance-type c5.large --count 1 --associate-public-ip-address --tag-specifications "ResourceType=instance,Tags=[{Key=Name,Value=test1}]" "ResourceType=volume,Tags=[{Key=Name,Value=test1}]"
 
 | 
为实例命名
| 1
 | aws ec2 create-tags --resources 'Instance-ID' --tags Key=Name,Value='Instance_name'
 | 
ec2卷相关命令
创建50G gp2卷
| 1
 | aws ec2 create-volume --size 50 --availability-zone ap-south-1b --volume-type gp2
 | 
为卷命名
| 1
 | aws ec2 create-tags --resources vol-1qa2ws3ed --tags Key=Name,Value='volume_name'
 | 
查看卷信息
| 1
 | aws ec2 describe-volumes --volume-id vol-02qawsf67dgf
 | 
从实例上分离卷
| 1
 | aws ec2 detach-volume --volume-id vol-02qawsf67dgf
 | 
删除指定的卷
| 1
 | aws ec2 delete-volume --volume-id vol-02qawsf67dgf
 | 
将卷附件到指定的实例上
| 1
 | aws ec2 attach-volume --volume-id vol-1qa2ws3ed4rf --instance-id i-1513qzwfeafdg --device /dev/sdc
 | 
ec2网络相关命令
分配一个弹性ip
| 1
 | aws ec2 allocate-address
 | 
通过弹性ip查询到对应的AllocationId
| 1
 | aws ec2 describe-addresses --public-ips 1.1.1.1
 | 
绑定弹性ip地址到主机
| 1
 | aws ec2 associate-address --public-ip '弹性ip' --instance-id 'Instance-ID'
 | 
为弹性ip命名
| 1
 | aws ec2 create-tags --resources AllocationId --tags Key=Name,Value="name"
 | 
释放一个弹性ip地址
| 1
 | aws ec2 release-address --allocation-id 'allocation-ID'
 | 
创建VPC
| 1
 | aws ec2 create-vpc --cidr-block 172.31.0.0/16
 | 
创建internet网关
| 1
 | aws ec2 create-internet-gateway
 | 
将internet网关附加到vpc上
| 1
 | aws ec2 attach-internet-gateway --internet-gateway-id '网关ID' --vpc-id 'vpc-ID'
 | 
查看路由表
| 1
 | aws ec2 describe-route-tables
 | 
将创建的子网关联到路由表
| 1
 | aws ec2 associate-route-table --route-table-id 'route-ID' --subnet-id 'subnet-ID'
 | 
在路由表中创建相关路由条目
| 1
 | aws ec2 create-route --route-table-id 'route-ID' --destination-cidr-block 0.0.0.0/0 --gateway-id 'GW-ID'
 | 
创建安全组
| 1
 | aws ec2 create-security-group --group-name [安全组名称] --description [安全组描述] [--vpc-id vpc-id] 不指定vpc为默认vpc
 | 
查看安全组的访问规则
| 1
 | aws ec2 describe-security-groups --group-ids 'security-group-id'
 | 
开放12306端口给172.31.0.0网段到安全组id为sg-xxxxxxxxxx的安全组
| 1
 | aws ec2 authorize-security-group-ingress --group-id sg-xxxxxxxxxx --protocol tcp --port 12306 --cidr 172.31.0.0/16
 | 
开放1234端口给安全组id为sg-yyyyyyyy下的所有主机
| 1
 | aws ec2 authorize-security-group-ingress --group-id sg-xxxxxxxx --protocol tcp --port 1234 --source-group sg-yyyyyyyy
 | 
撤销指定区域一个安全组内的某条入口规则的授权
| 1
 | aws ec2 --profile hk001 revoke-security-group-ingress --group-id sg-xxxxyyyypppp --cidr 0.0.0.0/0 --protocol tcp --port 22
 | 
撤销指定区域一个安全组内的某条出口规则的授权
| 1
 | aws ec2 --profile hk001 revoke-security-group-egress --group-id sg-01a26db3a449f6d2a --cidr 0.0.0.0/0 --protocol tcp --port 22
 | 
ec2查询命令
查看所有区域
查看当前账号VPC
查看当前账号下的密钥对
| 1
 | aws ec2 describe-key-pairs
 | 
创建密钥对
| 1
 | aws ec2 create-key-pair --key-name [密钥对名称]
 | 
查看可用区域
| 1
 | aws ec2 describe-availability-zones
 | 
‘–query’的用法
查询数据第一个内容
| 1
 | aws ec2 describe-addresses --query *[0]
 | 
以下列内容为例,演示’–query’的使用方法
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 
 | [root@stark ~]{
 "AvailabilityZones": [
 {
 "State": "available",
 "Messages": [],
 "RegionName": "ap-northeast-2",
 "ZoneName": "ap-northeast-2a",
 "ZoneId": "apne2-az1"
 },
 {
 "State": "available",
 "Messages": [],
 "RegionName": "ap-northeast-2",
 "ZoneName": "ap-northeast-2b",
 "ZoneId": "apne2-az2"
 },
 {
 "State": "available",
 "Messages": [],
 "RegionName": "ap-northeast-2",
 "ZoneName": "ap-northeast-2c",
 "ZoneId": "apne2-az3"
 }
 ]
 }
 
 | 
查看可用区域的第一个区域
| 12
 3
 4
 5
 6
 7
 8
 
 | [root@stark ~]{
 "State": "available",
 "Messages": [],
 "RegionName": "ap-northeast-2",
 "ZoneName": "ap-northeast-2a",
 "ZoneId": "apne2-az1"
 }
 
 | 
查看可用区域的第一,第二个区域
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 
 | [root@stark ~][
 {
 "State": "available",
 "Messages": [],
 "RegionName": "ap-northeast-2",
 "ZoneName": "ap-northeast-2a",
 "ZoneId": "apne2-az1"
 },
 {
 "State": "available",
 "Messages": [],
 "RegionName": "ap-northeast-2",
 "ZoneName": "ap-northeast-2b",
 "ZoneId": "apne2-az2"
 }
 ]
 
 | 
获取第一个可用区域State键的值
| 12
 
 | [root@stark ~]"available"
 
 | 
获取第一个可用区域State和RegionName键的值
| 12
 3
 4
 5
 
 | [root@stark ~][
 "available",
 "ap-northeast-2"
 ]
 
 | 
使用格式化显示查询出来的值
| 12
 
 | [root@stark ~]available	ap-northeast-2	apne2-az1
 
 | 
查看ec2实例的IP和instance-id
| 1
 | aws ec2 describe-instances --query 'Reservations[*].Instances[*].[PublicIpAddress, PrivateIpAddress,InstanceId]' --output text
 |