aws-cli开始使用aws-cli


备注

描述

AWS命令行界面(CLI)是用于管理AWS服务的统一工具。只需一个工具即可下载和配置,您可以从命令行控制多个AWS服务,并通过脚本自动执行这些服务。

AWS CLI引入了一组新的简单文件命令,用于与Amazon S3之间的高效文件传输。

支持的服务

有关可与AWS Command Line Interface一起使用的可用服务的列表,请参阅AWS CLI命令参考中的可用服务

GitHub上的AWS命令行界面

您可以在https://github.com/aws/aws-cli项目中查看和分叉GitHub上AWS CLI的源代码。

版本

发布日期
38年1月10日 2016年6月14日
35年1月10日 2016年6月3日
33年1月10日 2016年5月25日
30年10月1日 2016年5月18日

AWS CLI备忘单 - 所有CLI命令列表

建立

安装AWS CLI

AWS CLI是用于管理AWS资源的通用CLI工具。使用这个单一工具,我们可以管理所有aws资源

sudo apt-get install -y python-dev python-pip
sudo pip install awscli
aws --version
aws configure

Bash one-liners

cat <file> # output a file
tee # split output into a file
cut -f 2 # print the 2nd column, per line
sed -n '5{p;q}' # print the 5th line in a file
sed 1d # print all lines, except the first
tail -n +2 # print all lines, starting on the 2nd
head -n 5 # print the first 5 lines
tail -n 5 # print the last 5 lines

expand # convert tabs to 4 spaces
unexpand -a # convert 4 spaces to tabs
wc # word count
tr ' ' \\t # translate / convert characters to other characters

sort # sort data
uniq # show only unique entries
paste # combine rows of text, by line
join # combine rows of text, by initial column value




Cloudtrail - 日志记录和审计

http://docs.aws.amazon.com/cli/latest/reference/cloudtrail/ 5总计路径,支持资源级别权限

# list all trails
aws cloudtrail describe-trails

# list all S3 buckets
aws s3 ls

# create a new trail
aws cloudtrail create-subscription \
    --name awslog \
    --s3-new-bucket awslog2016

# list the names of all trails
aws cloudtrail describe-trails --output text | cut -f 8

# get the status of a trail
aws cloudtrail get-trail-status \
    --name awslog

# delete a trail
aws cloudtrail delete-trail \
    --name awslog

# delete the S3 bucket of a trail
aws s3 rb s3://awslog2016 --force

# add tags to a trail, up to 10 tags
aws cloudtrail add-tags \
    --resource-id awslog \
    --tags-list "Key=log-type,Value=all"

# list the tags of a trail
aws cloudtrail list-tags \
    --resource-id-list 

# remove a tag from a trail
aws cloudtrail remove-tags \
    --resource-id awslog \
    --tags-list "Key=log-type,Value=all"




我是

用户

https://blogs.aws.amazon.com/security/post/Tx15CIT22V4J8RP/How-to-rotate-access-keys-for-IAM-users http://docs.aws.amazon.com/IAM/latest/UserGuide /reference_iam-limits.html限制= 5000个用户,100个组,250个角色,2个访问密钥/用户

http://docs.aws.amazon.com/cli/latest/reference/iam/index.html

# list all user's info
aws iam list-users

# list all user's usernames
aws iam list-users --output text | cut -f 6

# list current user's info
aws iam get-user

# list current user's access keys
aws iam list-access-keys

# crate new user
aws iam create-user \
    --user-name aws-admin2

# create multiple new users, from a file
allUsers=$(cat ./user-names.txt)
for userName in $allUsers; do
    aws iam create-user \
        --user-name $userName
done

# list all users
aws iam list-users --no-paginate

# get a specific user's info
aws iam get-user \
    --user-name aws-admin2

# delete one user
aws iam delete-user \
    --user-name aws-admin2

# delete all users
# allUsers=$(aws iam list-users --output text | cut -f 6);
allUsers=$(cat ./user-names.txt)
for userName in $allUsers; do
    aws iam delete-user \
        --user-name $userName
done

密码政策

http://docs.aws.amazon.com/cli/latest/reference/iam/

