0,安装AWS CLI工具
1 2 3
| pip(3) install awscli //*安装awscli pip(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工具
1 2 3 4 5 6
| $ aws configure AWS 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,配置多个区域
账号密钥配置,可配置多个账号
1 2 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>
|
区域和输出格式配置,要和上面账号对应好区域
1 2 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
|
验证是否正常使用,出现下列信息说明配置正确
1 2 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=”
1 2 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内容如下
1 2 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’的使用方法
1 2 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" } ] }
|
查看可用区域的第一个区域
1 2 3 4 5 6 7 8
| [root@stark ~] { "State": "available", "Messages": [], "RegionName": "ap-northeast-2", "ZoneName": "ap-northeast-2a", "ZoneId": "apne2-az1" }
|
查看可用区域的第一,第二个区域
1 2 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键的值
1 2
| [root@stark ~] "available"
|
获取第一个可用区域State和RegionName键的值
1 2 3 4 5
| [root@stark ~] [ "available", "ap-northeast-2" ]
|
使用格式化显示查询出来的值
1 2
| [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
|