AWS

EC2

EBS卷创建的实例支持停止和重启,且可以有多种方法恢复;实例存储卷创建的实例不支持停止和重启,一旦停止,无法恢复该实例。EBS卷支持动态扩容和缩容。单EBS卷最大支持16T空间

IAM

IAM 角色是可在账户中创建的一种具有特定权限的 IAM 身份。IAM 角色类似于 IAM 用户,可在不共享您的安全证书的情况下允许其他用户、服务和应用程序使用您的 Amazon VPC 资源。角色可提供临时权限供应用程序在调用其他AWS资源时使用。当用户启动EC2实例时,可指定要与实例关联的IAM角色。然后,实例上运行的应用程序可使用角色提供的临时凭证对API请求进行签名。

IAM策略结构

S3

存储于 Amazon S3 中的每个对象都存储在存储桶中,对象键是创建对象时指定的键名称,它在存储桶中唯一地标识该对象。

存储对象

ELB和AutoScaling

ELB是负载均衡器,包括ALB(应用负载均衡器,支持HTTP负载均衡)、NLB(网络负载均衡器、支持TCP负载均衡)、CLB(经典负载均衡器、支持HTTP和TCP负载均衡),AutoScaling是用于保证有一定数量的ec2实例,也可以动态扩展示例数量,保证在高负载的时候服务的性能。

跨区域负载均衡

启用跨区域负载均衡后,流量会在各个可用区的目标之间均分,禁用后,流量先是在各个可用区的负载均衡器之间均分,再在各自的可用区之间均分。ALB始终启用夸区域负载均衡。

路由算法

ALB:负载均衡器节点会按照优先级顺序评估侦听器规则以确定应用那个规则,然后使用轮询算法从目标组中选择一个目标以实施规则 NLB:根据五元组和tcp序号,使用流式哈希算法从目标组中为默认规则选择一个目标 CLB:接受请求的负载均衡器节点将利用不同算法来选择已注册的实例。它对 TCP 侦听器使用轮询路由算法,对 HTTP 和 HTTPS 侦听器使用最少未完成请求路由算法。

HTTP

CLB和ALB支持多路复用

负载均衡器

VPC

创建VPC时,使用CIDR形式指定IPv4范围

联网组件
网络接口

就是网卡。在VPC中每个示例有一个主网络接口,及默认网络接口,无法从实例断开网络接口,但可以创建网络接口,挂载到实例。

路由表
  • VPC有一个隐式路由器
  • VPC会自动生成主路由表
  • VPC中的子网会默认与主路由表建立隐式关联
  • 只能新建一个路由表替换主路由表,不能直接删除主路由表

使用最长前缀匹配流量

Internet网关
仅出口Internet网关

仅出口 Internet 网关是一种横向扩展、支持冗余且高度可用的 VPC 组件,它能够实现从 VPC 中的实例经由 IPv6 到 Internet 的出站通信,并防止 Internet 发起与您的实例的 IPv6 连接。

NAT

您可以使用网络地址转换 (NAT) 网关允许私有子网中的实例连接到 Internet 或其他 AWS 服务,但阻止 Internet 发起与这些实例的连接。

  • 指定NAT网管所在的公有子网之中
  • 指定NAT网关的弹性IP地址
  • 更新私有子网的关联的路由表,将Internet绑定流量指向该网关
NAT实例

通过AMI启动NAT实例,相比较NAT网关,NAT实例支持自定义配置端口转发,随时更新弹性IP,等

DHCP选项集

非默认的VPC中启用的实例属于私有实例,即没有公有ipv4地址,默认被分配一个无法解析的主机名。 DHCP选项集支持的选项如下

  • 域名服务器DNS,最多四台,默认指定的是AmazonProvidedDNS,169.254.169.253
  • 域名
  • 网络时间协议服务器 NTP
  • NetBios名称服务器
  • NetBios节点类型
DNS

