WS Command Line Interface (AWS CLI) 是一个建立在AWS SDK for Python (Boto)之上的开源工具,用来与AWS的服务进行交互。只需要非常少的配置,你就可以使用你所熟知的终端程序来执行几乎所有你在AWS管理平台上所做的任何事情。
这些终端包括了:
- Linux命令行 – 可以使用在Linux, macOS或者Unix上使用的shell程序Bash, Zsh和tsch等
- Windows命令行 – 使用PowerShell或者Windows命令行工具
- 远程 – 使用SSH登陆到EC2实例上来远程执行命令
这也是AWS的魅力所在,所有基础架构的变化都能简化为代码和命令。因此你几乎可以对所有基础架构的创建、维护、管理和更改都代码化,自动化。
AWS CLI工具可以直接安装在Windows, Mac/Linux上,或者使用预装有AWS CLI的Amazon Linux AMI镜像所创建的EC2实例。
赋予AWS CLI权限
仅仅安装了AWS CLI工具还不够,你必须给它赋予一定的权限,这样它才能访问AWS内的资源。有两个方法可以赋予AWS CLI权限:
- 使用AWS IAM来创建一个新的AWS用户,赋予该用户一定的权限,并且为该用户创建AWS Access Key ID和AWS Secret Access Key的程序访问凭证。然后将凭证配置到AWS CLI上。
- 使用AWS IAM创建一个新的AWS角色,赋予该角色一定的权限,然后将这个角色赋予到使用Amazon Linux AMI创建的EC2实例上。
第一种方法适用于任何装有AWS CLI工具的客户端,甚至是自己的个人电脑。但一定不要泄露AWS Access Key ID和AWS Secret Access Key,否则别人可以使用这个凭证来随意在你的AWS上创建/使用资源。也不要把这些凭证放在Github上!
第二种方法适用于装有AWS CLI的EC2实例,这是被认为最安全的一种方式。
IAM角色
但使用Access Key ID和AWS Secret Access Key的凭证这种方式是不安全的,如果一旦这个凭证被泄露,任何人都可以通过这个凭证来获取你AWS内的资源。而且,如果你在管理成千上万台有类似需求的EC2实例,那么如果有一天需要更改Access Key ID和AWS Secret Access Key的时候,将是一场噩梦。
这个时候,AWS引进了角色(Role)的概念,可以通过角色的方式来赋予EC2实例一定的权限。并且你可以在IAM (Identity Access Management) 中随时更改角色都具有的权限,马上可以生效。
需要注意的是,在以前,角色是只能在EC2实例创建的时候赋予的,一旦赋予不能改变;而在近年的更新中,角色已经可以在EC2运行的时候再赋予或者更改了。