# list policy
# http://docs.aws.amazon.com/cli/latest/reference/iam/get-account-password-policy.html
aws iam get-account-password-policy

# set policy
# http://docs.aws.amazon.com/cli/latest/reference/iam/update-account-password-policy.html
aws iam update-account-password-policy \
    --minimum-password-length 12 \
    --require-symbols \
    --require-numbers \
    --require-uppercase-characters \
    --require-lowercase-characters \
    --allow-users-to-change-password

# delete policy
# http://docs.aws.amazon.com/cli/latest/reference/iam/delete-account-password-policy.html
aws iam delete-account-password-policy

访问密钥

http://docs.aws.amazon.com/cli/latest/reference/iam/

# list all access keys
aws iam list-access-keys

# list access keys of a specific user
aws iam list-access-keys \
    --user-name aws-admin2

# create a new access key
aws iam create-access-key \
    --user-name aws-admin2 \
    --output text | tee aws-admin2.txt

# list last access time of an access key
aws iam get-access-key-last-used \
    --access-key-id AKIAINA6AJZY4EXAMPLE

# deactivate an acccss key
aws iam update-access-key \
    --access-key-id AKIAI44QH8DHBEXAMPLE \
    --status Inactive \
    --user-name aws-admin2

# delete an access key
aws iam delete-access-key \
    --access-key-id AKIAI44QH8DHBEXAMPLE \
    --user-name aws-admin2

组,策略,托管策略

http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html http://docs.aws.amazon.com/cli/latest/reference/iam/

# list all groups
aws iam list-groups

# create a group
aws iam create-group --group-name FullAdmins

# delete a group
aws iam delete-group \
    --group-name FullAdmins

# list all policies
aws iam list-policies

# get a specific policy
aws iam get-policy \
    --policy-arn <value>

# list all users, groups, and roles, for a given policy
aws iam list-entities-for-policy \
    --policy-arn <value>

# list policies, for a given group
aws iam list-attached-group-policies \
    --group-name FullAdmins

# add a policy to a group
aws iam attach-group-policy \
    --group-name FullAdmins \
    --policy-arn arn:aws:iam::aws:policy/AdministratorAccess

# add a user to a group
aws iam add-user-to-group \
    --group-name FullAdmins \
    --user-name aws-admin2

# list users, for a given group
aws iam get-group \
    --group-name FullAdmins

# list groups, for a given user
aws iam list-groups-for-user \
    --user-name aws-admin2

# remove a user from a group
aws iam remove-user-from-group \
    --group-name FullAdmins \
    --user-name aws-admin2

# remove a policy from a group
aws iam detach-group-policy \
    --group-name FullAdmins \
    --policy-arn arn:aws:iam::aws:policy/AdministratorAccess

# delete a group
aws iam delete-group \
    --group-name FullAdmins




EC2

密钥对

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html

# list all keypairs
# http://docs.aws.amazon.com/cli/latest/reference/ec2/describe-key-pairs.html
aws ec2 describe-key-pairs

# create a keypair
# http://docs.aws.amazon.com/cli/latest/reference/ec2/create-key-pair.html
aws ec2 create-key-pair \
    --key-name <value>

# create a new private / public keypair, using RSA 2048-bit
ssh-keygen -t rsa -b 2048

# import an existing keypair
# http://docs.aws.amazon.com/cli/latest/reference/ec2/import-key-pair.html
aws ec2 import-key-pair \
    --key-name keyname_test \
    --public-key-material file:///home/apollo/id_rsa.pub

# delete a keypair
# http://docs.aws.amazon.com/cli/latest/reference/ec2/delete-key-pair.html
aws ec2 delete-key-pair \
    --key-name <value>

安全组

http://docs.aws.amazon.com/cli/latest/reference/ec2/index.html

# list all security groups
aws ec2 describe-security-groups

# create a security group
aws ec2 create-security-group \
    --vpc-id vpc-1a2b3c4d \
    --group-name web-access \
    --description "web access"

# list details about a securty group
aws ec2 describe-security-groups \
    --group-id sg-0000000