Amazon 提供的私有(内部)DNS 主机名解析为实例的私有 IPv4 地址,并对 us-east-1 区域采用 ip-private-ipv4-address.ec2.internal 形式,对其他区域采用 ip-private-ipv4-address.region.compute.internal 形式(其中 private-ipv4-address 是反向查找 IP 地址)。 对于 us-east-1 区域,公有(外部)DNS 主机名采用 ec2-public-ipv4-address.compute-1.amazonaws.com 形式,对于其他区域,则采用 ec2-public-ipv4-address.region.compute.amazonaws.com 形式。

弹性IP

弹性IP可以与VPC中的任何实例或者网关接口关联,借助弹性 IP 地址,可以迅速将地址重新映射到 VPC 中的另一个实例,从而屏蔽实例故障。注意,将弹性 IP 地址与网络接口关联,而不直接与实例关联的优势在于,只需一步,即可将网络接口的所有属性从一个实例移至另一个。

VPC终端节点

终端节点是虚拟设备。这些是水平扩展、冗余且具备高可用性的 VPC 组件,通过使用这些组件,可以在 VPC 中的实例与服务之间进行通信,而不会对网络通信带来可用性风险或带宽限制。

分为接口终端节点 和 网关终端节点

ClassicLink 允许您将 EC2-Classic 实例链接到账户中位于同一区域内的 VPC。这样,您可以将 VPC 安全组与 EC2-Classic 实例关联,以便允许 EC2-Classic 实例与 VPC 中的实例使用私有 IPv4 地址进行通信。通过 ClassicLink,无需使用公有 IPv4 地址或弹性 IP 地址即可在这些平台中的实例之间进行通信

VPN连接
AWS Site-to-Site VPN
AWS客户端VPN
AWS VPN CloudHub
第三方软件VPN设备

VPC

Amazon SQS

  • 安全性 – 您可以控制谁能向 Amazon SQS 队列发送消息以及谁能从队列接收消息。

  • 利用 服务器端加密 (SSE),可以使用 AWS Key Management Service (AWS KMS) 中托管的密钥保护队列中消息的内容,从而通过此方式传输敏感数据。

  • 持久性 – 为确保消息的安全,Amazon SQS 将消息存储在多个服务器上。标准队列支持至少一次消息传送,而 FIFO 队列支持仅一次消息处理。

  • 可用性 – Amazon SQS 使用冗余基础设施为生成和使用消息提供高度并发的消息访问和高可用性。

  • 可扩展性 – Amazon SQS 可独立处理各个缓冲的请求,并可透明扩展以处理任何负载增加或峰值,无需任何预配置指令。

  • 可靠性 – Amazon SQS 在处理期间锁定消息,以便多个生成者可同时发送消息,多个使用者可同时接收消息。

  • 自定义 – 您的队列不必完全相同—例如,您可以设置队列的默认延迟。可以使用 Amazon Simple Storage Service (Amazon S3) 或 Amazon DynamoDB 存储大于 256 KB 的消息的内容,Amazon SQS 保留指向 Amazon S3 对象的指针,您也可以将一个大消息拆分为几个小消息。

标准队列和FIFO队列

标准队列:所有区域可用,无线吞吐量,至少传送一次,最大努力排序

FIFO队列:部分区域可用,高吞吐量(3000条每秒),仅传输一次,先进先出传递

标准队列

在很多情况下使用标准消息队列(只要应用程序能够处理多次到达和不按顺序到达的消息),例如:

  • 将实时用户请求从密集型后台工作中分离 – 让用户在调整媒体大小或对媒体编码时上传媒体。

  • 将任务分配给多个工作程序节点 – 处理大量信用卡验证请求。

  • 将消息分批以便进一步处理 – 计划要添加到数据库的多个条目。

至少传递一次:讲程序设计为幂等应用程序,以便在多次接收同一个消息时结果不受不利影响

通过短轮询使用消息:当通过短轮询从队列中使用消息时,Amazon SQS 会对其一部分服务器(基于加权随机分布)进行采样,并且仅从这些服务器返回消息。因此,特定接收请求可能不会返回您的所有消息。但是,如果您的队列中的消息少于 1,000 条,一个后续请求将返回您的消息。如果继续从您的队列中使用消息,则 Amazon SQS 会对其所有服务器进行采样,然后您将收到您的所有消息。

