记录一下学习AWS时的知识点,方便自己后面翻阅查看。
0. 基本概念
Region(区域)
区域是不同的亚马逊云的地理区域,如亚太、中东、南美等。举例欧洲爱尔兰区域的实际命名为 “eu-west-1” ,eu是欧洲,west是西部,后面数值从1开始累加。
Availability Zone(可用区)
可用区简称AZ。一个区域有多个可用区,可用区之间物理隔离,可以简单理解为每个区域有多个独立的物理机房,当一个机房发生灾难挂了,不用影响到其它的机房。一个区域最少有3个可用区,多的有6个可用区。可用区名字为区域后加a、b、c,如 “eu-west-1a”、“eu-west-1b”。
提示
AWS有许多产品,大多数AWS产品是基于区域的,如EC2、S3等,也有些AWS产品是不区分区域的,如IAM、Route 53。如果右上角有地理区域信息,则表示当前页面的产品是基于区域的,可以点击展开区域列表更换区域;如果显示的是Global则表示该产品不区分区域,点击展开区域也不可变更(区域列表是置灰不可点击状态)。
1. IAM
AWS的root账号非常危险,所以我们不用root账号,而是用IAM用户。
User(用户)
就是一个个的真实存在的用户(人类)。可以给用用户添加权限,也可以给用户组添加权限,然后把该用户添加到指定的用户组,这样该用户会继承组权限(即拥有用户组的所有权限)。用户可以属于多个用户组,这种情况该用户将获得所有用户组的并集权限(即将所有用户组的权限加到一块儿并去重)。
User Group(用户组)
就是一个个用户组,可将用户添加到一个组中,或从一个组中移除。添加或移除指定用户组的权限时,该组下的用户也将增加或删除对应的权限。
Role(角色)
AWS的产品也需要使用一些权限,我们给这些AWS服务创建角色供它们使用而不是使用用户。
MFA(多因验证)
了解一下,考试可能会有。除了密码策略外,我们还能用MFA,它更加安全,即使密码泄露也不会被别人登录。MFA = Password + Security Device。主要的MFA厂商有Google Authenticator(手机上的软件)、Amazon Authy(多设备软件)和YubiKey的U2F(实体硬件,像一个U盘)、Gemalto的Fob MFA(实体硬件,像银行的U盾)。MFA一定要妥善保存,一旦丢失无法登录。
IAM Credentials Report
账户级。可以下载账户级别的报告,报告中可以看到某某用户的创建时间、最后一次使用密码的时间、最近一次更改密码时间、有没有使用MFA等等之类的详细信息。
IAM Access Advisor
用户级。可以查看用户使用权限的情况。通过该工具我们看到用户今天有使用到A权限、最近一月使用了B权限,还可以看到用户从来没有用过C权限。我们应该给用户分配足够用的最小权限,这时我们可以移除用户从来没有使用过的C权限。
2. AWS的交互
交互方式概论
我自己总结的通用交互方式,万变不离其宗,只有三种:
- GUI(Graphical User Interface):图形化界面,方便用户使用,如QQ、迅雷。GUI不只是安装在系统上的软件,也包括浏览器网页等所有以图形方式和用户交互的系统。
- CLI(Command-line Interface):命令行,对于用户来说没有GUI方便,但对程序来说方便之间互相交互,介于GUI和API之间取个平衡。如ffmpeg
- API(Application Programming Interface):应用编程接口,对于程序来说最佳的交互方式,但是用户无法使用。API的方式很多,如通过HTTP协议提供get、post等方法请求的网络API、JDK中的方法、.NET中的函数、动态链接库(.dll、.so)中可被外部程序调用的函数、各种编程SDK中的函数/方法等。
交互方式
AWS的交互方式有三种:
-
AWS Console
aws-console就是浏览器中的控制台网页,方便用户使用。 -
AWS CLI
aws-cli命令行方式,需要在Windows / Linux / Mac OS系统上安装aws-cli,然后就可以通过命令的方式使用了。aws-cli其实就是用python语言基于 aws sdk for pyhton 做一个封装开发。 -
AWS SDK
aws提供了可用于许多编程语言开发的库,称为aws-sdk,如aws sdk for java、aws sdk for .net、aws sdk for go、aws sdk for python等。
AWS Cloud Shell
AWS提供了一种云Shell,叫CloudShell,在AWS控制台可以看到。CloudShell就是一个位于云端的Shell,可供我们执行一些命令、上传下载文件等等。CloudShell重启后文件还在,我们在home目录创建一个文件,关闭网页或者重启CloudShell后这个文件还在。CloudShell已经预装了aws-cli,并且我们当前网页位于那个区域,CloudSh在这里插入代码片
ell就自动设定为哪个区域,我们使用什么用户登录的,CloudShell就采用什么用户来配置cli,方便得开箱即用。
3. 云产品 — EC2
实例类型
a. General purpose(通用型)
通用型实例的计算、内存和网络能力是均衡。适合做web服务器、代码仓库等场景。
b. Compute optimized(计算优化型)
高水平处理器,针对计算密集型任务进行了优化。应用场景如批处理数据、媒体转码、高性能web服务器、机器学习、游戏服务器。
c. Memory optimized(内存优化型)
拥有较大的内存,可以在内存中处理大型数据集。应用场景如关系型和非关系型数据库(主要是内存数据库)、分布式网络缓存、非结构化大数据应用程序的实时处理。
d. Storage optimized(存储优化型)
针对访问大量本地存储的数据集进行优化。应用场景如高频在线事务处理(OLTP)系统、关系型和非关系型数据库、内存数据库(如redis)的缓存、数据仓库应用、分布式文件系统。
e. Accelerated computing(加速计算型)
Linux 加速计算实例,使用硬件加速器或协处理器来执行一些功能,如浮点数计算、图形处理或数据模式匹配,比在 CPU 上运行的软件更有效(指GPU)。这些实例能在计算密集型工作负载上提供更高的并行度,以实现更高的吞吐量。
安全组
安全组就像位于EC2前面的防火墙,它根据规则管理进站和出站的流量。安全组的规则可以根据IP地址进行设置,也可以引入另一个安全组。注意:
- 安全组之间可以互相引用
- 安全组和EC2实例之间是多对多关系
- 一个安全组归属于一个Region下的VPC
- 默认情况下所有入站流量都被阻止,所有出站流量都被允许
实例角色
一般AMI预装了aws-cli,执行一些aws命令时会让用户进行配置,非常不建议在ec2实例上配置access key和key id,而是在控制台给该实例设置一个角色。为其指定特定的角色后,该ec2实例将具备该角色的所有权限。这时再执行aws命令,将能够正常执行。
关于登录EC2的一些坑
- 默认情况下EC2实例每次重启都会获得一个新的公网IP和DNS域名;
- 不同AMI的默认用户名不一样,比如Debian的用户名是admin,Amazon Linux的用户名是ec2-user,Windows的用户名是Administrator;
- 对于Linux系统的EC2实例,控制台的EC2 Instance Connect工具并非支持所有AMI,因为它需要实例系统上安装“EC2 Instance Connect”程序,目前EC2 Instance Connect程序只支持Ubuntu和Amazon Linux。EC2 Instance Connect本质也是通过SSH连接,如果安全组没有允许SSH端口,该工具同样会受限制而无法连接;
EC2实例启动类型
a. On-Demand Instances(按需实例)
推荐需要短时间使用稳定可靠的实例时使用。对于Linux和Windows系统按秒计费,对于其它操作系统按小时计费。费用比较贵,但是不需要预先付款,没有最低使用时长要求,可以随时启动、停止、终止实例。
b. Reserved(预留)
其费用能比按需实例大约节省75%。预留实例需要购买一年或三年(更优惠),可选择按月付费、部分补款或一次性付全款(更优惠)。有三种类型:
- Reserved Instances(预留实例):适合长时间工作负载,如数据库
- Convertible Reserved Instances(可转换的预留实例):提供灵活的实例,比如你想以后改变实例的类型,但折扣力度小一些,大约可节省54%。
Scheduled Reserved Instances(预定的预留实例):比如在未来一年,你只有每周周四下午3点至6点间才会使用该实例【已过时】
c. Spot Instance(竞价实例)
适合短时间的工作,最省钱,最高可节省90%,但不太可靠。如果当前价格高于你所设置的“可接受最高价格”,就会失去该实例。适合批处理作业、一次性数据分析、图像处理等,不适合用于运行关键作业或数据库。
d. Dedicated Hosts(专用主机)
预定整个物理服务器并控制实例放置。满足企业合规性要求,允许客户使用现已绑定服务器的软件许可。预定3年,价格昂贵。适合有强烈的监管或合规性要求、复杂的软件许可情况。
e. Dedicated Instance(专用实例)
相当于专用主机的软件版本。可以在同一个账户中与其它实例共享硬件,但没有关于如何放置实例的控制权力。有专门服务的硬件,但无法访问底层硬件。