Skip to content

Instantly share code, notes, and snippets.

@xujiajun
Forked from amowu/awscli.md
Created November 24, 2016 04:51
Show Gist options
  • Save xujiajun/f3cd6a14c8b2f88e7e4c5b9b14b80363 to your computer and use it in GitHub Desktop.
Save xujiajun/f3cd6a14c8b2f88e7e4c5b9b14b80363 to your computer and use it in GitHub Desktop.

Revisions

  1. @amowu amowu revised this gist Apr 14, 2015. 1 changed file with 10 additions and 10 deletions.
    20 changes: 10 additions & 10 deletions awscli.md
    Original file line number Diff line number Diff line change
    @@ -8,67 +8,67 @@

    有些时候,你可能需要关闭某个bucket并删除其储存的成百上千(或成千上万)个你不要的文件。如果你有删除大量存储在S3中内容的经历,那么你已经了解这是一个颇费时的操作。下面的命令将帮助你删除一个bucket,以及其储存的内容和目录:

    aws s3 rb s3://bucket-name --force
    `aws s3 rb s3://bucket-name --force`

    2. 递归地复制PC中的一个目录以及其子文件到Amazon S3

    如果你使用过S3控制台,在某一阶段,你可能会需要将PC中大量的文件复制到S3 bucket中。同样,这是一个体力活,需要耗费一定的时间,特别是你所需要复制的文件在一个多层目录下。下面的这条命令将简化这个操作,可以帮助你把PC的一个目录以及其下所有子文件夹复制到S3中的一个指定region。

    aws s3 cp MyFolder s3://bucket-name -- recursive [--region us-west-2]
    `aws s3 cp MyFolder s3://bucket-name -- recursive [--region us-west-2]`

    3. 查询所有可用ec2镜像的子集

    下面这条命令将根据条件在所有可用的ec2镜像上做搜索,在这里,我们过滤出所有基于Ubuntu的镜像(这里假设终端使用的是Linux或者Mac)。

    aws ec2 describe-images | grep ubuntu
    `aws ec2 describe-images | grep ubuntu`

    注意:这个操作可能会需要数分钟来完成。

    4. 在不同格式下列出用户

    有些时候,取决于你选择的默认输出格式,当你调用一个长列表时(比如一个大的用户集),输出格式的可读性可能并不理想。使用下面这条命令,在不修改默认设置的情况下,将会输出一个更易于阅读的表格。

    aws iam list-users --output table
    `aws iam list-users --output table`

    5. 显示一个S3 bucket和其储存项目的大小

    下面这条命令使用JSON输出来显示一个bucket的大小,以及其中储存项目的大小。在分析S3存储的使用情况时,你就可能用到这个命令。

    aws s3api list-objects --bucket BUCKETNAME --output json --query "[sum(Contents[].Size), length(Contents[])]"
    `aws s3api list-objects --bucket BUCKETNAME --output json --query "[sum(Contents[].Size), length(Contents[])]"`

    6. 将指定S3 bucket转移到另一个位置

    如果你想快速将一个S3 bucket移至别处,下面这条命令可能帮助你节约大量时间。

    aws s3 sync s3://oldbucket s3://newbucket --source-region us-west-1 --region us-west-2
    `aws s3 sync s3://oldbucket s3://newbucket --source-region us-west-1 --region us-west-2`

    7. 通过ARN列出用户

    “jq”类似于针对JSON数据的sed命令——你可以使用它来分割、过滤、映射及转换结构化数据,类似sed、awk、grep等在non-JSON文本中的功能。

    结合这个功能,我们再列出所有用户时可以只显示他们的ARN。

    aws iam list-users --output json | jq -r .Users[].Arn
    `aws iam list-users --output json | jq -r .Users[].Arn`

    注意:默认情况下,系统可能并不会安装jq。在基于Debian的系统中(包括Ubuntu),使用sudo apt-get来安装jq。

    8. 列出所有停止实例,及停止原因

    这是JSON输出参数的另一种用法。这次将列出所有停止的实例,并且显示停止原因:

    aws ec2 describe-instances --filters Name=instance-state-name,Values=stopped --region eu-west-1 --output json | jq -r .Reservations[].Instances[].StateReason.Message
    `aws ec2 describe-instances --filters Name=instance-state-name,Values=stopped --region eu-west-1 --output json | jq -r .Reservations[].Instances[].StateReason.Message`

    9. 检测你的一个CloudFormation模板

    如果你写了一个Cloud Formation Template,并需要在发布前对其进行验证,你可以使用如下命令在CLI中处理:

    aws cloudformation validate-template --region eu-west-1 --template-url https://s3-eu-west-1.amazonaws.com/ca/ca.cftemplate
    `aws cloudformation validate-template --region eu-west-1 --template-url https://s3-eu-west-1.amazonaws.com/ca/ca.cftemplate`

    10. 另一种使用JSON给AWS CLI传递输入参数的方法

    你可以给AWS CLI传递任何格式的输入参数。下面是一个例子:

    aws iam put-user-policy --user-name AWS-Cli-Test --policy-name Power-Access --policy-document '{ "Statement": [ { "Effect": "Allow", "NotAction": "iam:*", "Resource": "*" } ] }
    `aws iam put-user-policy --user-name AWS-Cli-Test --policy-name Power-Access --policy-document '{ "Statement": [ { "Effect": "Allow", "NotAction": "iam:*", "Resource": "*" } ] }`

    学会习惯使用AWS CLI

  2. @amowu amowu created this gist Apr 14, 2015.
    77 changes: 77 additions & 0 deletions awscli.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,77 @@
    摘要:本文阐述AWS CLI十个你不知道的实用命令,让您使用AWS Console可以让你轻松解决大部分工作, AWS CLI有时候还可以让事情处理起来更加简单容易。

    事实上,AWS CLI应该是你最好的工具。时至今日,AWS控制台的布局已经非常完善。随着时间的推移,AWS控制台也越来越易用。就算如此,如果你忽略了AWS CLI(Command Line Interface,命令行界面),那么你很可能错过了很多实用的功能,以及事半功倍的机会。如果现在你还不太适应使用AWS Command Line Interface,Cloud Academy上有一个很棒 AWS CLI入门教程。

    然而,即使你已经习惯了使用AWS CLI,我还是建议你看完下面的一些命令,它可以让你更深刻地认识到AWS CLI的强大,这些命令将帮助你节约大量时间。重要提示:在不同的版本和封装中,一些命令的语法可能出现些许不同。

    1. 只通过一条命令就可以删除指定的S3 bucket和其中的所有内容

    有些时候,你可能需要关闭某个bucket并删除其储存的成百上千(或成千上万)个你不要的文件。如果你有删除大量存储在S3中内容的经历,那么你已经了解这是一个颇费时的操作。下面的命令将帮助你删除一个bucket,以及其储存的内容和目录:

    aws s3 rb s3://bucket-name --force

    2. 递归地复制PC中的一个目录以及其子文件到Amazon S3

    如果你使用过S3控制台,在某一阶段,你可能会需要将PC中大量的文件复制到S3 bucket中。同样,这是一个体力活,需要耗费一定的时间,特别是你所需要复制的文件在一个多层目录下。下面的这条命令将简化这个操作,可以帮助你把PC的一个目录以及其下所有子文件夹复制到S3中的一个指定region。

    aws s3 cp MyFolder s3://bucket-name -- recursive [--region us-west-2]

    3. 查询所有可用ec2镜像的子集

    下面这条命令将根据条件在所有可用的ec2镜像上做搜索,在这里,我们过滤出所有基于Ubuntu的镜像(这里假设终端使用的是Linux或者Mac)。

    aws ec2 describe-images | grep ubuntu

    注意:这个操作可能会需要数分钟来完成。

    4. 在不同格式下列出用户

    有些时候,取决于你选择的默认输出格式,当你调用一个长列表时(比如一个大的用户集),输出格式的可读性可能并不理想。使用下面这条命令,在不修改默认设置的情况下,将会输出一个更易于阅读的表格。

    aws iam list-users --output table

    5. 显示一个S3 bucket和其储存项目的大小

    下面这条命令使用JSON输出来显示一个bucket的大小,以及其中储存项目的大小。在分析S3存储的使用情况时,你就可能用到这个命令。

    aws s3api list-objects --bucket BUCKETNAME --output json --query "[sum(Contents[].Size), length(Contents[])]"

    6. 将指定S3 bucket转移到另一个位置

    如果你想快速将一个S3 bucket移至别处,下面这条命令可能帮助你节约大量时间。

    aws s3 sync s3://oldbucket s3://newbucket --source-region us-west-1 --region us-west-2

    7. 通过ARN列出用户

    “jq”类似于针对JSON数据的sed命令——你可以使用它来分割、过滤、映射及转换结构化数据,类似sed、awk、grep等在non-JSON文本中的功能。

    结合这个功能,我们再列出所有用户时可以只显示他们的ARN。

    aws iam list-users --output json | jq -r .Users[].Arn

    注意:默认情况下,系统可能并不会安装jq。在基于Debian的系统中(包括Ubuntu),使用sudo apt-get来安装jq。

    8. 列出所有停止实例,及停止原因

    这是JSON输出参数的另一种用法。这次将列出所有停止的实例,并且显示停止原因:

    aws ec2 describe-instances --filters Name=instance-state-name,Values=stopped --region eu-west-1 --output json | jq -r .Reservations[].Instances[].StateReason.Message

    9. 检测你的一个CloudFormation模板

    如果你写了一个Cloud Formation Template,并需要在发布前对其进行验证,你可以使用如下命令在CLI中处理:

    aws cloudformation validate-template --region eu-west-1 --template-url https://s3-eu-west-1.amazonaws.com/ca/ca.cftemplate

    10. 另一种使用JSON给AWS CLI传递输入参数的方法

    你可以给AWS CLI传递任何格式的输入参数。下面是一个例子:

    aws iam put-user-policy --user-name AWS-Cli-Test --policy-name Power-Access --policy-document '{ "Statement": [ { "Effect": "Allow", "NotAction": "iam:*", "Resource": "*" } ] }

    学会习惯使用AWS CLI

    以上命令只是AWS CLI的非常小的一部分,但却展示了AWS CLI可以带来的强大帮助。毫无疑问,使用AWS Console可以让你轻松解决大部分工作, AWS CLI有时候还可以让事情处理起来更加简单,希望此文对大家有所帮助。

    [原文链接](http://cloudacademy.com/blog/aws-cli-10-useful-commands/)