先进先出队列
  • 发送和接收消息的顺序严格保持一致;一条消息传送一次后就保持可用,直到使用者处理并删除它为止。

  • 不会将重复项引入到队列中。

消息重复数据删除 ID: 如果成功发送了一条具有特定消息重复数据删除 ID 的消息,则在发送时使用了同一消息重复数据删除 ID 的任何消息都会被成功接受,但在 5 分钟重复数据删除时间间隔内不会发出。

消息组 ID: 指定某条消息属于特定消息组的标签。属于同一消息组的消息总是严格按照与消息组有关的某个顺序逐一进行处理

接收请求尝试 ID:用于 ReceiveMessage 调用的重复数据删除的令牌。

序列号: Amazon SQS 分配给每条消息的大型非连续编号

消息属性

消息属性组件:Name、Type、Value

消息属性数据类型Type:String、Number、Binary、Custom

死信队列

其他队列(源队列)可将其作为无法成功处理(使用)的消息的目标。

重新驱动策略 指定源队列、死信队列 以及 Amazon SQS 将消息从前者移至后者的条件(如果源队列的使用者无法处理消息指定次数)。当消息的 ReceiveCount 超出队列的 maxReceiveCount 时,Amazon SQS 会将该消息移到死信队列(带有其原始消息 ID)。例如,如果源队列的重新驱动策略已将 maxReceiveCount 设置为 5,并且源队列的使用器收到一条消息 5 次而从未删除它,则 Amazon SQS 会将该消息移至死信队列。

FIFO 队列的死信队列也必须为 FIFO 队列。同样,标准 队列的死信队列也必须为 标准 队列。

优点儿:

  • 为传输到死信队列的任何消息配置警报。

  • 查看日志以了解可能导致消息传输到死信队列的异常。

  • 分析传输到死信队列的消息的内容,以诊断软件问题或创建器/使用器的硬件问题。

  • 确定是否为使用者提供了充足的时间来处理消息。

可见性超时

在消费者接收到消息后,队列不会立即删除消息,为防止其他消费者再次处理消息,SQS设置了可见性超时,默认是30秒。在这段时间里,消费者可以处理和删除消息。但是,如果消费者在删除消息之前失败,并且系统没有在可见性超时结束之前对该消息调用 DeleteMessage 操作,则其他使用者将可以看到该消息并且再次接收该消息。如果某条消息只能被接收一次,消费者应在可见性超时期间内删除该消息。

延迟队列

创建延迟队列,在消息到达队列后的延时时间内,对用户不可见。延迟默认为0秒,最大为15分钟

对标准队列,更改延迟设置不会影响队列中已有的消息的延迟

对FIFO队列,更改延迟设置影响队列中已有的消息的延迟

消息定时器

对于单个消息,设置该消息的消息定时器,默认0秒,最大15分钟,让消息进入队列后的这段时间内对用户不可见。FIFO队列不支持单个消息上的计时器

Amazon SQS

Lambda

Lambda

通过 AWS Lambda,您可以在无服务器环境中运行函数,使用您选择的语言来处理事件。您的函数的每个实例都在一个隔离的执行上下文中运行,并且一次处理一个事件。当函数完成处理事件时,它会返回响应,并且 Lambda 会将响应发送到另一个事件。Lambda 会自动扩展您的函数的实例数,以处理更多数量的事件。

  • 函数:脚本或者程序
  • 运行时:类似容器,提供函数运行的环境
  • 层:包含库、自定义运行时或其他依赖项的ZIP存档
  • 事件源:可以触发函数并执行其逻辑的服务,比如Amazon SNS
  • 下游资源:比如DynamoDB、Amazon S3存储桶,一旦触发此服务,Lambda函数就会调用
  • 日志流:Lambda 会自动监控您的函数调用并向 CloudWatch 报告指标
  • AWS SAM:一个用于定义无服务器应用程序的模型