# open port 80, for everyone
aws ec2 authorize-security-group-ingress \
    --group-id sg-0000000 \
    --protocol tcp \
    --port 80 \
    --cidr 0.0.0.0/24

# get my public ip
my_ip=$(dig +short myip.opendns.com @resolver1.opendns.com);
echo $my_ip

# open port 22, just for my ip
aws ec2 authorize-security-group-ingress \
    --group-id sg-0000000 \
    --protocol tcp \
    --port 80 \
    --cidr $my_ip/24

# remove a firewall rule from a group
aws ec2 revoke-security-group-ingress \
    --group-id sg-0000000 \
    --protocol tcp \
    --port 80 \
    --cidr 0.0.0.0/24

# delete a security group
aws ec2 delete-security-group \
    --group-id sg-00000000

实例

http://docs.aws.amazon.com/cli/latest/reference/ec2/index.html

# list all instances (running, and not running)
# http://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html
aws ec2 describe-instances

# create a new instance
# http://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html
aws ec2 run-instances \
    --image-id ami-f0e7d19a \    
    --instance-type t2.micro \
    --security-group-ids sg-00000000 \
    --dry-run

# stop an instance
# http://docs.aws.amazon.com/cli/latest/reference/ec2/terminate-instances.html
aws ec2 terminate-instances \
    --instance-ids <instance_id>

# list status of all instances
# http://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-status.html
aws ec2 describe-instance-status

# list status of a specific instance
aws ec2 describe-instance-status \
    --instance-ids <instance_id>

标签

# list the tags of an instance
# http://docs.aws.amazon.com/cli/latest/reference/ec2/describe-tags.html
aws ec2 describe-tags

# add a tag to an instance
# http://docs.aws.amazon.com/cli/latest/reference/ec2/create-tags.html
aws ec2 create-tags \
    --resources "ami-1a2b3c4d" \
    --tags Key=name,Value=debian

# delete a tag on an instance
# http://docs.aws.amazon.com/cli/latest/reference/ec2/delete-tags.html
aws ec2 delete-tags \
    --resources "ami-1a2b3c4d" \
    --tags Key=Name,Value=




的CloudWatch

日志组

http://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/WhatIsCloudWatchLogs.html http://docs.aws.amazon.com/cli/latest/reference/logs/index.html#cli-aws-logs

创建一个组

http://docs.aws.amazon.com/cli/latest/reference/logs/create-log-group.html

aws logs create-log-group \
    --log-group-name "DefaultGroup"
列出所有日志组

http://docs.aws.amazon.com/cli/latest/reference/logs/describe-log-groups.html

aws logs describe-log-groups

aws logs describe-log-groups \
    --log-group-name-prefix "Default"
删除一个组

http://docs.aws.amazon.com/cli/latest/reference/logs/delete-log-group.html

aws logs delete-log-group \
    --log-group-name "DefaultGroup"

记录流

# Log group names can be between 1 and 512 characters long. Allowed
# characters include a-z, A-Z, 0-9, '_' (underscore), '-' (hyphen),
# '/' (forward slash), and '.' (period).

# create a log stream
# http://docs.aws.amazon.com/cli/latest/reference/logs/create-log-stream.html
aws logs create-log-stream \
    --log-group-name "DefaultGroup" \
    --log-stream-name "syslog"

# list details on a log stream
# http://docs.aws.amazon.com/cli/latest/reference/logs/describe-log-streams.html
aws logs describe-log-streams \
    --log-group-name "syslog"

aws logs describe-log-streams \
    --log-stream-name-prefix "syslog"

# delete a log stream
# http://docs.aws.amazon.com/cli/latest/reference/logs/delete-log-stream.html
aws logs delete-log-stream \
    --log-group-name "DefaultGroup" \
    --log-stream-name "Default Stream"

使用Bash为Ubuntu进行AWS完成

以下实用程序可用于自动完成命令:

$ which aws_completer
/usr/bin/aws_completer

$ complete -C '/usr/bin/aws_completer' aws
 

对于将来的shell会话,请考虑将其添加到〜/ .bashrc中

$ echo "complete -C '/usr/bin/aws_completer' aws" >> ~/.bashrc
 

要检查,请键入:

$ aws ec
 

按[TAB]键,它应自动添加2:

$ aws ec2
 

创建新的配置文件

要设置名为myprofile 的新凭据配置文件:

$ aws configure --profile myprofile
AWS Access Key ID [None]: ACCESSKEY
AWS Secret Access Key [None]: SECRETKEY
Default region name [None]: REGIONNAME
Default output format [None]: text | table | json

对于AWS访问密钥ID和密钥,请在AWS控制台中创建IAM用户并为其生成密钥。

Region将是eu-west-1us-east-1 格式的命令的默认区域。

默认输出格式可以是texttablejson

您现在可以使用--profile 选项在其他命令中使用配置文件名称,例如:

$ aws ec2 describe-instances --profile myprofile

其他语言的AWS库(例如Ruby的aws-sdk 或Python的boto3 )也可以选择使用您使用此方法创建的配置文件。例如,在boto3 创建一个新会话可以这样做, boto3.Session(profile_name:'myprofile') ,它将使用您为配置文件创建的凭据。

您可以在~/.aws/config~/.aws/credentials (在linux和mac-os上)找到aws-cli配置的详细信息。可以从那里手动编辑这些细节。

安装和设置

在您的计算机上安装AWS CLI有多种不同的方法,具体取决于您使用的操作系统和环境:

在Microsoft Windows上 - 使用MSI安装程序。在Linux,OS X或Unix上 - 使用pip(Python软件包管理器)或使用捆绑安装程序手动安装。

使用pip安装:

你需要安装python(版本2,2.6.5 +,3或3.3+)。检查

python --version

pip --help
 

鉴于已安装这两个,请使用以下命令安装aws cli。

sudo pip install awscli
 

在Windows上安装 Microsoft Windows XP或更高版本支持AWS CLI。对于Windows用户,MSI安装包提供了一种熟悉且方便的方式来安装AWS CLI,而无需安装任何其他先决条件。 Windows用户应该使用MSI安装程序,除非他们已经使用pip进行包管理。

运行下载的MSI安装程序。按照显示的说明进行操作。

使用捆绑的安装程序安装AWS CLI

先决条件:

  • Linux,OS X或Unix
  • Python 2版本2.6.5+或Python 3版本3.3+
  1. 使用wget或curl下载AWS CLI捆绑安装程序。

  2. 解压缩包。

  3. 运行安装可执行文件。

在Linux和OS X上,以下是与每个步骤对应的三个命令:

$ curl "https://s3.amazonaws.com/aws-cli/awscli-bundle.zip" -o "awscli-bundle.zip"
$ unzip awscli-bundle.zip
$ sudo ./awscli-bundle/install -i /usr/local/aws -b /usr/local/bin/aws
 

在OS X上使用HomeBrew安装:

OS X的另一个选择

brew install awscli
 

测试AWS CLI安装

通过查看帮助文件确认CLI已正确安装。打开终端,shell或命令提示符,输入aws help并按Enter键:

$ aws help
 

配置AWS CLI

完成安装后,需要对其进行配置。您需要在aws上创建帐户时获得的访问密钥和密钥。您还可以指定默认区域名称和默认输出类型(text | table | json)。

$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default region name [None]: us-west-2
Default output format [None]: ENTER
 

更新CLI工具

亚马逊定期发布新版AWS工具。如果使用Python Pip工具安装该工具,则以下命令将检查远程存储库中的更新,并将其应用于本地系统。

$ pip install awscli --upgrade
 

列出S3存储桶

aws s3 ls
 

使用命名的配置文件

aws --profile myprofile s3 ls
 

列出存储桶中的所有对象,包括文件夹中的对象,其大小为人类可读的格式,最后是存储桶属性的摘要 -

aws s3 ls --recursive --summarize --human-readable s3://<bucket_name>/
 

使用aws cli命令

使用aws cli的语法如下:

aws [options] <command> <subcommand> [parameters]
 

使用'ec2'命令和'describe-instances'子命令的一些示例:

aws ec2 describe-instances

aws ec2 describe-instances --instance-ids <your-id>
 

假身份证的示例:

aws ec2 describe-instances --instance-ids i-c71r246a