均衡器http

http://www.taobao.com/  时间:2021-02-20  阅读:()

ElasticLoadBalancingApplicationLoadBalancerElasticLoadBalancingApplicationLoadBalancerElasticLoadBalancing:ApplicationLoadBalancerElasticLoadBalancingApplicationLoadBalancerTableofContents什么是应用程序负载均衡器1应用程序负载均衡器组件1应用程序负载均衡器概述1从传统负载均衡器迁移的好处2相关服务2定价3入门4开始前的准备工作4步骤1:选择负载均衡器类型4步骤2:配置负载均衡器和侦听器4步骤3:为负载均衡器配置安全组5步骤4:配置目标组5步骤5:向您的目标组注册目标5步骤6:创建并测试您的负载均衡器6步骤7:删除您的负载均衡器(可选)6教程:使用AWSCLI创建应用程序负载均衡器7开始前的准备工作7创建负载均衡器7添加HTTPS侦听器8添加基于路径的路由8删除负载均衡器9负载均衡器10您的负载均衡器的子网10负载均衡器安全组11负载均衡器状态11负载均衡器属性11IP地址类型12连接空闲超时13删除保护13异步缓解模式14ApplicationLoadBalancer和AWSWAF15创建负载均衡器15步骤1:配置负载均衡器和侦听器16步骤2:为HTTPS侦听器配置安全设置16步骤3:配置安全组17步骤4:配置目标组5步骤5:配置目标组的目标17步骤6:创建负载均衡器18更新可用区18更新安全组18推荐的规则19更新关联的安全组19更新地址类型20更新标签20删除负载均衡器21侦听器22侦听器配置22侦听器规则22默认规则23规则优先级23规则操作23规则条件23规则操作类型23固定响应操作24iiiElasticLoadBalancingApplicationLoadBalancer转发操作24重定向操作26规则条件类型27HTTP标头条件28HTTP请求方法条件28主机条件29路径条件29查询字符串条件30源IP地址条件31创建HTTP侦听器31先决条件31添加HTTP侦听器31创建HTTPS侦听器32SSL证书32安全策略34添加HTTPS侦听器36更新HTTPS侦听器37更新侦听器规则37要求38添加规则38编辑规则39重新排序规则40删除规则41更新HTTPS侦听器41替换默认证书41将证书添加到证书列表42从证书列表中删除证书42更新安全策略43验证用户身份43准备使用符合OIDC条件的IdP43准备使用AmazonCognito44准备使用AmazonCloudFront44配置用户身份验证44身份验证流程46用户申请编码和签名验证46身份验证注销和会话超时48X-Forwarded标头48X-Forwarded-For49X-Forwarded-Proto49X-Forwarded-Port49删除侦听器50目标组51路由配置51Targettype52协议版本52已注册目标53目标组属性54路由算法54取消注册延迟55慢启动模式56粘性会话57创建目标组58配置运行状况检查60运行状况检查设置60目标运行状况61运行状况检查原因代码62检查目标的运行状况63ivElasticLoadBalancingApplicationLoadBalancer修改目标组的运行状况检查设置63注册目标64目标安全组64注册或取消注册目标65Lambda函数作为目标67准备Lambda函数68为Lambda函数创建目标组66从负载均衡器接收事件69响应负载均衡器70多值标头70启用运行状况检查72注销Lambda函数73更新标签74删除目标组75监控负载均衡器76CloudWatch指标76应用程序负载均衡器指标76ApplicationLoadBalancer的指标维度85应用程序负载均衡器指标的统计数据85查看负载均衡器的CloudWatch指标86访问日志87访问日志文件88访问日志条目89存储桶权限96启用访问日志记录99禁用访问日志记录100处理访问日志文件100请求跟踪100语法101限制101CloudTrail日志102CloudTrail中的ElasticLoadBalancing信息102了解ElasticLoadBalancing日志文件条目102对负载均衡器进行故障排除105已注册目标未处于可用状态105客户端无法连接到面向Internet的负载均衡器105负载均衡器将请求发送到运行状况不佳的目标106负载均衡器发送响应代码000106负载均衡器生成HTTP错误106HTTP400:错误请求106HTTP401:未授权107HTTP403:禁止访问107HTTP405:不允许的方法107HTTP408:请求超时107HTTP413:有效负载过大107HTTP414:URI太长107HTTP460107HTTP463107HTTP464107HTTP500:内部服务器错误108HTTP501:未实现108HTTP502:无效网关108HTTP503:服务不可用108HTTP504:网关超时108HTTP505:不支持版本109HTTP561:未授权109目标生成HTTP错误109vElasticLoadBalancingApplicationLoadBalancerQuotas110文档历史记录111viElasticLoadBalancingApplicationLoadBalancer应用程序负载均衡器组件什么是应用程序负载均衡器ElasticLoadBalancing在一个或多个可用区中的多个目标(如EC2实例、容器和IP地址)之间自动分配传入的流量.
它监控已注册目标的运行状况,并且仅将流量路由到正常的目标.
ElasticLoadBalancing根据传入的流量随时间的变化对负载均衡器进行扩展.
它可以自动扩展来处理绝大部分工作负载.

ElasticLoadBalancing支持以下负载均衡器:ApplicationLoadBalancer、NetworkLoadBalancer、网关负载均衡器和ClassicLoadBalancer.
您可以选择最适合自己需求的负载均衡器类型.
本指南讨论ApplicationLoadBalancer.
有关其他负载均衡器的更多信息,请参阅NetworkLoadBalancer用户指南、网关负载均衡器用户指南和ClassicLoadBalancer用户指南.
应用程序负载均衡器组件负载均衡器充当客户端的单一接触点.
负载均衡器在多个可用区中的多个目标(例如EC2实例)间分配应用程序的传入流量.
这将提高应用程序的可用性.
可以向您的负载均衡器添加一个或多个侦听器.

侦听器使用您配置的协议和端口检查来自客户端的连接请求.
您为侦听器定义的规则确定负载均衡器如何将请求路由到其已注册目标.
每条规则由优先级、一个或多个操作以及一个或多个条件组成.
当规则的条件满足时,将执行其操作.
您必须为每个侦听器定义默认规则,并且可以选择定义其他规则.

每个目标组使用您指定的协议和端口号将请求路由到一个或多个注册目标,例如EC2实例.
您可以向多个目标组注册一个目标.
您可以对每个目标组配置运行状况检查.
在注册到目标组(它是使用负载均衡器的侦听器规则指定的)的所有目标上,执行运行状况检查.
下图介绍基本组成部分.
请注意,每个侦听器包含一个默认规则,并且一个侦听器包含将请求路由到不同目标组的另一条规则.
向两个目标组注册一个目标.
有关更多信息,请参阅以下文档:负载均衡器(p.
10)侦听器(p.
22)目标组(p.
51)应用程序负载均衡器概述应用程序负载均衡器在应用程序层正常工作,该层是开放系统互连(OSI)模型的第7层.
负载均衡器收到请求后,将按照优先级顺序评估侦听器规则以确定应用哪个规则,然后从目标组中选择规则操作目标.
可以配置侦听器规则,以根据应用程序流量的内容,将请求路由至不同的目标组.
每个目标组的路由都是单独进行1ElasticLoadBalancingApplicationLoadBalancer从传统负载均衡器迁移的好处的,即使某个目标已在多个目标组中注册.
可以配置目标组级别使用的路由算法.
默认路由算法为轮询路由算法;或者,可以指定最少未完成请求路由算法.
可以根据需求变化在负载均衡器中添加和删除目标,而不会中断应用程序的整体请求流.
ElasticLoadBalancing根据传输到应用程序的流量随时间的变化对负载均衡器进行扩展.
ElasticLoadBalancing能够自动扩展以处理绝大部分工作负载.
您可以配置运行状况检查,这些检查可用来监控注册目标的运行状况,以便负载均衡器只能将请求发送到正常运行的目标.
有关更多信息,请参阅ElasticLoadBalancing用户指南中的ElasticLoadBalancing工作原理.
从传统负载均衡器迁移的好处使用应用程序负载均衡器而不是传统负载均衡器具有以下优势:支持路径条件(p.
29).
对于根据请求中的URL转发请求的侦听器,您可以为它配置规则.
这让您可以将应用程序构造为较小的服务,并根据URL内容将请求路由到正确的服务.
支持主机条件(p.
29).
对于基于HTTP标头中主机字段转发请求的侦听器,您可以为它配置规则.
这使您能够使用单个负载均衡器将请求路由到多个域.
支持基于请求中的字段进行路由,例如HTTP标头条件(p.
28)和方法、查询参数和源IP地址.
支持将请求路由到单个EC2实例上的多个应用程序.
可以使用多个端口向同一个目标组注册每个实例或IP地址.
支持将请求从一个URL重定向到另一个URL.
支持返回自定义HTTP响应.
支持通过IP地址注册目标,包括位于负载均衡器的VPC之外的目标.
支持将Lambda函数注册为目标.
支持负载均衡器在路由请求之前使用应用程序用户的企业或社交身份对这些用户进行身份验证.

支持容器化的应用程序.
计划任务时,AmazonElasticContainerService(AmazonECS)可以选择一个未使用的端口,并可以使用此端口向目标组注册该任务.
这样可以高效地使用您的群集.

支持单独监控每个服务的运行状况,因为运行状况检查是在目标组级别定义的,并且许多CloudWatch指标是在目标组级别报告的.
将目标组挂载到AutoScaling组的功能使您能够根据需求动态扩展每个服务.
访问日志包含附加信息,并以压缩格式存储.
已改进负载均衡器性能.
有关每个负载均衡器类型支持的功能的更多信息,请参阅ElasticLoadBalancing的产品比较.
相关服务ElasticLoadBalancing可与以下服务一起使用来提高应用程序的可用性和可扩展性.
AmazonEC2—在云中运行应用程序的虚拟服务器.
您可以将负载均衡器配置为将流量路由到您的EC2实例.
AmazonEC2AutoScaling—确保运行所需数量的实例(即使实例失败也是如此),并可让您根据实例需求的变化自动增加或减少实例数.
如果您使用ElasticLoadBalancing启用AutoScaling,则AutoScaling启动的实例将自动向负载均衡器注册,并且AutoScaling终止的实例将自动从负载均衡器注销.
AWSCertificateManager—在创建HTTPS侦听器时,您必须指定由ACM提供的证书.
负载均衡器使用证书终止连接并解密来自客户端的请求.
有关更多信息,请参阅SSL证书(p.
32).
AmazonCloudWatch—使您能够监控负载均衡器并执行所需操作.
有关更多信息,请参阅应用程序负载均衡器的CloudWatch指标(p.
76).
2ElasticLoadBalancingApplicationLoadBalancer定价AmazonECS—使您能够在EC2实例集群上运行、停止和管理Docker容器.
您可以将负载均衡器配置为将流量路由到您的容器.
有关更多信息,请参阅AmazonElasticContainerServiceDeveloperGuide中的服务负载均衡.
AWSGlobalAccelerator—提高应用程序的可用性和性能.
使用加速器在一个或多个AWS区域的多个负载均衡器之间分配流量.
有关更多信息,请参阅AWSGlobalAccelerator开发人员指南.
Route53—通过将域名(如www.
example.
com)转换为计算机相互连接所用的数字IP地址(如192.
0.
2.
1),以一种可靠且经济的方式将访问者路由至网站.
AWS将向您的资源(如负载均衡器)分配URL.
不过,您可能希望使用方便用户记忆的URL.
例如,您可以将域名映射到负载均衡器.
AWSWAF—您可以结合使用AWSWAF和应用程序负载均衡器以根据Web访问控制列表(WebACL)中的规则允许或阻止请求.
有关更多信息,请参阅ApplicationLoadBalancer和AWSWAF(p.
15).
要查看与负载均衡器集成的服务的信息,请在AWS管理控制台中选择负载均衡器,并选择Integratedservices(集成的服务)选项卡.
定价利用负载均衡器,您可以按实际用量付费.
有关更多信息,请参阅ElasticLoadBalancing定价.
3ElasticLoadBalancingApplicationLoadBalancer开始前的准备工作ApplicationLoadBalancer入门本教程介绍通过AWS管理控制台(基于Web的界面)创建ApplicationLoadBalancer的实际操作.
要创建第一个应用程序负载均衡器,请完成以下步骤.
任务开始前的准备工作(p.
4)步骤1:选择负载均衡器类型(p.
4)步骤2:配置负载均衡器和侦听器(p.
4)步骤3:为负载均衡器配置安全组(p.
5)步骤4:配置目标组(p.
5)步骤5:向您的目标组注册目标(p.
5)步骤6:创建并测试您的负载均衡器(p.
6)步骤7:删除您的负载均衡器(可选)(p.
6)有关常见负载均衡器配置的演示,请参阅ElasticLoadBalancing演示.
开始前的准备工作决定您将用于EC2实例的两个可用区.
在每个这些可用区中配置至少带有一个公有子网的VirtualPrivateCloud(VPC).
这些公有子网用于配置负载均衡器.
您可以改为在这些可用区的其他子网中启动您的EC2实例.
在每个可用区中至少启动一个EC2实例.
请确保在每个EC2实例上安装Web服务器,例如Apache或InternetInformationServices(IIS).
确保这些实例的安全组允许端口80上的HTTP访问.
步骤1:选择负载均衡器类型ElasticLoadBalancing支持不同类型的负载均衡器.
在本教程中,您将创建一个应用程序负载均衡器.

创建应用程序负载均衡器1.
打开AmazonEC2控制台https://console.
amazonaws.
cn/ec2/.
2.
在导航栏上,选择您的负载均衡器的区域.
请确保选择用于EC2实例的同一个区域.
3.
在导航窗格上的LOADBALANCING下,选择LoadBalancers.
4.
选择CreateLoadBalancer.
5.
对于ApplicationLoadBalancer,选择Create.
步骤2:配置负载均衡器和侦听器在ConfigureLoadBalancer页面上,完成以下过程.
配置负载均衡器和侦听器1.
对于名称,输入负载均衡器的名称.
4ElasticLoadBalancingApplicationLoadBalancer步骤3:为负载均衡器配置安全组在区域的ApplicationLoadBalancer和NetworkLoadBalancer集内,应用程序负载均衡器的名称必须唯一,最多可以有32个字符,只能包含字母数字字符和连字符,不能以连字符开头或结尾,并且不能以"internal-"开头.
2.
对于Scheme和IPaddresstype,请保留默认值.
3.
对于Listeners,保留默认值,默认侦听器负责接收端口80上的HTTP流量.
4.
对于AvailabilityZones,选择用于EC2实例的VPC.
对于用于启动EC2实例的每个可用区,选择一个可用区,然后为该可用区选择公有子网.
5.
选择Next:ConfigureSecuritySettings.
6.
在本教程中,将不创建HTTPS侦听器.
选择Next:ConfigureSecurityGroups.
步骤3:为负载均衡器配置安全组您负载均衡器的安全组必须允许其通过侦听器端口和运行状况检查端口与已注册目标进行通信.
控制台可以代表您创建负载均衡器的安全组,其中包括指定正确协议和端口的规则.
如果您愿意,也可以自行创建和选择安全组.
有关更多信息,请参阅推荐的规则(p.
19).
在ConfigureSecurityGroups(配置安全组)页面上,完成以下过程以让ElasticLoadBalancing代表您为负载均衡器创建安全组.
为负载均衡器配置安全组1.
选择Createanewsecuritygroup.
2.
为安全组键入名称和描述,或者保留默认名称和描述.
此新安全组包含一条规则,该规则允许将流量传送到在ConfigureLoadBalancer页面上选择的负载均衡器侦听器端口.
3.
选择Next:ConfigureRouting.
步骤4:配置目标组创建一个要在请求路由中使用的目标组.
您侦听器的默认规则将请求路由到此目标组中的已注册目标.
负载均衡器使用为目标组定义的运行状况检查设置来检查此目标组中目标的运行状况.
在ConfigureRouting页面上,完成以下过程.
配置目标组1.
对于Targetgroup,保留默认值Newtargetgroup.
2.
对于名称,输入新目标组的名称.
3.
保留默认目标类型(Instance(实例))、协议(HTTP)和端口(80).
4.
对于Healthchecks(运行状况检查),保留默认设置.
5.
选择Next:RegisterTargets.
步骤5:向您的目标组注册目标在RegisterTargets页面上,完成以下过程.
向目标组注册您的实例1.
对于Instances,选择一个或多个实例.
2.
保留默认端口(80)并选择Addtoregistered(添加到已注册).
5ElasticLoadBalancingApplicationLoadBalancer步骤6:创建并测试您的负载均衡器3.
当您完成选择实例后,选择Next:Review.
步骤6:创建并测试您的负载均衡器在创建负载均衡器之前,请检查所选的设置.
在创建负载均衡器之后,可以验证其是否将流量发送到您的EC2实例.
创建并测试您的负载均衡器1.
在Review页面上,选择Create.
2.
在您收到已成功创建负载均衡器的通知后,选择Close.
3.
在导航窗格上的LOADBALANCING下,选择TargetGroups.
4.
选择新创建的目标组.
5.
在Targets选项卡中,验证您的实例是否已准备就绪.
如果实例状态是initial,很可能是因为,实例仍在注册过程中,或者未通过视为正常运行所需的运行状况检查最小数量.
在您的至少一个实例的状态为healthy后,便可测试负载均衡器.
6.
在导航窗格上的LOADBALANCING下,选择LoadBalancers.
7.
选择新创建的负载均衡器.
8.
在Description选项卡中,复制负载均衡器(例如,my-load-balancer-1234567890.
us-west-2.
elb.
amazonaws.
com)的DNS名称.
将DNS名称粘贴到已连接Internet的Web浏览器的地址栏中.
如果一切正常,浏览器会显示您服务器的默认页面.
9.
(可选)要定义其他侦听器规则,请参阅添加规则(p.
38).
步骤7:删除您的负载均衡器(可选)在您的负载均衡器可用之后,您需要为保持其运行的每小时或部分小时支付费用.
当您不再需要负载均衡器时,可将其删除.
当负载均衡器被删除之后,您便不再需要支付负载均衡器费用.
请注意,删除负载均衡器不会影响在负载均衡器中注册的目标.
例如,您的EC2实例会继续运行.
删除您的负载均衡器1.
打开AmazonEC2控制台https://console.
amazonaws.
cn/ec2/.
2.
在导航窗格上的LOADBALANCING下,选择LoadBalancers.
3.
选中负载均衡器的复选框,然后依次选择Actions、Delete.
4.
当系统提示进行确认时,选择Yes,Delete.
6ElasticLoadBalancingApplicationLoadBalancer开始前的准备工作教程:使用AWSCLI创建应用程序负载均衡器本教程介绍通过AWSCLI创建ApplicationLoadBalancer的实际操作.
开始前的准备工作使用以下命令可验证您运行的是否是支持ApplicationLoadBalancer的AWSCLI版本.
awselbv2help如果您获取的错误消息指示elbv2不是有效选择,请更新您的AWSCLI.
有关更多信息,请参阅AWSCommandLineInterface用户指南中的安装AWS命令行界面.
启动VirtualPrivateCloud(VPC)中您的EC2实例.
确保这些实例的安全组允许访问侦听器端口和运行状况检查端口.
有关更多信息,请参阅目标安全组(p.
64).
创建负载均衡器要创建第一个负载均衡器,请完成以下步骤.
创建负载均衡器1.
使用create-load-balancer命令创建负载均衡器.
您必须指定来自不同可用区的两个子网.
awselbv2create-load-balancer--namemy-load-balancer\--subnetssubnet-0e3f5cac72EXAMPLEsubnet-081ec835f3EXAMPLE--security-groupssg-07e8ffd50fEXAMPLE输出包含负载均衡器的Amazon资源名称(ARN),格式如下:arn:aws-cn:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-load-balancer/12345678901234562.
使用create-target-group命令创建目标组,并指定用于EC2实例的相同VPC:awselbv2create-target-group--namemy-targets--protocolHTTP--port80\--vpc-idvpc-0598c7d356EXAMPLE输出包含目标组的ARN,格式如下:arn:aws-cn:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/12345678901234563.
使用register-targets命令将您的实例注册到目标组:awselbv2register-targets--target-group-arntargetgroup-arn\7ElasticLoadBalancingApplicationLoadBalancer添加HTTPS侦听器--targetsId=i-0abcdef1234567890Id=i-1234567890abcdef04.
使用create-listener命令为您的负载均衡器创建侦听器,该侦听器带有将请求转发到目标组的默认规则:awselbv2create-listener--load-balancer-arnloadbalancer-arn\--protocolHTTP--port80\--default-actionsType=forward,TargetGroupArn=targetgroup-arn输出包含侦听器的ARN,格式如下:arn:aws-cn:elasticloadbalancing:us-west-2:123456789012:listener/app/my-load-balancer/1234567890123456/12345678901234565.
(可选)您可以使用此describe-target-health命令验证目标组的已注册目标的运行状况:awselbv2describe-target-health--target-group-arntargetgroup-arn添加HTTPS侦听器如果您拥有带HTTP侦听器的负载均衡器,则可按如下方式添加HTTPS侦听器.
向您的负载均衡器添加HTTPS侦听器1.
使用下列方法之一创建要用于负载均衡器的SSL证书:使用AWSCertificateManager(ACM)创建或导入证书.
有关更多信息,请参阅AWSCertificateManager用户指南中的请求证书或导入证书.
使用AWSIdentityandAccessManagement(IAM)上传证书.
有关更多信息,请参阅IAM用户指南中的使用服务器证书.
2.
使用create-listener命令创建侦听器,该侦听器带有将请求转发到目标组的默认规则.
在创建HTTPS侦听器时,您必须指定SSL证书.
请注意,您可以使用--ssl-policy选项指定默认值之外的SSL策略.
awselbv2create-listener--load-balancer-arnloadbalancer-arn\--protocolHTTPS--port443\--certificatesCertificateArn=certificate-arn\--default-actionsType=forward,TargetGroupArn=targetgroup-arn添加基于路径的路由如果您的侦听器具有可将请求转发到一个目标组的默认规则,则可添加一个将请求转发到另一个基于URL的目标组的规则.
例如,您可以将一般请求路由到一个目标组,并将图像显示请求路由到另一个目标组.

将规则添加到带路径模式的侦听器1.
使用create-target-group命令创建目标组:awselbv2create-target-group--namemy-targets--protocolHTTP--port80\--vpc-idvpc-0598c7d356EXAMPLE2.
使用register-targets命令将您的实例注册到目标组:8ElasticLoadBalancingApplicationLoadBalancer删除负载均衡器awselbv2register-targets--target-group-arntargetgroup-arn\--targetsId=i-0abcdef1234567890Id=i-1234567890abcdef03.
使用create-rule命令向侦听器添加一个可在URL包含指定模式时将请求转发到目标组的规则:awselbv2create-rule--listener-arnlistener-arn--priority10\--conditionsField=path-pattern,Values='/img/*'\--actionsType=forward,TargetGroupArn=targetgroup-arn删除负载均衡器当您不再需要负载均衡器和目标组时,可以将其删除,如下所示:awselbv2delete-load-balancer--load-balancer-arnloadbalancer-arnawselbv2delete-target-group--target-group-arntargetgroup-arn9ElasticLoadBalancingApplicationLoadBalancer您的负载均衡器的子网ApplicationLoadBalancer负载均衡器充当客户端的单一接触点.
客户端将请求发送到负载均衡器,负载均衡器再将它们发送到具体目标(例如EC2实例).
要配置您的负载均衡器,可以创建目标组(p.
51),然后将目标注册到目标组.
您还可以创建侦听器(p.
22)来检查来自客户端的连接请求,并创建侦听器规则以将来自客户端的请求路由到一个或多个目标组中的目标.
有关更多信息,请参阅ElasticLoadBalancing用户指南中的ElasticLoadBalancing工作原理.
目录您的负载均衡器的子网(p.
10)负载均衡器安全组(p.
11)负载均衡器状态(p.
11)负载均衡器属性(p.
11)IP地址类型(p.
12)连接空闲超时(p.
13)删除保护(p.
13)异步缓解模式(p.
14)ApplicationLoadBalancer和AWSWAF(p.
15)创建应用程序负载均衡器(p.
15)应用程序负载均衡器的可用区(p.
18)您的应用程序负载均衡器的安全组(p.
18)您的应用程序负载均衡器的IP地址类型(p.
20)应用程序负载均衡器的标签(p.
20)删除应用程序负载均衡器(p.
21)您的负载均衡器的子网创建应用程序负载均衡器时,必须指定下列子网类型之一:可用区、本地扩展区或Outpost.
可用区您必须至少选择两个可用区子网.
以下限制适用:每个子网都必须来自不同的可用区.
要确保您的负载均衡器可以正确扩展,请验证您的负载均衡器的每个可用区子网都具有一个带有至少一个/27位掩码的CIDR块(例如10.
0.
0.
0/27)和至少8个空闲IP地址.
您的负载均衡器将使用这些IP地址与目标建立连接.
本地扩展区您可以指定一个或多个本地扩展区子网.
以下限制适用:您不能与负载均衡器一起使用AWSWAF.
10ElasticLoadBalancingApplicationLoadBalancer负载均衡器安全组您不能将Lambda函数用作目标.
Outposts您可以指定单个Outpost子网.
以下限制适用:您必须已在本地数据中心中安装并配置了Outpost.
Outpost与其AWS区域之间必须具有可靠的网络连接.
有关更多信息,请参阅AWSOutposts用户指南.
负载均衡器需要在Outpost上为负载均衡器节点设置两个实例.
支持的实例包括通用型实例、计算优化型实例和内存优化型实例.
最初,实例是large实例.
负载均衡器可根据需要进行扩展,从large到xlarge,从xlarge到2xlarge以及从2xlarge到4xlarge.
如果您需要额外容量,负载均衡器会添加4xlarge实例.
如果您没有足够的实例容量或可用IP地址来扩展负载均衡器,负载均衡器将向AWSPersonalHealthDashboard报告事件,并且负载均衡器状态为active_impaired.
您可以通过实例ID或IP地址注册目标.
如果您在AWS区域中为Outpost注册目标,则不会使用这些目标.
以下功能不可用:Lambda函数作为目标、AWSWAF集成、粘性会话、身份验证支持以及与AWSGlobalAccelerator的集成.
负载均衡器安全组安全组起到防火墙的作用,可控制允许往返于负载均衡器的流量.
您可以选择端口和协议以允许入站和出站流量.
与负载均衡器关联的安全组的规则必须允许侦听器和运行状况检查端口上的双向流量.
当您将侦听器添加到负载均衡器或更新目标组的运行状况检查端口时,您必须检查您的安全组规则,确保它们允许新端口上的双向流量.
有关更多信息,请参阅推荐的规则(p.
19).
负载均衡器状态负载均衡器可能处于下列状态之一:provisioning正在设置负载均衡器.
active负载均衡器已完全设置并准备好路由流量.
active_impaired负载均衡器正在路由流量,但没有扩展所需的资源.
failed负载均衡器无法设置.
负载均衡器属性以下是负载均衡器属性:11ElasticLoadBalancingApplicationLoadBalancerIP地址类型access_logs.
s3.
enabled指示是否启用存储在AmazonS3中的访问日志.
默认为false.
access_logs.
s3.
bucket访问日志所用的AmazonS3存储桶的名称.
如果启用访问日志,则此属性是必需的.
有关更多信息,请参阅存储桶权限(p.
96).
access_logs.
s3.
prefixAmazonS3存储桶中位置的前缀.
deletion_protection.
enabled指示是否启用删除保护.
默认为false.
idle_timeout.
timeout_seconds空闲超时值(以秒为单位).
默认值为60秒.
routing.
http.
desync_mitigation_mode确定负载均衡器如何处理可能对您的应用程序构成安全风险的请求.
可能的值为monitor、defensive和strictest.
默认为defensive.
routing.
http.
drop_invalid_header_fields.
enabled指示具有无效标头字段的HTTP标头是被负载均衡器删除(true)还是路由到目标(false).
默认值为false.
ElasticLoadBalancing要求消息标头名称只包含字母数字字符和连字符.
routing.
http2.
enabled指示是否启用了HTTP/2.
默认为true.
waf.
fail_open.
enabled指示如果无法将请求转发到AWSWAF,是否允许启用WAF的负载均衡器将请求路由到目标.
该值为true或false.
默认为false.
IP地址类型您可以设置客户端可与面向Internet的负载均衡器一起使用的IP地址类型.
客户端必须将IPv4地址用于内部负载均衡器.
以下是IP地址类型:ipv4客户端必须使用IPv4地址连接到负载均衡器(例如192.
0.
2.
1).
dualstack客户端可以同时使用IPv4地址(例如192.
0.
2.
1)和IPv6地址(例如,2001:0db8:85a3:0:0:8a2e:0370:7334)连接到负载均衡器.
当您为负载均衡器启用双堆栈模式时,ElasticLoadBalancing为负载均衡器提供AAAADNS记录.
使用IPv4地址与负载均衡器通信的客户端解析ADNS记录.
使用IPv6地址与负载均衡器通信的客户端解析AAAADNS记录.
无论客户端以何种方式与负载均衡器通信,负载均衡器均使用IPv4地址与目标通信.
因此,目标不需要IPv6地址.
有关更多信息,请参阅您的应用程序负载均衡器的IP地址类型(p.
20).
12ElasticLoadBalancingApplicationLoadBalancer连接空闲超时连接空闲超时对于客户端通过负载均衡器发出的每个请求,负载均衡器将维护两个连接.
前端连接位于客户端和负载均衡器之间.
后端连接位于负载均衡器和目标之间.
负载均衡器具有应用于其连接的已配置空闲超时期限.
超过空闲超时期限后,如果没有发送或接收任何数据,负载均衡器将关闭连接.
为确保长时间运行的操作(例如文件上传)有足够时间来完成,请在到达每个空闲超时期限前发送至少1个字节的数据,并根据需要增大空闲超时期限的长度.
对于后端连接,我们建议您对EC2实例启用HTTP保持连接选项.
您可以在EC2实例的Web服务器设置中启用HTTP保持活动选项.
如果您启用HTTP保持活动选项,负载均衡器即可重复使用后端连接,直到保持活动超时过期.
此外,我们建议您将应用程序的空闲超时配置为大于负载均衡器的空闲超时的值.

默认情况下,ElasticLoadBalancing将负载均衡器的空闲超时值设置为60秒.
使用以下过程设置不同的空闲超时值.
使用控制台更新空闲超时值1.
打开AmazonEC2控制台https://console.
amazonaws.
cn/ec2/.
2.
在导航窗格上的LOADBALANCING下,选择LoadBalancers.
3.
选择负载均衡器.
4.
在Description选项卡上,选择Editattributes.
5.
在Editloadbalancerattributes(编辑负载均衡器属性)页面上,键入Idletimeout(空闲超时)值(以秒为单位).
有效范围为1-4000.
6.
选择Save.
使用AWSCLI更新空闲超时值使用带idle_timeout.
timeout_seconds属性的modify-load-balancer-attributes命令.
删除保护为了防止您的负载均衡器被意外删除,您可以启用删除保护.
默认情况下,已为负载均衡器禁用删除保护.

如果您为负载均衡器启用删除保护,则必须先禁用删除保护,然后才能删除负载均衡器.

使用控制台启用删除保护1.
打开AmazonEC2控制台https://console.
amazonaws.
cn/ec2/.
2.
在导航窗格上的LOADBALANCING下,选择LoadBalancers.
3.
选择负载均衡器.
4.
在Description选项卡上,选择Editattributes.
5.
在编辑负载均衡器属性页面上,为删除保护选择启用,然后选择保存.
6.
选择Save.
使用控制台禁用删除保护1.
打开AmazonEC2控制台https://console.
amazonaws.
cn/ec2/.
2.
在导航窗格上的LOADBALANCING下,选择LoadBalancers.
3.
选择负载均衡器.
4.
在Description选项卡上,选择Editattributes.
5.
在编辑负载均衡器属性页面上,为删除保护清除启用,然后选择保存.
13ElasticLoadBalancingApplicationLoadBalancer异步缓解模式6.
选择Save.
使用AWSCLI启用或禁用删除保护使用带deletion_protection.
enabled属性的modify-load-balancer-attributes命令.
异步缓解模式异步缓解模式可以保护您的应用程序不受由于HTTP异步造成的问题的影响.
负载均衡器根据每个请求的威胁级别对请求进行分类,允许安全请求,然后根据您指定的缓解模式来减轻风险.
异步缓解模式包括"监控"、"防御"和"最严格".
默认情况下采用"防御"模式,该模式可在保持应用程序可用性的同时,针对HTTP异步提供持久的缓解作用.
您可以切换到最严格模式,确保应用程序只接收符合RFC7230标准的请求.
http_desync_guardian库会分析HTTP请求,防止发生HTTP异步攻击.
有关更多信息,请参阅github上的HTTP异步监护.
分类下面列出了这些分类.
有关更多信息,请参阅分类原因(p.
92).
合规—请求符合RFC7230标准,不构成已知的安全威胁.
可接受—请求不符合RFC7230标准,但不构成已知的安全威胁.
不明确—请求不符合RFC7230标准,会带来风险,因为各个Web服务器和代理可能会以不同的方式处理该请求.
严重—请求会带来很高的安全风险.
负载均衡器会阻止请求,向客户端提供400响应,并关闭客户端连接.
如果请求不符合RFC7230标准,负载均衡器将递增DesyncMitigationMode_NonCompliant_Request_Count指标.
有关更多信息,请参阅应用程序负载均衡器指标(p.
76).
Modes下表描述ApplicationLoadBalancer如何根据模式和分类来处理请求.
分类.
监控模式防御模式最严格模式合规已允许已允许已允许可接受已允许已允许阻止不明确已允许允许阻止严重已允许阻止阻止系统将路由请求,但关闭客户端和目标连接.
如果您的负载均衡器在防御模式下收到大量不明确请求,则可能会产生额外费用.
这是因为每秒增加的新连接数会影响每小时使用的负载均衡器容量单位(LCU).
您可以使用NewConnectionCount指标比较负载均衡器在监控模式和防御模式下建立新连接的方式.
使用控制台更新异步缓解模式1.
打开AmazonEC2控制台https://console.
amazonaws.
cn/ec2/.
2.
在导航窗格上的LOADBALANCING下,选择LoadBalancers.
14ElasticLoadBalancingApplicationLoadBalancerApplicationLoadBalancer和AWSWAF3.
选择负载均衡器.
4.
在Description选项卡上,选择Editattributes.
5.
对于异步缓解模式,选择监控、防御或最严格.
6.
选择Save.
使用AWSCLI更新异步缓解模式使用modify-load-balancer-attributes命令,并将routing.
http.
desync_mitigation_mode属性设置为monitor、defensive或strictest.
ApplicationLoadBalancer和AWSWAF您可以使用AWSWAF和应用程序负载均衡器以根据Web访问控制列表(WebACL)中的规则允许或阻止请求.
有关更多信息,请参阅AWSWAF开发人员指南中的使用WebACL.
要检查负载均衡器是否与AWSWAF集成,请在AWS管理控制台中选择负载均衡器,然后选择Integratedservices(集成的服务)选项卡.
默认情况下,负载均衡器如果无法从AWSWAF获取响应,则将返回HTTP500错误且不会转发请求.
如果您需要负载均衡器即使无法联系AWSWAF也能将请求转发到目标,可以启用"WAF失败时开放"属性.
使用控制台启用"WAF失败时开放"1.
打开AmazonEC2控制台https://console.
amazonaws.
cn/ec2/.
2.
在导航窗格上的LOADBALANCING下,选择LoadBalancers.
3.
选择负载均衡器.
4.
在Description选项卡上,选择Editattributes.
5.
对于WAFfailopen,选择Enable.
6.
选择Save.
使用AWSCLI启用"WAF失败时开放"使用modify-load-balancer-attributes命令,并将waf.
fail_open.
enabled属性设置为true.
创建应用程序负载均衡器负载均衡器接收来自客户端的请求,并将请求分发给目标组中的目标.
开始前,请确保您有一个满足以下要求的VirtualPrivateCloud(VPC):在目标使用的每个可用区中至少有一个公有子网.
要使用AWSCLI创建负载均衡器,请参阅教程:使用AWSCLI创建应用程序负载均衡器(p.
7).
要使用AWS管理控制台创建负载均衡器,请完成以下任务.
任务步骤1:配置负载均衡器和侦听器(p.
16)步骤2:为HTTPS侦听器配置安全设置(p.
16)步骤3:配置安全组(p.
17)步骤4:配置目标组(p.
5)步骤5:配置目标组的目标(p.
17)15ElasticLoadBalancingApplicationLoadBalancer步骤1:配置负载均衡器和侦听器步骤6:创建负载均衡器(p.
18)步骤1:配置负载均衡器和侦听器首先,为负载均衡器提供一些基本配置信息,如名称、网络及一个或多个侦听器.
侦听器是用于检查连接请求的进程.
它配置了用于从客户端连接到负载均衡器的协议和端口.
有关受支持的协议和端口的更多信息,请参阅侦听器配置(p.
22).
配置负载均衡器和侦听器1.
打开AmazonEC2控制台https://console.
amazonaws.
cn/ec2/.
2.
在导航窗格上的LOADBALANCING下,选择LoadBalancers.
3.
选择CreateLoadBalancer.
4.
对于ApplicationLoadBalancer,选择Create.
5.
对于名称,输入负载均衡器的名称.
例如:my-alb.
6.
对于Scheme,面向Internet的负载均衡器将来自客户端的请求通过Internet路由到目标.
内部负载均衡器使用私有IP地址将请求路由到目标.
7.
对于IP地址类型,如果您的客户端使用IPv4地址与负载均衡器通信,请选择IPv4;如果客户端同时使用IPv4和IPv6地址与负载均衡器通信,则选择双栈.
如果负载均衡器是内部负载均衡器,则必须选择IPv4.
8.
对于Listeners,默认值是负责接收端口80上的HTTP流量的侦听器.
您可保留默认侦听器设置,修改协议或修改端口.
选择Add可添加其他侦听器(例如,HTTPS侦听器).
9.
为每个区域选择一个要启用的子网.
如果您为负载均衡器启用了双堆栈模式,请选择具有关联IPv6CIDR块的子网.
您可以指定以下几项之一:至少来自两个可用区的子网来自一个或多个本地扩展区的子网一个Outpost子网10.
(可选)您可以使用附加服务、AWSGlobalAccelerator创建加速器并将负载均衡器与加速器关联.
11.
(可选)对于标签,为要添加到负载均衡器的每个标签指定键和值.
12.
选择Next:ConfigureSecuritySettings.
步骤2:为HTTPS侦听器配置安全设置如果在上一步中创建了HTTPS侦听器,则配置必需的安全设置.
否则,请转至向导中的下一页.
当您对负载均衡器侦听器使用HTTPS时,必须在负载均衡器上部署SSL证书.
负载均衡器先使用此证书终止连接,然后解密来自客户端的请求,最后再将请求发送到目标.
有关更多信息,请参阅SSL证书(p.
32).
您还必须指定负载均衡器用于协商与客户端的SSL连接的安全策略.
有关更多信息,请参阅安全策略(p.
34).
配置证书和安全策略1.
对于Selectdefaultcertificate,执行下列操作之一:如果使用AWSCertificateManager创建或导入了证书,请选择ChooseacertificatefromACM(从ACM中选择证书),然后从Certificatename(证书名称)中选择证书.
如果使用IAM上传了证书,请选择ChooseacertificatefromIAM(从IAM中选择证书),然后从Certificatename(证书名称)中选择证书.
2.
对于Securitypolicy,我们建议保留默认安全策略.
3.
选择Next:ConfigureSecurityGroups.
16ElasticLoadBalancingApplicationLoadBalancer步骤3:配置安全组步骤3:配置安全组您负载均衡器的安全组必须允许其通过侦听器端口和运行状况检查端口与已注册目标进行通信.
控制台可代表您为负载均衡器创建一个具有允许此通信的规则的安全组.
如果您愿意,也可创建一个安全组然后选择它.
有关更多信息,请参阅推荐的规则(p.
19).
为负载均衡器配置安全组1.
选择Createanewsecuritygroup.
2.
为安全组输入名称和描述,或者保留默认名称和描述.
此新安全组包含一条规则,该规则允许将流量传送到在ConfigureLoadBalancer页面上为负载均衡器选择的端口.
3.
选择Next:ConfigureRouting.
步骤4:配置目标组将目标注册到目标组.
您在此步骤中配置的目标组将用作将请求转发到目标组的默认侦听器规则中的目标组.
有关更多信息,请参阅ApplicationLoadBalancer的目标组(p.
51).
配置目标组1.
对于Targetgroup,保留默认值Newtargetgroup.
2.
对于名称,输入目标组的名称.
3.
对于Targettype(目标类型),选择Instance(实例)按实例ID注册目标,选择IP注册IP地址,选择Lambdafunction(Lambda函数)注册Lambda函数.
4.
(可选)如果目标类型为Instance(实例)或IP,请根据需要修改端口和协议.
5.
(可选)如果目标类型为Lambdafunction(Lambda函数),请根据需要启用运行状况检查.
6.
对于Healthchecks,保留默认运行状况检查设置.
7.
选择Next:RegisterTargets.
步骤5:配置目标组的目标利用应用程序负载均衡器,您的目标组的目标类型将决定如何向该目标组注册目标.

通过实例ID注册目标1.
对于Instances,选择一个或多个实例.
2.
输入实例侦听器端口,然后选择添加到已注册端口.
3.
当您注册完实例后,选择Next:Review.
注册IP地址1.
对于每个要注册的IP地址,请执行以下操作:a.
对于Network,如果IP地址来自目标组VPC的子网,则选择该VPC.
否则,请选择OtherprivateIPaddress.
b.
对于IP,输入IP地址.
c.
对于端口,输入端口号.
d.
选择Addtolist.
2.
在将IP地址添加到列表中后,选择Next:Review.
17ElasticLoadBalancingApplicationLoadBalancer步骤6:创建负载均衡器注册Lambda函数1.
对于Lambdafunction(Lambda函数),请执行下列操作之一:选择Lambda函数创建新的Lambda函数并选择此函数创建目标组后注册Lambda函数2.
选择Next:Review.
步骤6:创建负载均衡器在创建负载均衡器之后,您可验证您的目标是否通过了初始运行状况检查,然后测试负载均衡器是否会将流量发送至您的目标.
使用完负载均衡器之后,您可将其删除.
有关更多信息,请参阅删除应用程序负载均衡器(p.
21).
创建负载均衡器1.
在Review页面上,选择Create.
2.
创建负载均衡器之后,选择Close.
3.
(可选)要定义基于路径模式或主机名转发请求的其他侦听器规则,请参阅添加规则(p.
38).
应用程序负载均衡器的可用区您可随时启用或禁用负载均衡器的可用区.
在启用一个可用区后,负载均衡器会开始将请求路由到该可用区中的已注册目标.
如果您确保每个启用的可用区均具有至少一个注册目标,则负载均衡器将具有最高效率.

在禁用一个可用区后,该可用区中的目标仍将注册到负载均衡器,但负载均衡器不会向这些目标路由请求.

使用控制台更新可用区1.
打开AmazonEC2控制台https://console.
amazonaws.
cn/ec2/.
2.
在导航窗格上的LOADBALANCING下,选择LoadBalancers.
3.
选择负载均衡器.
4.
在Description选项卡上的BasicConfiguration下,选择EditAvailabilityZones.
5.
要启用区域,请选中该区域的复选框并选择一个子网.
如果该区域只有一个子网,则将选择此子网.
如果该区域有多个子网,请选择其中一个子网.
6.
要更改已启用的可用区的子网,请选中Changesubnet,然后选择其他子网之一.
7.
要删除可用区,请清除该可用区的复选框.
8.
选择Save.
使用AWSCLI更新可用区使用set-subnets命令.
您的应用程序负载均衡器的安全组您必须确保负载均衡器可同时在侦听器端口和运行状况检查端口上与已注册目标进行通信.
当您将侦听器添加到负载均衡器或更新负载均衡器所使用的目标组的运行状况检查端口来路由请求时,您必须验证与负载均衡器关联的安全组是否允许新端口上的双向流量.
如果它们不允许,您可以编辑当前关联的安全组的规则或将其他安全组与负载均衡器关联.
在VPC中,您为负载均衡器提供安全组,以便您能够选择要允许的端口和18ElasticLoadBalancingApplicationLoadBalancer推荐的规则协议.
例如,您可以打开负载均衡器的Internet控制消息协议(ICMP)连接,以响应Ping请求(但是,Ping请求不会转发至任何实例).
推荐的规则对于面向Internet的负载均衡器,建议使用以下规则.
InboundSourcePortRangeComment0.
0.
0.
0/0侦侦侦在负载均衡器侦听器端口上允许所有入站流量OutboundDestinationPortRangeComment侦侦侦侦侦侦侦侦侦侦在实例侦听器端口上允许流向实例的出站流量侦侦侦侦侦侦侦侦侦侦侦在运行状况检查端口上允许流向实例的出站流量建议内部负载均衡器使用以下规则.
InboundSourcePortRangeCommentVPCCIDR侦侦侦在负载均衡器侦听器端口上允许来自VPCCIDR的入站流量OutboundDestinationPortRangeComment侦侦侦侦侦侦侦侦侦侦在实例侦听器端口上允许流向实例的出站流量侦侦侦侦侦侦侦侦侦侦侦在运行状况检查端口上允许流向实例的出站流量我们还建议您允许入站ICMP流量以支持路径MTU发现.
有关更多信息,请参阅AmazonEC2用户指南(适用于Linux实例)中的路径MTU发现.
更新关联的安全组您可以随时更新与负载均衡器关联的安全组.
使用控制台更新安全组1.
打开AmazonEC2控制台https://console.
amazonaws.
cn/ec2/.
2.
在导航窗格上的LOADBALANCING下,选择LoadBalancers.
3.
选择负载均衡器.
4.
在Description选项卡上的Security下,选择Editsecuritygroups.
5.
要将一个安全组与负载均衡器关联,请选择此安全组.
要从负载均衡器中删除一个安全组,请清除该安全组.
6.
选择Save.
19ElasticLoadBalancingApplicationLoadBalancer更新地址类型使用AWSCLI更新安全组使用set-security-groups命令.
您的应用程序负载均衡器的IP地址类型您可以配置您的应用程序负载均衡器,以便客户端可以仅使用IPv4地址或同时使用IPv4和IPv6地址与负载均衡器进行通信.
无论客户端以何种方式与负载均衡器通信,负载均衡器均使用IPv4地址与目标通信.
有关更多信息,请参阅IP地址类型(p.
12).
IPv6要求具有dualstackIP地址类型的面向Internet的负载均衡器.
您可以在创建负载均衡器时设置IP地址类型并随时更新它.
您为负载均衡器指定的VirtualPrivateCloud(VPC)和子网必须具有关联的IPv6CIDR块.
有关更多信息,请参阅AmazonEC2用户指南中的IPv6地址.
负载均衡器子网的路由表必须路由IPv6流量.
负载均衡器的安全组必须允许IPv6流量.
负载均衡器子网的网络ACL必须允许IPv6流量.
在创建时设置IP地址类型按照创建负载均衡器(p.
16)中的描述配置设置.
使用控制台更新IP地址类型1.
打开AmazonEC2控制台https://console.
amazonaws.
cn/ec2/.
2.
在导航窗格上的LOADBALANCING下,选择LoadBalancers.
3.
选择负载均衡器.
4.
选择Actions和EditIPaddresstype.
5.
对于IPaddresstype,选择ipv4可仅支持IPv4地址,选择dualstack可同时支持IPv4和IPv6地址.
6.
选择Save.
使用AWSCLI更新IP地址类型使用set-ip-address-type命令.
应用程序负载均衡器的标签使用标签可帮助您按各种标准对负载均衡器进行分类,例如按用途、所有者或环境.

您最多可以为每个负载均衡器添加多个标签.
每个负载均衡器的标签键必须唯一.
如果您添加的标签中的键已经与负载均衡器关联,它将更新该标签的值.
当您用完标签时,可以从负载均衡器中将其删除.
限制每个资源的最大标签数—50最大密钥长度—127个Unicode字符最大值长度—255个Unicode字符20ElasticLoadBalancingApplicationLoadBalancer删除负载均衡器标签键和值区分大小写.
允许使用的字符包括可用UTF-8格式表示的字母、空格和数字,以及以下特殊字符:请不要使用前导空格或尾随空格.
请勿在标签名称或值中使用aws:前缀,因为它专为AWS使用预留.
您无法编辑或删除带此前缀的标签名称或值.
具有此前缀的标签不计入每个资源的标签数限制.
使用控制台更新负载均衡器的标签1.
打开AmazonEC2控制台https://console.
amazonaws.
cn/ec2/.
2.
在导航窗格上的LOADBALANCING下,选择LoadBalancers.
3.
选择负载均衡器.
4.
在Tags选项卡上,选择Add/EditTags,然后执行以下一项或多项操作:a.
要更新标签,请编辑Key和Value的值.
b.
要添加新标签,请选择创建标签,然后为键和值输入值.
c.
要删除标签,请选择标签旁边的删除图标(X).
5.
完成更新标签后,选择Save.
使用AWSCLI更新负载均衡器的标签使用add-tags和remove-tags命令.
删除应用程序负载均衡器在您的负载均衡器可用之后,您需要为保持其运行的每小时或部分小时支付费用.
当您不再需要该负载均衡器时,可将其删除.
当负载均衡器被删除之后,您便不再需要支付负载均衡器费用.

如果已启用删除保护,则无法删除负载均衡器.
有关更多信息,请参阅删除保护(p.
13).
请注意,删除负载均衡器不会影响其注册目标.
例如,您的EC2实例将继续运行并仍注册到其目标组.
要删除目标组,请参阅删除目标组(p.
75).
使用控制台删除负载均衡器1.
如果您有一个指向负载均衡器的域的一个别名记录,请将它指向新的位置并等待DNS更改生效,然后再删除您的负载均衡器.
2.
打开AmazonEC2控制台https://console.
amazonaws.
cn/ec2/.
3.
在导航窗格上的LOADBALANCING下,选择LoadBalancers.
4.
选择负载均衡器,然后选择Actions和Delete.
5.
当系统提示进行确认时,选择Yes,Delete.
使用AWSCLI删除负载均衡器使用delete-load-balancer命令.
21ElasticLoadBalancingApplicationLoadBalancer侦听器配置ApplicationLoadBalancer的侦听器在开始使用应用程序负载均衡器之前,您必须添加一个或多个侦听器.
侦听器是一个使用您配置的协议和端口检查连接请求的进程.
您为侦听器定义的规则确定负载均衡器如何将请求路由到其已注册目标.

目录侦听器配置(p.
22)侦听器规则(p.
22)规则操作类型(p.
23)规则条件类型(p.
27)为您的应用程序负载均衡器创建HTTP侦听器(p.
31)为您的应用程序负载均衡器创建HTTPS侦听器(p.
32)为应用程序负载均衡器定义侦听器规则(p.
37)针对您的应用程序负载均衡器更新HTTPS侦听器(p.
41)使用应用程序负载均衡器验证用户身份(p.
43)HTTP标头和ApplicationLoadBalancer(p.
48)删除应用程序负载均衡器的侦听器(p.
50)侦听器配置侦听器支持以下协议和端口:协议:HTTP、HTTPS端口:1-65535可以使用HTTPS侦听器将加密和解密的工作交给负载均衡器完成,以便应用程序可以专注于其业务逻辑.

如果侦听器协议为HTTPS,您必须在侦听器上部署至少一个SSL服务器证书.
有关更多信息,请参阅为您的应用程序负载均衡器创建HTTPS侦听器(p.
32).
ApplicationLoadBalancer为WebSockets提供本机支持.
您可以使用HTTP连接升级将现有HTTP/1.
1连接升级为WebSocket(ws或wss)连接.
升级时,用于(向负载均衡器和目标)请求的TCP连接将通过负载均衡器成为客户端和目标之间的永久性WebSocket连接.
您可以对HTTP和HTTPS侦听器同时使用WebSocket.
您为侦听器选择的选项适用于WebSocket连接以及HTTP流量.
有关更多信息,请参阅AmazonCloudFront开发人员指南中的WebSocket协议的工作原理.
ApplicationLoadBalancer为将HTTP/2与HTTPS侦听器一起使用提供本机支持.
使用一个HTTP/2连接最多可以并行发送128个请求.
默认情况下,负载均衡器将这些请求转换为单独的HTTP/1.
1请求,并将它们分配给目标组中的正常目标.
但是,您可以通过协议版本使用HTTP/2将请求发送到目标.
有关更多信息,请参阅协议版本(p.
52).
由于HTTP/2可以更高效地使用前端连接,您可能注意到客户端与负载均衡器之间的连接较少.
无法使用HTTP/2的服务器推送功能.
有关更多信息,请参阅ElasticLoadBalancing用户指南中的请求路由.
侦听器规则每个侦听器都具有默认规则,您也可以选择定义其他规则.
每条规则由优先级、一个或多个操作以及一个或多个条件组成.
您可以随时添加或编辑规则.
有关更多信息,请参阅编辑规则(p.
39).
22ElasticLoadBalancingApplicationLoadBalancer默认规则默认规则创建侦听器时,请为默认规则定义操作.
默认规则不能有条件.
如果未满足侦听器的任一规则条件,则将执行默认规则的操作.
下面是控制台中所示的默认规则的示例:规则优先级每个规则都有一个优先级.
规则是按优先级顺序(从最低值到最高值)计算的.
最后评估默认规则.
您可以随时更改非默认规则的优先级.
您不能更改默认规则的优先级.
有关更多信息,请参阅重新排序规则(p.
40).
规则操作每个规则操作都具有执行操作所需的类型、顺序和信息.
有关更多信息,请参阅规则操作类型(p.
23).
规则条件每个规则条件都有类型和配置信息.
当规则的条件满足时,将执行其操作.
有关更多信息,请参阅规则条件类型(p.
27).
规则操作类型以下是侦听器规则支持的操作类型:authenticate-cognito[HTTPS侦听器]使用AmazonCognito验证用户身份.
有关更多信息,请参阅使用应用程序负载均衡器验证用户身份(p.
43).
authenticate-oidc[HTTPS侦听器]使用符合OpenIDConnect(OIDC)条件的身份提供商验证用户身份.
fixed-response返回自定义HTTP响应.
有关更多信息,请参阅固定响应操作(p.
24).
forward将请求转发到指定目标组.
有关更多信息,请参阅转发操作(p.
24).
redirect将请求从一个URL重定向到另一个.
有关更多信息,请参阅重定向操作(p.
26).
先执行顺序值最小的操作.
每条规则必须包含以下操作之一:forward、redirect或fixed-response,并且其必须为要执行的最后一个操作.
23ElasticLoadBalancingApplicationLoadBalancer固定响应操作如果协议版本是gRPC或HTTPS,则唯一支持的操作是forward操作.
固定响应操作您可以使用fixed-response操作删除客户端请求并返回自定义HTTP响应.
您可以使用此操作返回2XX、4XX或5XX响应代码和可选的消息.
采取fixed-response操作时,操作和重定向目标的URL记录在访问日志中.
有关更多信息,请参阅访问日志条目(p.
89).
成功fixed-response操作的计数在HTTP_Fixed_Response_Count指标中报告.
有关更多信息,请参阅应用程序负载均衡器指标(p.
76).
ExampleAWSCLI固定响应操作示例您可以在创建或修改规则时指定操作.
有关更多信息,请参阅create-rule和modify-rule命令.
以下操作发送具有指定状态代码和消息正文的固定响应.
[{"Type":"fixed-response","FixedResponseConfig":{"StatusCode":"200","ContentType":"text/plain","MessageBody":"Helloworld"}}]转发操作您可以使用forward操作,将请求路由到一个或多个目标组.
如果为某个forward操作指定多个目标组,您必须为每个目标组指定权重.
每个目标组权重都是一个介于0到999之间的值.
对于将侦听器规则与加权目标组匹配的请求,会根据这些目标组的权重分配给这些目标组.
例如,如果指定两个目标组,每个目标组的权重为10,则每个目标组将接收一半的请求.
如果指定两个目标组,一个权重为10,另一个权重为20,则权重为20的目标组接收的请求将是另一个目标组的两倍.
默认情况下,配置规则以便在加权目标组之间分配流量时,并不能保证支持粘性会话.
为了确保支持粘性会话,请为规则启用目标组粘性.
当负载均衡器首次将请求路由到加权目标组时,它会生成一个名为AWSALBTG的Cookie,该Cookie对选定目标组的信息进行编码,对Cookie进行加密,并且在返回给客户端的响应中包含该Cookie.
客户端应该在向负载均衡器的后续请求中包含它收到的cookie.
当负载均衡器收到与启用目标组粘性的规则匹配并且包含Cookie的请求时,请求将路由到Cookie中指定的目标组.
ApplicationLoadBalancer不支持URL编码的Cookie值.
对于CORS(跨源资源共享)请求,某些浏览器需要SameSite=None;Secure来启用粘性.
在这种情况下,ElasticLoadBalancing会生成第二个Cookie(即AWSALBTGCORS),该Cookie中包含原始粘性Cookie中的信息加上此SameSite属性.
客户端会同时收到这两个Cookie.
Example带有一个目标组的转发操作示例您可以在创建或修改规则时指定操作.
有关更多信息,请参阅create-rule和modify-rule命令.
以下操作将请求转发到指定的目标组.
[{"Type":"forward","ForwardConfig":{24ElasticLoadBalancingApplicationLoadBalancer转发操作"TargetGroups":[{"TargetGroupArn":"arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067"}]}}]Example带有两个加权目标组的转发操作示例下面的操作将根据每个目标组的权重,将请求转发到两个指定的目标组.

[{"Type":"forward","ForwardConfig":{"TargetGroups":[{"TargetGroupArn":"arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/blue-targets/73e2d6bc24d8a067","Weight":10},{"TargetGroupArn":"arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/green-targets/09966783158cda59","Weight":20}]}}]Example启用粘性的转发操作示例如果您具有一个包含多个目标组的转发操作,并且一个或多个目标组已启用了粘性会话(p.
57),则必须启用目标组粘性.
下面的操作将请求转发到两个指定的目标组,并启用了目标组粘性.
对于不包含粘性Cookie的请求,将根据每个目标组的权重进行传输.
[{"Type":"forward","ForwardConfig":{"TargetGroups":[{"TargetGroupArn":"arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/blue-targets/73e2d6bc24d8a067","Weight":10},{"TargetGroupArn":"arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/green-targets/09966783158cda59","Weight":20}],"TargetGroupStickinessConfig":{"Enabled":true,"DurationSeconds":1000}25ElasticLoadBalancingApplicationLoadBalancer重定向操作}}]重定向操作您可以使用redirect操作将客户端请求从一个URL重定向到另一个.
根据需要,您可以将重定向配置为临时(HTTP302)或永久(HTTP301).
URI包括以下组成部分:protocol://hostname:port/pathquery您必须修改以下至少一个组成部分以避免重定向循环:协议、主机名、用户名、端口或路径.
未修改的任何组成部分将保留其原始值.
protocol协议(HTTP或HTTPS).
您可以将HTTP重定向到HTTP、将HTTP重定向到HTTPS以及将HTTPS重定向到HTTPS.
不能将HTTPS重定向到HTTP.
hostname主机名.
主机名不区分大小写,长度最多为128个字符,由字母数字字符、通配符(*和)及连字符(-)组成.
port(远程调试端口)端口(1到65535).
path绝对路径,以前导"/"开头.
路径区分大小写,长度最多为128个字符,由字母数字字符、通配符(*和)、&(使用&)及以下特殊字符组成:query查询参数.
最大长度为128个字符.
您可以通过以下保留关键字,在目标URL中重用原始URL的URI组成部分:#{protocol}–保留协议.
在协议和查询组成部分中使用.
#{host}–保留域.
在主机名、路径和查询组成部分中使用.
#{port}–保留端口.
在端口、路径和查询组成部分中使用.
#{path}–保留路径.
在路径和查询组成部分中使用.
#{query}–保留查询参数.
在查询组成部分中使用.
执行redirect操作时,操作记录在访问日志中.
有关更多信息,请参阅访问日志条目(p.
89).
成功redirect操作的计数在HTTP_Redirect_Count指标中报告.
有关更多信息,请参阅应用程序负载均衡器指标(p.
76).
Example使用控制台的重定向操作的示例以下规则设置永久重定向到一个URL,该URL使用HTTPS协议和指定的端口(40443),但保留原始主机名、路径和查询参数.
此屏幕等同于"https://#{host}:40443/#{path}#{query}".
26ElasticLoadBalancingApplicationLoadBalancer规则条件类型以下规则设置永久重定向到一个URL,该URL包含原始协议、端口、主机名和查询参数,并使用#{path}关键字来创建修改的路径.
此屏幕等同于"#{protocol}://#{host}:#{port}/new/#{path}#{query}".

ExampleAWSCLI重定向操作示例您可以在创建或修改规则时指定操作.
有关更多信息,请参阅create-rule和modify-rule命令.
以下操作将HTTP请求重定向为端口443上的HTTPS请求,其主机名、路径和查询字符串与HTTP请求相同.
[{"Type":"redirect","RedirectConfig":{"Protocol":"HTTPS","Port":"443","Host":"#{host}","Path":"/#{path}","Query":"#{query}","StatusCode":"HTTP_301"}}]规则条件类型以下是规则支持的条件类型:host-header基于每个请求的主机名进行路由.
有关更多信息,请参阅主机条件(p.
29).
27ElasticLoadBalancingApplicationLoadBalancerHTTP标头条件http-header基于每个请求的HTTP标头进行路由.
有关更多信息,请参阅HTTP标头条件(p.
28).
http-request-method基于每个请求的HTTP请求方法路由.
有关更多信息,请参阅HTTP请求方法条件(p.
28).
path-pattern基于请求URL中的路径模式进行路由.
有关更多信息,请参阅路径条件(p.
29).
query-string基于查询字符串中的键/值对或值进行路由.
有关更多信息,请参阅查询字符串条件(p.
30).
source-ip基于每个请求的源IP地址进行路由.
有关更多信息,请参阅源IP地址条件(p.
31).
每个规则可以有选择地最多包含以下条件之一:host-header、http-request-method、path-pattern和source-ip.
每个规则还可以有选择地包含以下每个条件中的一个或多个:http-header和query-string.
您可以为每个条件指定最多三个匹配评估.
例如,对于每个http-header条件,您最多可以指定三个字符串,以与请求中的HTTP标头的值进行比较.
如果其中一个字符串与HTTP标头的值匹配,则满足条件.
若要要求所有字符串都匹配,请为每个匹配评估创建一个条件.
您可以为每条规则指定最多五个匹配评估.
例如,您可以创建一个具有五个条件的规则,其中每个条件都有一个匹配评估.
您可以在http-header、host-header、path-pattern和query-string条件的匹配评估中包含通配符.
每条规则的通配符上限为五个.
规则仅应用于可见的ASCII字符;不包括控制字符(0x00到0x1f和0x7f).
有关演示,请参阅高级请求路由.
HTTP标头条件您可以使用HTTP标头条件来配置基于请求的HTTP标头路由请求的规则.
您可以指定标准或自定义HTTP标头字段的名称.
标头名称和匹配评估不区分大小写.
比较字符串支持以下通配符:*(匹配0个或多个字符)和(完全匹配1个字符).
标头名称不支持通配符.
ExampleAWSCLIHTTP标头条件示例您可以在创建或修改规则时指定条件.
有关更多信息,请参阅create-rule和modify-rule命令.
具有与指定字符串之一匹配的User-Agent标头的请求满足以下条件.
[{"Field":"http-header","HttpHeaderConfig":{"HttpHeaderName":"User-Agent","Values":["*Chrome*","*Safari*"]}}]HTTP请求方法条件您可以使用HTTP请求方法条件来配置基于请求的HTTP请求方法路由请求的规则.
您可以指定标准或自定义HTTP方法.
匹配评估区分大小写.
不支持通配符;因此,方法名称必须完全匹配.

28ElasticLoadBalancingApplicationLoadBalancer主机条件我们建议您以相同的方式路由GET和HEAD请求,因为这样可以缓存对HEAD请求的响应.
ExampleAWSCLIHTTP方法条件示例您可以在创建或修改规则时指定条件.
有关更多信息,请参阅create-rule和modify-rule命令.
使用指定方法的请求满足以下条件.
[{"Field":"http-request-method","HttpRequestMethodConfig":{"Values":["CUSTOM-METHOD"]}}]主机条件您可以使用主机条件来定义基于主机标头中的主机名路由请求的规则(也称为基于主机的路由).
这使您能够使用单个负载均衡器支持多个子域和不同的顶级域.
主机名不区分大小写,长度上限为128个字符,并且可包含以下任何字符:A–Z、a–z、0–9-.
*(匹配0个或多个字符)(完全匹配1个字符)您必须包含至少一个".
"字符.
在最后一个".
"字符之后只能包含字母数字字符.

主机名示例example.
comtest.
example.
com*.
example.
com规则*.
example.
com与test.
example.
com匹配,但与example.
com不匹配.
ExampleAWSCLI主机标头条件示例您可以在创建或修改规则时指定条件.
有关更多信息,请参阅create-rule和modify-rule命令.
具有与指定字符串匹配的主机标头的请求满足以下条件.
[{"Field":"host-header","HostHeaderConfig":{"Values":["*.
example.
com"]}}]路径条件您可以使用路径条件来定义基于请求中的URL路由请求的规则(也称为基于路径的路由).
29ElasticLoadBalancingApplicationLoadBalancer查询字符串条件路径模式仅应用于URL的路径,而不应用于其查询参数.
它仅应用于可见的ASCII字符;不包括控制字符(0x00到0x1f和0x7f).
路径模式区分大小写,长度最多为128个字符,并且可包含以下任何字符.
A–Z、a–z、0–9&(使用&)*(匹配0个或多个字符)(完全匹配1个字符)如果协议版本是gRPC,则条件可特定于程序包、服务或方法.
示例HTTP路径模式/img/*/img/*/pics示例gRPC路径模式/package/package.
service//package.
service/method路径模式用于路由请求,而不是更改请求.
例如,如果一个规则的路径模式为/img/*,此规则会将/img/picture.
jpg的请求作为/img/picture.
jpg的请求转发给指定目标组.
ExampleAWSCLI路径模式条件示例您可以在创建或修改规则时指定条件.
有关更多信息,请参阅create-rule和modify-rule命令.
具有包含指定字符串的URL的请求满足以下条件.
[{"Field":"path-pattern","PathPatternConfig":{"Values":["/img/*"]}}]查询字符串条件您可以使用查询字符串条件来配置基于查询字符串中的键/值对或值路由请求的规则.
匹配评估不区分大小写.
支持以下通配符:*(匹配0个或多个字符)和(完全匹配1个字符).
ExampleAWSCLI查询字符串条件示例您可以在创建或修改规则时指定条件.
有关更多信息,请参阅create-rule和modify-rule命令.
具有包括键/值对"version=v1"或任意键设置为"example"的查询字符串的请求满足以下条件.

[{"Field":"query-string",30ElasticLoadBalancingApplicationLoadBalancer源IP地址条件"QueryStringConfig":{"Values":[{"Key":"version","Value":"v1"},{"Value":"*example*"}]}}]源IP地址条件您可以使用源IP地址条件来配置基于请求的源IP地址路由请求的规则.
必须以CIDR格式指定IP地址.
可以使用IPv4和IPv6地址.
不支持通配符.
如果客户端位于代理之后,则这是代理的IP地址,而不是客户端的IP地址.
X-Forwarded-For标头中的地址不满足此条件.
要搜索X-Forwarded-For标头中的地址,请使用http-header条件.
ExampleAWSCLI源IP条件示例您可以在创建或修改规则时指定条件.
有关更多信息,请参阅create-rule和modify-rule命令.
源IP地址位于某个指定的CIDR块中的请求满足以下条件.
[{"Field":"source-ip","SourceIpConfig":{"Values":["192.
0.
2.
0/24","198.
51.
100.
10/32"]}}]为您的应用程序负载均衡器创建HTTP侦听器侦听器是用于检查连接请求的进程.
您可在创建负载均衡器时定义侦听器,并可随时向负载均衡器添加侦听器.
此页面上的信息可帮助您为负载均衡器创建HTTP侦听器.
要向您的负载均衡器添加HTTPS侦听器,请参阅为您的应用程序负载均衡器创建HTTPS侦听器(p.
32).
先决条件要将转发操作添加到默认侦听器规则,您必须指定可用的目标组.
有关更多信息,请参阅创建目标组(p.
58).
添加HTTP侦听器您为侦听器配置用于从客户端连接到负载均衡器的协议和端口,并为默认侦听器规则配置目标组.
有关更多信息,请参阅侦听器配置(p.
22).
31ElasticLoadBalancingApplicationLoadBalancer创建HTTPS侦听器使用控制台添加HTTP侦听器1.
打开AmazonEC2控制台https://console.
amazonaws.
cn/ec2/.
2.
在导航窗格上的LOADBALANCING下,选择LoadBalancers.
3.
选择负载均衡器,然后依次选择Listeners(侦听器)和Addlistener(添加侦听器).
4.
对于协议:端口,选择HTTP并保留默认端口或者输入其他端口.
5.
对于Defaultactions(默认操作),请执行下列操作之一:选择Addaction(添加操作)、Forwardto(转发至)并选择目标组.
选择Addaction(添加操作)、Redirectto(重定向至)并为重定向提供URL.
有关更多信息,请参阅重定向操作(p.
26).
选择Addaction(添加操作)、Returnfixedresponse(返回固定响应),然后提供响应代码和可选的响应正文.
有关更多信息,请参阅固定响应操作(p.
24).
要保存操作,请选择选中标记图标.
6.
选择Save.
7.
(可选)要定义基于路径模式或主机名转发请求的其他侦听器规则,请参阅添加规则(p.
38).
使用AWSCLI添加HTTP侦听器使用create-listener命令可创建侦听器和默认规则,使用create-rule命令可定义更多侦听器规则.
为您的应用程序负载均衡器创建HTTPS侦听器侦听器是用于检查连接请求的进程.
您可在创建负载均衡器时定义侦听器,并可随时向负载均衡器添加侦听器.
您可以创建使用加密连接的HTTPS侦听器(也称为SSL卸载).
此功能支持在您的负载均衡器与启动SSL或TLS会话的客户端之间进行流量加密.
此页面上的信息可帮助您为负载均衡器创建HTTPS侦听器.
要向您的负载均衡器添加HTTP侦听器,请参阅为您的应用程序负载均衡器创建HTTP侦听器(p.
31).
目录SSL证书(p.
32)默认证书(p.
33)证书列表(p.
33)证书续订(p.
33)安全策略(p.
34)FS支持的策略(p.
34)TLS安全策略(p.
35)添加HTTPS侦听器(p.
36)更新HTTPS侦听器(p.
37)SSL证书要使用HTTPS侦听器,您必须在负载均衡器上部署至少一个SSL/TLS服务器证书.
负载均衡器先使用服务器证书终止前端连接,再解密来自客户端的请求,然后将请求发送到目标.

32ElasticLoadBalancingApplicationLoadBalancerSSL证书负载均衡器需要X.
509证书(SSL/TLS服务器证书).
证书是由证书颁发机构(CA)颁发的数字化身份.
证书包含标识信息、有效期限、公有密钥、序列号以及发布者的数字签名.

在创建用于负载均衡器的证书时,您必须指定域名.
我们建议您使用AWSCertificateManager(ACM)为负载均衡器创建证书.
ACM已与ElasticLoadBalancing集成,以便您可以在负载均衡器上部署证书.
有关更多信息,请参阅AWSCertificateManager用户指南.
ImportantACM支持具有4096密钥长度的RSA证书和EC证书.
但是,您无法通过与ACM集成在负载均衡器上安装这些证书.
您必须将这些证书上传到IAM,以便将它们与负载均衡器结合使用.
此外,还可以使用SSL/TLS工具创建证书签名请求(CSR),然后获取由CA签署的CSR以生成证书,并将证书导入ACM,或将证书上传至AWSIdentityandAccessManagement(IAM).
有关将证书导入ACM的更多信息,请参阅AWSCertificateManager用户指南中的导入证书.
有关将证书上传到IAM的更多信息,请参阅IAM用户指南中的使用服务器证书.
默认证书创建HTTPS侦听器时,必须仅指定一个证书.
此证书称为默认证书.
创建HTTPS侦听器后,您可以替换默认证书.
有关更多信息,请参阅替换默认证书(p.
41).
如果在证书列表(p.
33)中指定其他证书,则仅当客户端在不使用服务器名称指示(SNI)协议的情况下连接以指定主机名或证书列表中没有匹配的证书时,才使用默认证书.
如果您未指定其他证书但需要通过单一负载平衡器托管多个安全应用程序,则可以使用通配符证书或为证书的每个其他域添加使用者备用名称(SAN).
证书列表创建HTTPS侦听器后,它具有默认证书和空证书列表.
您可以选择将证书添加到侦听器的证书列表中.
使用证书列表可使负载均衡器在同一端口上支持多个域,并为每个域提供不同的证书.
有关更多信息,请参阅将证书添加到证书列表(p.
42).
负载均衡器使用支持SNI的智能证书选择算法.
如果客户端提供的主机名与证书列表中的一个证书匹配,则负载均衡器将选择此证书.
如果客户端提供的主机名与证书列表中的多个证书匹配,则负载均衡器将选择客户端可支持的最佳证书.
根据以下标准,按下面的顺序选择证书:公有密钥算法(ECDSA优先于RSA)哈希算法(SHA优先于MD5)密钥长度(首选最大值)有效期负载均衡器访问日志条目指示客户端指定的主机名和向客户端提供的证书.
有关更多信息,请参阅访问日志条目(p.
89).
证书续订每个证书都有有效期限.
您必须确保在有效期结束之前续订或替换负载均衡器的每个证书.
这包括默认证书和证书列表中的证书.
续订或替换证书不影响负载均衡器节点已收到的进行中的请求,并暂停指向正常运行的目标的路由.
续订证书之后,新的请求将使用续订后的证书.
更换证书之后,新的请求将使用新证书.

您可以按如下方式管理证书续订和替换:33ElasticLoadBalancingApplicationLoadBalancer安全策略由AWSCertificateManager提供、部署在负载均衡器上的证书可以自动续订.
ACM将尝试在到期之前续订证书.
有关更多信息,请参阅AWSCertificateManager用户指南中的托管续订.
如果您将证书导入ACM,则必须监视证书的到期日期并在到期前续订.
有关更多信息,请参阅AWSCertificateManager用户指南中的导入证书.
如果您已将证书导入IAM中,则必须创建一个新证书,将该新证书导入ACM或IAM中,将该新证书添加到负载均衡器,并从负载均衡器删除过期的证书.
安全策略ElasticLoadBalancing使用安全套接字层(SSL)协商配置(称为安全策略)在客户端与负载均衡器之间协商SSL连接.
安全策略是协议和密码的组合.
协议在客户端与服务器之间建立安全连接,确保在客户端与负载均衡器之间传递的所有数据都是私密数据.
密码是使用加密密钥创建编码消息的加密算法.
协议使用多种密码对Internet上的数据进行加密.
在连接协商过程中,客户端和负载均衡器会按首选项顺序提供各自支持的密码和协议的列表.
默认情况下,会为安全连接选择服务器列表中与任何一个客户端的密码匹配的第一个密码.
对于客户端连接或目标连接,ApplicationLoadBalancer不支持SSL重新协商.
创建TLS侦听器时,您必须选择一个安全策略.
可以根据需要更新安全策略.
有关更多信息,请参阅更新安全策略(p.
43).
您可以选择用于前端连接的安全策略.
ELBSecurityPolicy-2016-08安全策略始终用于后端连接.
ApplicationLoadBalancer不支持自定义安全策略.
ElasticLoadBalancing为ApplicationLoadBalancer提供以下安全策略:ELBSecurityPolicy-2016-08(默认值)ELBSecurityPolicy-TLS-1-0-2015-04ELBSecurityPolicy-TLS-1-1-2017-01ELBSecurityPolicy-TLS-1-2-2017-01ELBSecurityPolicy-TLS-1-2-Ext-2018-06ELBSecurityPolicy-FS-2018-06ELBSecurityPolicy-FS-1-1-2019-08ELBSecurityPolicy-FS-1-2-2019-08ELBSecurityPolicy-FS-1-2-Res-2019-08ELBSecurityPolicy-2015-05(与ELBSecurityPolicy-2016-08相同)ELBSecurityPolicy-FS-1-2-Res-2020-10我们建议使用ELBSecurityPolicy-2016-08策略以确保兼容性.
如果您需要向前保密(FS),可使用ELBSecurityPolicy-FS策略之一.
您可以使用ELBSecurityPolicy-TLS策略之一,以满足需要禁用特定TLS协议版本的合规性和安全标准,或者支持需要已弃用密码的旧客户端.
只有一小部分Internet客户端需要TLS版本1.
0.
要查看针对负载均衡器的请求的TLS协议版本,请为负载均衡器启用访问日志记录并查看访问日志.
有关更多信息,请参阅访问日志(p.
87).
FS支持的策略下表描述了默认策略、ELBSecurityPolicy-2016-08和ELBSecurityPolicy-FS策略.
为了使策略名称能够容纳在标题行中,已将ELBSecurityPolicy-从名称中删除.
34ElasticLoadBalancingApplicationLoadBalancer安全策略TLS安全策略下表描述了默认策略、ELBSecurityPolicy-2016-08和ELBSecurityPolicy-TLS策略.
为了使策略名称能够容纳在标题行中,已将ELBSecurityPolicy-从名称中删除.
35ElasticLoadBalancingApplicationLoadBalancer添加HTTPS侦听器*除非您必须支持需要DES-CBC3-SHA密码(这是一种弱密码)的旧客户端,否则请勿使用此策略.
要使用AWSCLI查看ApplicationLoadBalancer安全策略的配置,请使用describe-ssl-policies命令.
添加HTTPS侦听器您为侦听器配置用于从客户端连接到负载均衡器的协议和端口,并为默认侦听器规则配置目标组.
有关更多信息,请参阅侦听器配置(p.
22).
36ElasticLoadBalancingApplicationLoadBalancer更新HTTPS侦听器先决条件要将转发操作添加到默认侦听器规则,您必须指定可用的目标组.
有关更多信息,请参阅创建目标组(p.
58).
要创建HTTPS侦听器,您必须指定证书和安全策略.
负载均衡器先使用证书终止连接,然后解密来自客户端的请求,最后再将请求路由到目标.
负载均衡器在协商与客户端的SSL连接时会使用安全策略.
使用控制台添加HTTPS侦听器1.
打开AmazonEC2控制台https://console.
amazonaws.
cn/ec2/.
2.
在导航窗格上的LOADBALANCING下,选择LoadBalancers.
3.
选择负载均衡器,然后依次选择Listeners(侦听器)和Addlistener(添加侦听器).
4.
对于协议:端口,选择HTTPS并保留默认端口或者输入其他端口.
5.
(可选)要验证用户的身份,对于Defaultactions(默认操作),选择Addaction(添加操作)、Authenticate(身份验证)并提供请求的信息.
要保存操作,请选择选中标记图标.
有关更多信息,请参阅使用应用程序负载均衡器验证用户身份(p.
43).
6.
对于Defaultactions(默认操作),请执行下列操作之一:选择Addaction(添加操作)、Forwardto(转发至)并选择目标组.
选择Addaction(添加操作)、Redirectto(重定向至)并为重定向提供URL.
有关更多信息,请参阅重定向操作(p.
26).
选择Addaction(添加操作)、Returnfixedresponse(返回固定响应),然后提供响应代码和可选的响应正文.
有关更多信息,请参阅固定响应操作(p.
24).
要保存操作,请选择选中标记图标.
7.
对于Securitypolicy(安全策略),我们建议保留默认安全策略.
8.
对于DefaultSSLcertificate(默认SSL证书),请执行下列操作之一:如果使用AWSCertificateManager创建或导入了证书,请选择FromACM(来自ACM)并选择证书.
如果使用IAM上传了证书,则选择FromIAM(来自IAM)并选择证书.
9.
选择Save.
10.
(可选)要定义基于路径模式或主机名转发请求的其他侦听器规则,请参阅添加规则(p.
38).
11.
(可选)要添加用于SNI协议的证书列表,请参阅将证书添加到证书列表(p.
42).
使用AWSCLI添加HTTPS侦听器使用create-listener命令可创建侦听器和默认规则,使用create-rule命令可定义更多侦听器规则.
更新HTTPS侦听器创建HTTPS侦听器后,您可以替换默认证书、更新证书列表或替换安全策略.
有关更多信息,请参阅针对您的应用程序负载均衡器更新HTTPS侦听器(p.
41).
为应用程序负载均衡器定义侦听器规则为侦听器定义的规则可确定负载均衡器如何将请求路由到一个或多个目标组中的目标.

每条规则由优先级、一个或多个操作以及一个或多个条件组成.
有关更多信息,请参阅侦听器规则(p.
22).
37ElasticLoadBalancingApplicationLoadBalancer要求Note控制台会显示每个规则的相对序列号,而不是规则优先级.
您可以使用AWSCLI或ElasticLoadBalancingAPI对规则进行描述,以获得规则优先级.
要求每条规则必须包含以下操作之一:forward、redirect或fixed-response,并且其必须为要执行的最后一个操作.
每条规则可以包括以下条件中的零个或一个:host-header、http-request-method、path-pattern和source-ip,以及以下条件中的零个或多个:http-header和query-string.
每个条件最多可以指定三个比较字符串,每条规则最多可以指定五个比较字符串.

forward操作会将请求路由至其目标组.
在添加forward操作之前,请创建目标组并向其添加目标.
有关更多信息,请参阅创建目标组(p.
58).
添加规则您可在创建侦听器时定义默认规则,并可随时定义其他非默认规则.
使用控制台添加规则1.
打开AmazonEC2控制台https://console.
amazonaws.
cn/ec2/.
2.
在导航窗格上的LOADBALANCING下,选择LoadBalancers.
3.
选择负载均衡器,然后选择Listeners.
4.
对于要更新的侦听器,选择View/editrules.
5.
选择菜单栏中的Addrules图标(加号)以在您可按优先级顺序插入规则的位置添加InsertRule图标.
6.
选择上一步中添加的InsertRule(插入规则)图标之一.
7.
添加一个或多个条件,如下所述:a.
要添加主机标头条件,请依次选择添加条件、主机标头,然后输入主机名(例如,*.
example.
com).
要保存此条件,请选择选中标记图标.

每个字符串的最大大小为128个字符.
比较不区分大小写.
支持以下通配符:*和.
b.
要添加路径条件,请依次选择添加条件、路径,然后输入路径模式(例如,/img/*).
要保存此条件,请选择选中标记图标.
每个字符串的最大大小为128个字符.
比较区分大小写.
支持以下通配符:*和.
c.
要添加HTTP标头条件,请依次选择Addcondition(添加条件)、Httpheader(Http标头).
输入标头名称并添加一个或多个比较字符串.
要保存此条件,请选择选中标记图标.

每个标头名称的最大大小为40个字符,标头名称不区分大小写,并且不支持通配符.
每个比较字符串的最大大小为128个字符,支持以下通配符:*和.
比较不区分大小写.
d.
要添加HTTP请求方法条件,请依次选择Addcondition(添加条件)、Httprequestmethod(Http请求方法),然后添加一个或多个方法名称.
要保存此条件,请选择选中标记图标.

每个名称的最大大小为40个字符.
允许的字符为A-Z、连字符(-)和下划线(_).
比较区分大小写.
不支持通配符.
38ElasticLoadBalancingApplicationLoadBalancer编辑规则e.
要添加查询字符串条件,请依次选择Addcondition(添加条件)、Querystring(查询字符串),然后添加一个或多个键/值对.
对于每个键/值对,您可以省略键并仅指定值.
要保存此条件,请选择选中标记图标.
每个字符串的最大大小为128个字符.
比较不区分大小写.
支持以下通配符:*和.
f.
要添加源IP条件,请依次选择Addcondition(添加条件)、SourceIP(源IP),然后添加一个或多个CIDR块.
要保存此条件,请选择选中标记图标.
可以使用IPv4和IPv6地址.
不支持通配符.
8.
(可选,HTTPS侦听器)要验证用户的身份,请选择Addaction(添加操作)、Authenticate(身份验证)并提供请求的信息.
要保存操作,请选择选中标记图标.
有关更多信息,请参阅使用应用程序负载均衡器验证用户身份(p.
43).
9.
添加下列操作之一:要添加转发操作,请选择Addaction(添加操作)、Forwardto(转发至)并选择一个或多个目标组.
如果您使用多个目标组,请为每个目标组选择一个权重,并且(可选)启用目标组粘性.
如果启用目标组粘性并且有多个目标组,则还必须在目标组上启用粘性会话.
要保存操作,请选择选中标记图标.
有关更多信息,请参阅转发操作(p.
24).
要添加重定向操作,请选择Addaction(添加操作)、Redirectto(重定向至)并为重定向提供URL.
要保存操作,请选择选中标记图标.
有关更多信息,请参阅重定向操作(p.
26).
要添加固定响应操作,请选择Addaction(添加操作)、Returnfixedresponse(返回固定响应),然后提供响应代码和可选的响应正文.
要保存操作,请选择选中标记图标.
有关更多信息,请参阅固定响应操作(p.
24).
10.
选择Save.
11.
(可选)要更改规则的顺序,请使用箭头,然后选择Save(保存).
默认规则始终具有最低优先级.
12.
要离开此屏幕,请选择菜单栏中的Backtotheloadbalancer(返回到负载均衡器)图标(后退按钮).
使用AWSCLI添加规则使用create-rule命令创建规则.
使用describe-rules命令查看规则的相关信息.
编辑规则您可随时编辑规则的操作和条件.
规则更新不会立即生效,因此在更新规则后的一小段短时间内,可以使用之前的规则配置来路由请求.
任何正在进行的请求均会完成.
39ElasticLoadBalancingApplicationLoadBalancer重新排序规则使用控制台编辑规则1.
打开AmazonEC2控制台https://console.
amazonaws.
cn/ec2/.
2.
在导航窗格上的LOADBALANCING下,选择LoadBalancers.
3.
选择负载均衡器,然后选择Listeners.
4.
对于要更新的侦听器,选择View/editrules.
5.
选择菜单栏中的Editrules图标(铅笔).
6.
对于要编辑的规则,选择Editrules图标(铅笔).
7.
(可选)按需修改条件和操作.
例如,您可以编辑条件或操作(铅笔图标)、添加条件、向HTTPS侦听器的规则添加身份验证操作,或者删除条件或操作(垃圾桶图标).
无法向默认规则添加条件.

8.
选择Update.
9.
要离开此屏幕,请选择菜单栏中的Backtotheloadbalancer(返回到负载均衡器)图标(后退按钮).
使用AWSCLI编辑规则使用modify-rule命令.
重新排序规则规则是按优先级顺序(从最低值到最高值)计算的.
最后评估默认规则.
您可以随时更改非默认规则的优先级.
您不能更改默认规则的优先级.
Note控制台会显示每个规则的相对序列号,而不是规则优先级.
使用控制台以重新排序规则时,规则将根据现有规则优先级,获得新规则优先级.
要将规则的优先级设为指定值,请使用AWSCLI或ElasticLoadBalancingAPI.
使用控制台为规则重新排序1.
打开AmazonEC2控制台https://console.
amazonaws.
cn/ec2/.
2.
在导航窗格上的LOADBALANCING下,选择LoadBalancers.
3.
选择负载均衡器,然后选择Listeners.
4.
对于要更新的侦听器,选择View/editrules.
5.
选择菜单栏中的Reorderrules图标(箭头).
40ElasticLoadBalancingApplicationLoadBalancer删除规则6.
选中规则旁的复选框,然后使用箭头为规则指定新的优先级.
默认规则始终具有最低优先级.

7.
为规则重新排序之后,选择Save.
8.
要离开此屏幕,请选择菜单栏中的Backtotheloadbalancer(返回到负载均衡器)图标(后退按钮).
使用AWSCLI更新规则优先级使用set-rule-priorities命令.
删除规则您可以随时删除侦听器的非默认规则.
您不能删除侦听器的默认规则.
当您删除侦听器时,也会删除它的所有规则.
使用控制台删除规则1.
打开AmazonEC2控制台https://console.
amazonaws.
cn/ec2/.
2.
在导航窗格上的LOADBALANCING下,选择LoadBalancers.
3.
选择负载均衡器,然后选择Listeners.
4.
对于要更新的侦听器,选择View/editrules.
5.
在菜单栏中选择Deleterules(删除规则)图标(减号).
6.
选中规则对应的复选框,然后选择Delete(删除).
无法删除侦听器的默认规则.
7.
要离开此屏幕,请选择菜单栏中的Backtotheloadbalancer(返回到负载均衡器)图标(后退按钮).
使用AWSCLI删除规则使用delete-rule命令.
针对您的应用程序负载均衡器更新HTTPS侦听器创建HTTPS侦听器后,您可以替换默认证书、更新证书列表或替换安全策略.
限制ACM支持具有4096密钥长度的RSA证书和EC证书.
但是,您无法通过与ACM集成在负载均衡器上安装这些证书.
您必须将这些证书上传到IAM,以便将它们与负载均衡器结合使用.
任务替换默认证书(p.
41)将证书添加到证书列表(p.
42)从证书列表中删除证书(p.
42)更新安全策略(p.
43)替换默认证书您可以使用以下过程替换侦听器的默认证书.
有关更多信息,请参阅SSL证书(p.
32).
使用控制台更改默认证书1.
打开AmazonEC2控制台https://console.
amazonaws.
cn/ec2/.
2.
在导航窗格上的LOADBALANCING下,选择LoadBalancers.
41ElasticLoadBalancingApplicationLoadBalancer将证书添加到证书列表3.
选择负载均衡器,然后选择Listeners.
4.
选中侦听器对应的复选框,然后选择Edit(编辑).
5.
对于DefaultSSLcertificate(默认SSL证书),请执行下列操作之一:如果使用AWSCertificateManager创建或导入了证书,请选择FromACM(来自ACM)并选择证书.
如果使用IAM上传了证书,则选择FromIAM(来自IAM)并选择证书.
6.
选择Update.
使用AWSCLI更改默认证书使用modify-listener命令.
将证书添加到证书列表您可使用以下过程将证书添加到侦听器的证书列表.
首次创建HTTPS侦听器时,证书列表为空.
可以添加一个或多个证书.
您可以选择添加默认证书,以确保此证书与SNI协议一起使用,即使它被替换为默认证书也是如此.
有关更多信息,请参阅SSL证书(p.
32).
使用控制台将证书添加到证书列表1.
打开AmazonEC2控制台https://console.
amazonaws.
cn/ec2/.
2.
在导航窗格上的LOADBALANCING下,选择LoadBalancers.
3.
选择负载均衡器,然后选择Listeners.
4.
对于要更新的HTTPS侦听器,请选择View/editcertificates(查看/编辑证书),这将显示默认证书,后跟已添加到侦听器的任何其他证书.
5.
选择菜单栏中的Addcertificates(添加证书)图标(加号),这将显示默认证书,后跟由ACM和IAM管理的任何其他证书.
如果已将证书添加到侦听器,则其复选框处于选中和禁用状态.

6.
要添加已由ACM或IAM管理的证书,请选中证书对应的复选框并选择Add(添加).
7.
如果您有一个未由ACM或IAM管理的证书,则按如下方式将其导入ACM中,并将其添加到侦听器:a.
选择Importcertificate.
b.
对于Certificateprivatekey,粘贴证书的PEM编码的未加密私有密钥.
c.
对于Certificatebody,粘贴PEM编码的证书.
d.
(可选)对于Certificatechain,粘贴PEM编码的证书链.
e.
选择Import.
新导入的证书将显示在可用证书列表中并处于选中状态.
f.
选择Add.
8.
要离开此屏幕,请选择菜单栏中的Backtotheloadbalancer(返回到负载均衡器)图标(后退按钮).
使用AWSCLI将证书添加到证书列表使用add-listener-certificates命令.
从证书列表中删除证书您可以使用以下过程从HTTPS侦听器的证书列表中删除证书.
要删除HTTPS侦听器的默认证书,请参阅替换默认证书(p.
41).
使用控制台从证书列表中删除证书1.
打开AmazonEC2控制台https://console.
amazonaws.
cn/ec2/.
2.
在导航窗格上的LOADBALANCING下,选择LoadBalancers.
42ElasticLoadBalancingApplicationLoadBalancer更新安全策略3.
选择负载均衡器,然后选择Listeners.
4.
对于要更新的侦听器,请选择View/editcertificates(查看/编辑证书),这将显示默认证书,后跟已添加到侦听器的任何其他证书.
5.
在菜单栏中选择Removecertificates图标(减号).
6.
选中证书对应的复选框,然后选择Remove(删除).
7.
要离开此屏幕,请选择菜单栏中的Backtotheloadbalancer(返回到负载均衡器)图标(后退按钮).
使用AWSCLI从证书列表中删除证书使用remove-listener-certificates命令.
更新安全策略在创建HTTPS侦听器时,您可以选择满足您的需求的安全策略.
添加新的安全策略后,您可以将HTTPS侦听器更新为使用此新安全策略.
ApplicationLoadBalancer不支持自定义安全策略.
有关更多信息,请参阅安全策略(p.
34).
使用控制台更新安全策略1.
打开AmazonEC2控制台https://console.
amazonaws.
cn/ec2/.
2.
在导航窗格上的LOADBALANCING下,选择LoadBalancers.
3.
选择负载均衡器,然后选择Listeners.
4.
选中HTTPS侦听器对应的复选框,然后选择Edit(编辑).
5.
对于Securitypolicy(安全策略),选择安全策略.
6.
选择Update.
使用AWSCLI更新安全策略使用modify-listener命令.
使用应用程序负载均衡器验证用户身份可以将应用程序负载均衡器配置为在用户访问应用程序时安全验证用户的身份.
这使您可以将验证用户身份的工作交给负载均衡器完成,以便应用程序可以专注于其业务逻辑.
支持以下使用案例:通过符合OpenIDConnect(OIDC)条件的身份提供商(IdP)验证用户身份.
通过知名社交IdP(如Amazon、Facebook或Google)、通过AmazonCognito支持的用户池验证用户的身份.
通过企业身份、使用SAML、LDAP或MicrosoftAD、通过AmazonCognito支持的用户池验证用户身份.
准备使用符合OIDC条件的IdP如果要将符合OIDC条件的IdP与应用程序负载均衡器一起使用,请执行以下操作:使用IdP创建新的OIDC应用程序.
必须配置客户端ID和客户端密钥.
获取IdP发布的以下终端节点:授权终端节点、令牌终端节点和用户信息终端节点.
可以在清晰的配置中找到此信息.
43ElasticLoadBalancingApplicationLoadBalancer准备使用AmazonCognito允许在IdP应用程序中使用以下重定向URL之一(无论您的用户将使用哪种IdP应用程序),其中DNS是负载均衡器的域名,CNAME是应用程序的DNS别名:https://DNS/oauth2/idpresponsehttps://CNAME/oauth2/idpresponse准备使用AmazonCognito如果要将AmazonCognito用户池应用程序负载均衡器一起使用,请执行以下操作:创建用户池.
有关更多信息,请参阅AmazonCognito开发者指南中的AmazonCognito用户池.
创建用户池客户端.
必须将客户端配置为生成客户端密钥,使用代码授予流程并支持与负载均衡器所用相同的OAuth范围.
有关更多信息,请参阅AmazonCognito开发者指南中的配置用户池应用程序客户端.
创建用户池域.
有关更多信息,请参阅AmazonCognito开发者指南中的为您的用户池添加域名.
验证请求的范围是否将返回ID令牌.
例如,默认范围openid将返回ID令牌,但aws.
cognito.
signin.
user.
admin范围不返回ID令牌.
要与社交或企业IdP联合,请在联合身份验证部分中启用IdP.
有关更多信息,请参阅AmazonCognito开发者指南中的将社交登录添加到用户池或将"使用SAMLIdP登录"添加到用户池.
允许在AmazonCognito的回调URL字段中使用以下重定向URL,其中DNS是负载均衡器的域名,CNAME是应用程序(如果正在使用)的DNS别名:https://DNS/oauth2/idpresponsehttps://CNAME/oauth2/idpresponse允许在IdP应用程序的回调URL中使用您的用户池域.
使用IdP的格式.
例如:https://domain-prefix.
auth.
region.
amazoncognito.
com/saml2/idpresponsehttps://user-pool-domain/oauth2/idpresponse要启用IAM用户以将负载均衡器配置为使用AmazonCognito验证用户身份,必须为此用户授予调用cognito-idp:DescribeUserPoolClient操作的权限.
准备使用AmazonCloudFront如果您在应用程序负载均衡器前使用CloudFront分配,请启用以下设置:转发请求标头(全部)—确保CloudFront不缓存经过身份验证的请求的响应.
这可避免在身份验证会话过期后从缓存提供响应.
或者,要在启用缓存时降低此风险,CloudFront分配的所有者可以将生存时间(TTL)值设置为在身份验证Cookie过期之前到期.
查询字符串转发和缓存(全部)—确保负载均衡器能够访问使用IdP对用户进行身份验证所需的查询字符串参数.
Cookie转发(全部)—确保CloudFront将所有身份验证Cookie转发到负载均衡器.
配置用户身份验证通过为一个或多个侦听器规则创建身份验证操作来配置用户身份验证.
HTTPS侦听器仅支持authenticate-cognito和authenticate-oidc操作类型.
有关对应字段的描述,请参阅ElasticLoadBalancingAPI参考第2015-12-01版中的AuthenticateCognitoActionConfig和AuthenticateOidcActionConfig.
负载均衡器会向客户端发送会话Cookie以保持身份验证状态.
由于用户身份验证需要HTTPS侦听器,因此该Cookie始终包含secure属性.
此Cookie包含CORS(跨源资源共享)请求的SameSite=None属性.
44ElasticLoadBalancingApplicationLoadBalancer配置用户身份验证ApplicationLoadBalancer不支持URL编码的Cookie值.
默认情况下,SessionTimeout字段设置为7日.
如果需要更短的会话,可将会话超时配置为短至1秒.
有关更多信息,请参阅身份验证注销和会话超时(p.
48).
视应用程序的情况设置OnUnauthenticatedRequest字段.
例如:需要用户使用社交或企业身份登录的应用程序—这由默认选项authenticate支持.
如果用户未登录,则负载均衡器会将请求重定向到IdP授权终端节点并且IdP将提示用户使用其用户界面登录.
为已登录用户提供个性化视图或为未登录用户提供常规视图的应用程序—要支持此类型的应用程序,请使用allow选项.
如果用户已登录,则负载均衡器将提供用户索赔并且应用程序可以提供个性化视图.
如果用户未登录,则负载均衡器将转发请求而不提供用户索赔并且应用程序可以提供常规视图.

具有每隔几秒就加载的JavaScript的单页面应用程序—默认情况下,在身份验证会话Cookie到期后,AJAX调用将重定向至IdP并受阻.
如果使用deny选项,则负载均衡器将针对这些AJAX调用返回"HTTP401未授权"错误.
负载均衡器必须能够与IdP令牌终端节点(TokenEndpoint)和IdP用户信息终端节点(UserInfoEndpoint)通信.
验证负载均衡器的安全组和VPC的网络ACL是否允许至这些终端节点的出站访问.
验证您的VPC可以访问Internet.
如果您有面向内部的负载均衡器,请使用NAT网关以启用负载均衡器来访问这些终端节点.
使用以下create-rule命令配置用户身份验证.
awselbv2create-rule--listener-arnlistener-arn--priority10\--conditionsField=path-pattern,Values="/login"--actionsfile://actions.
json下面是指定authenticate-oidc操作和forward操作的actions.
json文件的示例.
[{"Type":"authenticate-oidc","AuthenticateOidcConfig":{"Issuer":"https://idp-issuer.
com","AuthorizationEndpoint":"https://authorization-endpoint.
com","TokenEndpoint":"https://token-endpoint.
com","UserInfoEndpoint":"https://user-info-endpoint.
com","ClientId":"abcdefghijklmnopqrstuvwxyz123456789","ClientSecret":"123456789012345678901234567890","SessionCookieName":"my-cookie","SessionTimeout":3600,"Scope":"email","AuthenticationRequestExtraParams":{"display":"page","prompt":"login"},"OnUnauthenticatedRequest":"deny"},"Order":1},{"Type":"forward","TargetGroupArn":"arn:aws-cn:elasticloadbalancing:region-code:account-id:targetgroup/target-group-name/target-group-id","Order":2}]下面是指定authenticate-cognito操作和forward操作的actions.
json文件的示例.
[{45ElasticLoadBalancingApplicationLoadBalancer身份验证流程"Type":"authenticate-cognito","AuthenticateCognitoConfig":{"UserPoolArn":"arn:aws-cn:cognito-idp:region-code:account-id:userpool/user-pool-id","UserPoolClientId":"abcdefghijklmnopqrstuvwxyz123456789","UserPoolDomain":"userPoolDomain1","SessionCookieName":"my-cookie","SessionTimeout":3600,"Scope":"email","AuthenticationRequestExtraParams":{"display":"page","prompt":"login"},"OnUnauthenticatedRequest":"deny"},"Order":1},{"Type":"forward","TargetGroupArn":"arn:aws-cn:elasticloadbalancing:region-code:account-id:targetgroup/target-group-name/target-group-id","Order":2}]有关更多信息,请参阅侦听器规则(p.
22).
身份验证流程ElasticLoadBalancing使用OIDC授权代码流程,其中包括以下步骤.
1.
当满足具有身份验证操作的规则的条件时,负载均衡器将检查请求标头中的身份验证会话Cookie.
如果Cookie不存在,则负载均衡器会将用户重定向到IdP授权终端节点,以便IdP可对用户进行身份验证.
2.
验证用户身份之后,IdP会使用授权授予代码将用户重定向回负载均衡器.
负载均衡器会将此代码发送给IdP令牌终端节点,以获取ID令牌和访问令牌.
3.
负载均衡器验证ID令牌之后,它将访问令牌与IdP用户信息终端节点交换以获取用户索赔.
4.
负载均衡器将创建身份验证会话Cookie并将其发送到客户端,以便客户端的用户代理可在发出请求时将Cookie发送到负载均衡器.
由于大多数浏览器将Cookie限制为4K大小,因此负载均衡器会将超出4K大小的Cookie分片为多个Cookie.
如果从IdP接收的用户声明和访问令牌的总大小超过11K字节,则负载均衡器会向客户端返回HTTP500错误并递增ELBAuthUserClaimsSizeExceeded指标.
5.
负载均衡器将用户索赔发送到HTTP标头中的目标.
有关更多信息,请参阅用户申请编码和签名验证(p.
46).
6.
如果IdP在ID令牌中提供了有效的刷新令牌,则负载均衡器将保存刷新令牌并在访问令牌过期时使用刷新令牌刷新用户索赔,直至会话超时或IdP刷新失败.
如果用户注销,刷新将失败并且负载均衡器会将用户重定向到IdP授权终端节点.
这使负载均衡器能够在用户注销后删除会话.
有关更多信息,请参阅身份验证注销和会话超时(p.
48).
用户申请编码和签名验证在负载均衡器成功验证用户身份之后,它会将从IdP收到的用户索赔发送给目标.
负载均衡器先为用户索赔签名,以便应用程序可以验证该签名并验证索赔是负载均衡器发送的.
负载均衡器添加以下HTTP标头:x-amzn-oidc-accesstoken令牌终端节点中的访问令牌(明文格式).
46ElasticLoadBalancingApplicationLoadBalancer用户申请编码和签名验证x-amzn-oidc-identity用户信息终端节点中的主题字段(sub)(明文格式).
x-amzn-oidc-data用户声明(JSONWeb令牌(JWT)格式).
访问令牌和用户声明与ID令牌不同.
访问令牌和用户声明仅允许访问服务器资源,而ID令牌带有的额外信息以对用户进行身份验证.
应用程序负载均衡器对用户进行身份验证,并且仅将访问令牌和声明传递给后端,但不传递ID令牌信息.
需要完整用户声明的应用程序可以使用任何标准JWT库来验证JWT令牌.
这些令牌遵循JWT格式,但不是ID令牌.
JWT格式包含base64URL编码的标头、有效负载和签名,并在末尾包含填充字符.
JWT签名为ECDSA+P-256+SHA256.
JWT标头为具有以下字段的JSON对象:{"alg":"algorithm","kid":"12345678-1234-1234-1234-123456789012","signer":"arn:aws-cn:elasticloadbalancing:region-code:account-id:loadbalancer/app/load-balancer-name/load-balancer-id","iss":"url","client":"client-id","exp":"expiration"}JWT负载是一个JSON对象,该对象包含从IdP用户信息终端节点接收的用户索赔.
{"sub":"1234567890","name":"name","email":"alias@example.
com",.
.
.
}由于负载均衡器不会对用户索赔加密,建议将目标组配置为使用HTTPS.
如果将目标组配置为使用HTTP,请务必使用安全组限制至负载均衡器的流量.
还建议在基于索赔执行任何授权之前验证签名.
要获取公钥,请从JWT标头中获取密钥ID并使用它从以下区域终端节点查找公钥:https://public-keys.
auth.
elb.
region.
amazonaws.
com/key-id对于AWSGovCloud(美国西部),终端节点如下所示:https://s3-us-gov-west-1.
amazonaws.
com/aws-elb-public-keys-prod-us-gov-west-1/key-id对于AWSGovCloud(美国东部),终端节点如下所示:https://s3-us-gov-east-1.
amazonaws.
com/aws-elb-public-keys-prod-us-gov-east-1/key-id以下示例演示如何在Python3.
x中获取公钥:importjwtimportrequestsimportbase64importjson47ElasticLoadBalancingApplicationLoadBalancer身份验证注销和会话超时#Step1:GetthekeyidfromJWTheaders(thekidfield)encoded_jwt=headers.
dict['x-amzn-oidc-data']jwt_headers=encoded_jwt.
split('.
')[0]decoded_jwt_headers=base64.
b64decode(jwt_headers)decoded_jwt_headers=decoded_jwt_headers.
decode("utf-8")decoded_json=json.
loads(decoded_jwt_headers)kid=decoded_json['kid']#Step2:Getthepublickeyfromregionalendpointurl='https://public-keys.
auth.
elb.
'+region+'.
amazonaws.
com/'+kidreq=requests.
get(url)pub_key=req.
text#Step3:Getthepayloadpayload=jwt.
decode(encoded_jwt,pub_key,algorithms=['ES256'])以下示例演示如何在Python2.
7中获取公钥:importjwtimportrequestsimportbase64importjson#Step1:GetthekeyidfromJWTheaders(thekidfield)encoded_jwt=headers.
dict['x-amzn-oidc-data']jwt_headers=encoded_jwt.
split('.
')[0]decoded_jwt_headers=base64.
b64decode(jwt_headers)decoded_json=json.
loads(decoded_jwt_headers)kid=decoded_json['kid']#Step2:Getthepublickeyfromregionalendpointurl='https://public-keys.
auth.
elb.
'+region+'.
amazonaws.
com/'+kidreq=requests.
get(url)pub_key=req.
text#Step3:Getthepayloadpayload=jwt.
decode(encoded_jwt,pub_key,algorithms=['ES256'])身份验证注销和会话超时当应用程序需要注销经身份验证的用户时,应将身份验证会话Cookie的到期时间设置为-1并将客户端重定向到IdP注销终端节点(如果IdP支持一个终端节点).
为防止用户重复使用已删除的Cookie,建议为访问令牌配置合理的短过期时间.
如果客户端为负载均衡器提供了会话Cookie(具有已到期的访问令牌和非NULL刷新令牌),负载均衡器将联系IdP,确定用户是否仍处于登录状态.
刷新令牌和会话超时将一起运行,如下所示:如果会话超时短于访问令牌过期时间,则负载均衡器将遵守会话超时.
如果用户与IdP之间有活动的会话,则可能不会提示用户重新登录.
否则,会将用户重定向到登录页面.
如果会话超时长于访问令牌过期时间并且IdP不支持刷新令牌,则负载均衡器会将身份验证会话一直保留到其超时,之后让用户再次登录.
如果会话超时长于访问令牌过期时间并且IdP支持刷新令牌,则负载均衡器将在每次访问令牌到期时刷新用户会话.
仅当身份验证会话超时或刷新流程失败之后,负载均衡器才会让用户再次登录.

HTTP标头和ApplicationLoadBalancerHTTP请求和HTTP响应使用标头字段发送有关HTTP消息的信息.
标头字段为冒号分隔的名称值对,各个值对之间由回车符(CR)和换行符(LF)进行分隔.
RFC2616信息标头中定义了标准HTTP标头字48ElasticLoadBalancingApplicationLoadBalancerX-Forwarded-For段集.
此外还有应用程序广泛使用的非标准HTTP标头.
某些非标准HTTP标头具有X-Forwarded前缀.
ApplicationLoadBalancer支持以下X-Forwarded标头.
有关HTTP连接的更多信息,请参阅ElasticLoadBalancing用户指南中的请求路由.
X-Forwarded标头X-Forwarded-For(p.
49)X-Forwarded-Proto(p.
49)X-Forwarded-Port(p.
49)X-Forwarded-For在您使用HTTP或HTTPS负载均衡器时,X-Forwarded-For请求标头可帮助您识别客户端的IP地址.
因为负载均衡器会拦截客户端和服务器之间的流量,因此您的服务器访问日志中将仅含有负载均衡器的IP地址.
要查看客户端的IP地址,请使用X-Forwarded-For请求标头.
ElasticLoadBalancing将客户端的IP地址存储在X-Forwarded-For请求标头中,并将该标头传递到您的服务器.
X-Forwarded-For请求标头采用以下形式:X-Forwarded-For:client-ip-address下面是IP地址为203.
0.
113.
7的客户端的X-Forwarded-For请求标头的示例.
X-Forwarded-For:203.
0.
113.
7下面是IPv6地址为2001:DB8::21f:5bff:febf:ce22:8a2e的客户端的X-Forwarded-For请求标头的示例.
X-Forwarded-For:2001:DB8::21f:5bff:febf:ce22:8a2eX-Forwarded-ProtoX-Forwarded-Proto请求标头可帮助您识别客户端与您的负载均衡器连接时所用的协议(HTTP或HTTPS).
您的服务器访问日志仅包含在服务器和负载均衡器之间使用的协议;不含任何关于在客户端和负载均衡器之间使用的协议之信息.
要确定客户端与负载均衡器之间所使用的协议,请使用X-Forwarded-Proto请求标头ElasticLoadBalancing.
将在客户端与负载均衡器之间使用的协议存储在X-Forwarded-Proto请求标头中,并将该标头一直传递到服务器.
您的应用程序或网站可以使用存储在X-Forwarded-Proto请求标头中的协议来呈现重新定向至适用URL的响应.
X-Forwarded-Proto请求标头采用以下形式:X-Forwarded-Proto:originatingProtocol以下示例包含以HTTPS请求形式源自客户端的请求的X-Forwarded-Proto请求标头:X-Forwarded-Proto:httpsX-Forwarded-PortX-Forwarded-Port请求标头可帮助您识别客户端与您的负载均衡器连接时所用的目标端口.

49ElasticLoadBalancingApplicationLoadBalancer删除侦听器删除应用程序负载均衡器的侦听器可以随时删除侦听器.
当您删除负载均衡器时,也会删除它的所有侦听器.

使用控制台删除侦听器1.
打开AmazonEC2控制台https://console.
amazonaws.
cn/ec2/.
2.
在导航窗格上的LOADBALANCING下,选择LoadBalancers.
3.
选择负载均衡器,然后选择Listeners.
4.
选中HTTPS侦听器对应的复选框并选择Delete(删除).
5.
当系统提示进行确认时,选择Yes,Delete.
使用AWSCLI删除侦听器使用delete-listener命令.
50ElasticLoadBalancingApplicationLoadBalancer路由配置ApplicationLoadBalancer的目标组每个目标组均用于将请求路由到一个或多个已注册的目标.
在创建每个侦听器规则时,可以指定目标组和条件.
满足规则条件时,流量会转发到相应的目标组.
您可以为不同类型的请求创建不同的目标组.
例如,为一般请求创建一个目标组,为应用程序的微服务请求创建其他目标组.
有关更多信息,请参阅应用程序负载均衡器组件(p.
1).
您基于每个目标组定义负载均衡器的运行状况检查设置.
每个目标组均使用默认运行状况检查设置,除非您在创建目标组时将其覆盖或稍后对其进行修改.
在侦听器规则中指定一个目标组后,负载均衡器将持续监控已注册到该目标组的所有目标(这些目标位于已为负载均衡器启用的可用区中)的运行状况.
负载均衡器将请求路由到正常运行的已注册目标.
目录路由配置(p.
51)Targettype(p.
52)协议版本(p.
52)已注册目标(p.
53)目标组属性(p.
54)路由算法(p.
54)取消注册延迟(p.
55)慢启动模式(p.
56)粘性会话(p.
57)创建目标组(p.
58)目标组的运行状况检查(p.
60)向您的目标组注册目标(p.
64)Lambda函数作为目标(p.
67)适用于目标组的标签(p.
74)删除目标组(p.
75)路由配置默认情况下,负载均衡器会使用您在创建目标组时指定的协议和端口号将请求路由到其目标.
此外,您可以覆盖在将目标注册到目标组时用于将流量路由到目标的端口.
目标组支持以下协议和端口:协议:HTTP、HTTPS端口:1-65535如果目标组配置了HTTPS协议或使用HTTPS运行状况检查,则TLS和目标之间的连接将使用ELBSecurityPolicy-2016-08策略中的安全设置.
负载均衡器将使用您在目标上安装的证书与目标建立TLS连接.
负载均衡器不验证这些证书.
因此,您可以使用自签名证书或已过期的证书.
由于负载均衡器位于虚拟私有云(VPC)中,因此负载均衡器与目标之间的流量将在数据包级别进行身份验证,这样即使目标上的证书无效,它也不会面临中间人攻击或欺骗风险.
51ElasticLoadBalancingApplicationLoadBalancerTargettypeTargettype创建目标组时,指定其目标类型,此类型将确定您在向此目标组注册目标时指定的目标的类型.
创建目标组后,将无法更改其目标类型.
以下是可能的目标类型:instance这些目标通过实例ID指定.
ip目标是IP地址.
lambda目标是Lambda函数.
当目标类型为ip时,您可以指定来自以下CIDR块之一的IP地址:目标组的VPC的子网10.
0.
0.
0/8(RFC1918)100.
64.
0.
0/10(RFC6598)172.
16.
0.
0/12(RFC1918)192.
168.
0.
0/16(RFC1918)通过这些支持的CIDR块,您可以将以下内容注册到目标组:ClassicLink实例、与负载均衡器VPC对等的VPC(位于同一区域或不同区域)中的实例、可通过IP地址和端口寻址的AWS资源(例如数据库)以及通过AWSDirectConnect或站点到站点VPN连接链接到AWS的本地资源.
Important不能指定可公开路由的IP地址.
如果使用实例ID指定目标,则使用实例的主网络接口中指定的主私有IP地址将流量路由到实例.
如果使用IP地址指定目标,则可以使用来自一个或多个网络接口的任何私有IP地址将流量路由到实例.
这使一个实例上的多个应用程序可以使用同一端口.
每个网络接口都可以有自己的安全组.

如果您的目标组的目标类型为lambda,则可注册单个Lambda函数.
当负载均衡器收到Lambda函数的请求时,它会调用Lambda函数.
有关更多信息,请参阅Lambda函数作为目标(p.
67).
协议版本默认情况下,ApplicationLoadBalancer使用HTTP/1.
1向目标发送请求.
您可以通过协议版本使用HTTP/2或gRPC向目标发送请求.
下表汇总了请求协议和目标组协议版本组合的结果.
请求协议协议版本结果HTTP/1.
1HTTP/1.
1成功52ElasticLoadBalancingApplicationLoadBalancer已注册目标请求协议协议版本结果HTTP/2HTTP/1.
1成功gRPCHTTP/1.
1错误HTTP/1.
1HTTP/2错误HTTP/2HTTP/2成功gRPCHTTP/2如果目标支持grPC,则成功HTTP/1.
1gRPC错误HTTP/2gRPC如果POST请求,则成功gRPCgRPC成功gRPC协议版本的注意事项唯一支持的侦听器协议是HTTPS.
监听器规则唯一支持的操作类型是forward.
唯一支持的目标类型是instance和ip.
负载均衡器解析gRPC请求并根据程序包、服务和方法将gRPC调用路由到相应的目标组.
负载均衡器支持一元、客户端流媒体、服务器端流媒体和双向流媒体.

您必须提供格式为/package.
service/method的自定义运行状况检查方法.
在检查来自目标的成功响应时,必须指定gRPC状态代码.
不能将Lambda函数用作目标.
HTTP/2协议版本的注意事项唯一支持的侦听器协议是HTTPS.
监听器规则唯一支持的操作类型是forward.
唯一支持的目标类型是instance和ip.
负载均衡器支持从客户端流式传输.
负载均衡器不支持流式传输到目标.

已注册目标您的负载均衡器充当客户端的单一接触点,并跨其正常运行的已注册目标分发传入流量.
您可以将每个目标注册到一个或多个目标组中.
如果应用程序需求增加,您可以向一个或多个目标组注册其他目标以便满足该需求.
只要注册过程完成且新注册的目标通过初始运行状况检查,负载均衡器就会开始将请求路由至此目标.

如果应用程序需求减少或者您需要为目标提供服务,您可以从目标组取消注册目标.
取消注册目标将从目标组中删除目标,但不会影响目标.
取消注册某个目标后,负载均衡器立即停止将请求路由到该目标.
目标将进入draining状态,直至进行中请求完成.
在您准备好目标以继续接收请求时,可以重新将目标注册到目标组.
如果要通过实例ID来注册目标,则可以将负载均衡器与AutoScaling组一同使用.
将一个目标组附加到AutoScaling组后,AutoScaling将在启动目标时为您向该目标组注册目标.
有关更多信息,请参阅AmazonEC2AutoScaling用户指南中的将负载均衡器附加到AutoScaling组.
53ElasticLoadBalancingApplicationLoadBalancer目标组属性限制您无法在同一VPC中注册另一个应用程序负载均衡器的IP地址.
如果另一个应用程序负载均衡器位于与负载均衡器VPC对等的VPC中,则可以注册其IP地址.
目标组属性如果目标组类型为instance或ip,则支持以下目标组属性:deregistration_delay.
timeout_seconds在取消注册目标前,ElasticLoadBalancing需等待的时间.
范围为0–3600秒.
默认值为300秒.
load_balancing.
algorithm.
type负载均衡算法确定在路由请求时,负载均衡器如何选择目标.
该值为round_robin或least_outstanding_requests.
默认为round_robin.
slow_start.
duration_seconds一个时间段(秒),在此期间,负载均衡器将进入目标组的流量的线性增加份额发送给新注册的目标.
范围为30–900秒(15分钟).
默认值为0秒(已禁用).
stickiness.
enabled指示是否启用粘性会话.
stickiness.
lb_cookie.
duration_secondsCookie有效期(以秒为单位).
经过这个有效期后,Cookie即过期.
最小值为1秒,最大值为7天(604800秒).
默认值为1天(86400秒).
stickiness.
type粘性的类型.
可能的值为lb_cookie.
如果目标组类型为lambda,则支持以下目标组属性:lambda.
multi_value_headers.
enabled指示在负载均衡器和Lambda函数之间交换的请求和响应标头是否包含值或字符串的数组.
可能的值为true或false.
默认值为false.
有关更多信息,请参阅多值标头(p.
70).
路由算法默认情况下,轮循路由算法用于路由目标组级别的请求.
可以改为指定最少未完成请求路由算法.

当应用程序的请求复杂度不一或目标的处理容量不同时,考虑使用最少未完成请求.
当请求和目标相同,或需要在目标间均匀分发请求时,最好选择轮询.
可以使用以下CloudWatch指标比较轮询与最少未完成请求的效果:RequestCount、TargetConnectionErrorCount和TargetResponseTime.
注意事项您不能同时启用最少未完成请求和慢启动模式.
如果您启用粘性会话,这将在初始目标选择之后覆盖目标组的路由算法.

54ElasticLoadBalancingApplicationLoadBalancer取消注册延迟对于HTTP/2,负载均衡器将此请求转换为多个HTTP/1.
1请求,因此最少未完成请求将每个HTTP/2请求视为多个请求.
当您将最少未完成请求与WebSockets配合使用时,将会使用最少未完成请求来选择目标.
负载均衡器会创建与此目标的连接,并通过此连接发送所有消息.
Newconsole使用新控制台修改路由算法1.
打开AmazonEC2控制台https://console.
amazonaws.
cn/ec2/.
2.
在导航窗格上的LOADBALANCING下,选择TargetGroups.
3.
选择目标组的名称以打开其详细信息页面.
4.
在组详细信息选项卡的属性部分中,选择编辑.
5.
在编辑属性页面上,对于负载均衡算法,选择轮询或最少未完成请求.
6.
选择保存更改.
Oldconsole使用旧控制台修改路由算法1.
打开AmazonEC2控制台https://console.
amazonaws.
cn/ec2/.
2.
在导航窗格上的LOADBALANCING下,选择TargetGroups.
3.
选择目标组.
4.
在Description选项卡上,选择Editattributes.
5.
在Editattributes(编辑属性)页面上,对于Loadbalancingalgorithm(负载均衡算法),选择Roundrobin(轮询)或Leastoutstandingrequests(最少未完成请求),然后选择Save(保存).
使用AWSCLI修改路由算法使用带load_balancing.
algorithm.
type属性的modify-target-group-attributes命令.
取消注册延迟ElasticLoadBalancing停止将请求发送到正在取消注册的目标.
默认情况下,ElasticLoadBalancing在取消注册过程完成前会等待300秒,这有助于完成针对目标的进行中的请求.
要更改ElasticLoadBalancing等待的时间,请更新取消注册延迟值.
取消注册的目标的初始状态为draining.
取消注册延迟结束后,取消注册过程完成,目标状态变为unused.
如果目标是AutoScaling组的一部分,便可以将其终止或替换.
如果取消注册的目标没有进行中的请求且没有活动连接,则ElasticLoadBalancing将立即完成取消注册过程,而不等待取消注册延迟结束.
但是,即使目标取消注册已完成,目标的状态也将显示为draining,直至取消注册延迟结束.
如果正在取消注册的目标在取消注册延迟结束前终止连接,客户端将收到500级错误响应.
Newconsole使用新控制台更新注销延迟值1.
打开AmazonEC2控制台https://console.
amazonaws.
cn/ec2/.
55ElasticLoadBalancingApplicationLoadBalancer慢启动模式2.
在导航窗格上的LOADBALANCING下,选择TargetGroups.
3.
选择目标组的名称以打开其详细信息页面.
4.
在组详细信息选项卡的属性部分中,选择编辑.
5.
在编辑属性页面上,根据需要更改注销延迟的值.
6.
选择保存更改.
Oldconsole使用旧控制台更新注销延迟值1.
打开AmazonEC2控制台https://console.
amazonaws.
cn/ec2/.
2.
在导航窗格上的LOADBALANCING下,选择TargetGroups.
3.
选择目标组.
4.
在Description选项卡上,选择Editattributes.
5.
在Editattributes页面上,根据需要更改Deregistrationdelay的值,然后选择Save.
使用AWSCLI更新取消注册延迟值使用带deregistration_delay.
timeout_seconds属性的modify-target-group-attributes命令.
慢启动模式默认情况下,目标只要注册到目标组并通过了初始运行状况检查,就会开始接收其完整的请求份额.
使用慢启动模式可给目标时间进行预热,然后负载均衡器向其发送完整的请求份额.

为目标组启用慢启动后,当目标组认为其目标正常时,其目标会进入慢启动模式.
慢启动模式下的目标在配置的慢启动持续时间过去或目标变得不正常时退出慢启动模式.
负载均衡器线性增加它可以向慢启动模式下的目标发送的请求数量.
在正常目标退出慢启动模式后,负载均衡器可以向它发送完整的请求份额.

注意事项为目标组启用慢启动之后,注册到目标组的正常目标不会进入慢启动模式.

当您为空的目标组启用慢启动,然后使用单一注册操作注册目标时,这些目标不会进入慢启动模式.
仅当至少有一个正常目标未处于慢启动模式时,新注册的目标才会进入慢启动模式.

如果您在慢启动模式下取消注册目标,目标将退出慢启动模式.
如果您再次注册同一目标,则当目标组认为该目标正常时,它将进入慢启动模式.
如果处于慢启动模式的目标变得不正常,则该目标将退出慢启动模式.
当目标变得正常时,它将再次进入慢启动模式.
您不能同时启用慢启动模式和最少未完成请求.
Newconsole使用新控制台更新慢启动持续时间值1.
打开AmazonEC2控制台https://console.
amazonaws.
cn/ec2/.
2.
在导航窗格上的LOADBALANCING下,选择TargetGroups.
3.
选择目标组的名称以打开其详细信息页面.
4.
在组详细信息选项卡的属性部分中,选择编辑.
56ElasticLoadBalancingApplicationLoadBalancer粘性会话5.
在编辑属性页面上,根据需要更改慢启动持续时间的值.
要禁用慢启动模式,请将持续时间设置为0.
6.
选择保存更改.
Oldconsole使用旧控制台更新慢启动持续时间值1.
打开AmazonEC2控制台https://console.
amazonaws.
cn/ec2/.
2.
在导航窗格上的LOADBALANCING下,选择TargetGroups.
3.
选择目标组.
4.
在Description选项卡上,选择Editattributes.
5.
在Editattributes(编辑属性)页面上,根据需要更改Slowstartduration(慢启动持续时间)的值,然后选择Save(保存).
要禁用慢启动模式,请将持续时间设置为0.
使用AWSCLI更新慢启动持续时间值使用带slow_start.
duration_seconds属性的modify-target-group-attributes命令.
粘性会话粘性会话是用于将请求路由到目标组中的同一目标的机制.
对于维护状态信息以便向客户端提供持续体验的服务器来说,这很有用.
要使用粘性会话,客户端必须支持Cookie.
当负载均衡器首次收到来自客户端的请求时,它将请求路由到目标,生成对所选目标的相关信息进行编码的名为AWSALB的cookie,对cookie进行加密,并将cookie包含在对客户端的响应中.
客户端应该在向负载均衡器的后续请求中包含它收到的cookie.
当负载均衡器收到来自客户端的包含cookie的请求时,如果为目标组启用了粘性会话,并且请求转至同一目标组,则负载均衡器将检测cookie并将请求路由到同一目标.
如果cookie存在但无法解码,或者它指的是已取消注册或不正常的目标,则负载均衡器会选择一个新目标并使用有关新目标的信息更新cookie.
您在目标组级别启用粘性会话.
您还可以设置负载均衡器生成Cookie的粘性持续时间,以秒为单位.
系统会随每个请求设置持续时间.
因此,如果客户端在各个持续时间过期前发送请求,则粘性会话会继续.

对于CORS(跨源资源共享)请求,某些浏览器需要SameSite=None;Secure来启用粘性.
在这种情况下,ElasticLoadBalancing会生成第二个粘性Cookie(即AWSALBCORS),该Cookie中包含原始粘性Cookie中的信息加上此SameSite属性.
客户端会同时收到这两个Cookie.
ApplicationLoadBalancer仅支持负载均衡器生成的Cookie.
这些Cookie的内容使用轮换密钥进行加密.
您无法解密或修改负载均衡器生成的Cookie.
注意事项如果您使用ApplicationLoadBalancer的多个层,则只能在一个层上启用粘性会话,因为负载均衡器将使用相同的cookie名称.
如果您具有一个包含多个目标组的转发操作(p.
24),并且一个或多个目标组已启用了粘性会话,则必须启用目标组粘性.
WebSockets连接天生具有粘性.
如果客户端请求WebSockets连接升级,则返回HTTP101状态码以接受连接升级的目标将是在WebSockets连接中使用的目标.
在WebSockets升级完成后,将不会使用基于Cookie的粘性.
ApplicationLoadBalancer使用Cookie标头而不是Max-Age标头中的Expires属性.
ApplicationLoadBalancer不支持URL编码的Cookie值.
57ElasticLoadBalancingApplicationLoadBalancer创建目标组Newconsole使用新控制台启用粘性会话1.
打开AmazonEC2控制台https://console.
amazonaws.
cn/ec2/.
2.
在导航窗格上的LOADBALANCING下,选择TargetGroups.
3.
选择目标组的名称以打开其详细信息页面.
4.
在组详细信息选项卡的属性部分中,选择编辑.
5.
在Editattributes页上,执行以下操作:a.
选择粘性.
b.
对于Stickinessduration,指定一个介于1秒和7天之间的值.
c.
选择保存更改.
Oldconsole使用旧控制台启用粘性会话1.
打开AmazonEC2控制台https://console.
amazonaws.
cn/ec2/.
2.
在导航窗格上的LOADBALANCING下,选择TargetGroups.
3.
选择目标组.
4.
在Description选项卡上,选择Editattributes.
5.
在Editattributes页上,执行以下操作:a.
选择Enableloadbalancergeneratedcookiestickiness.
b.
对于Stickinessduration,指定一个介于1秒和7天之间的值.
c.
选择Save.
使用AWSCLI启用粘性会话使用带stickiness.
enabled和stickiness.
lb_cookie.
duration_seconds属性的modify-target-group-attributes命令.
创建目标组将目标注册到目标组.
默认情况下,负载均衡器使用您为目标组指定的端口和协议将请求发送到已注册目标.
在将每个目标注册到目标组时,可以覆盖此端口.
在创建目标组后,可以添加标签.
要将流量路由到目标组中的目标,请在创建侦听器或侦听器规则时,在操作中指定目标组.
有关更多信息,请参阅侦听器规则(p.
22).
您可以随时在目标组中添加或删除目标.
有关更多信息,请参阅向您的目标组注册目标(p.
64).
您也可以修改目标组的运行状况检查设置.
有关更多信息,请参阅修改目标组的运行状况检查设置(p.
63).
Newconsole使用新控制台创建目标组1.
打开AmazonEC2控制台https://console.
amazonaws.
cn/ec2/.
58ElasticLoadBalancingApplicationLoadBalancer创建目标组2.
在导航窗格上的LOADBALANCING下,选择TargetGroups.
3.
选择Createtargetgroup.
4.
对于选择目标类型,选择实例可按实例ID注册目标,选择IP地址可按IP地址注册目标,或者选择Lambda函数可将Lambda函数注册为目标.
5.
对于Targetgroupname,键入目标组的名称.
此名称在每个区域的每个账户中必须唯一,最多可以有32个字符,只能包含字母数字字符或连字符,不得以连字符开头或结尾.
6.
如果目标类型为实例或IP地址,请执行以下操作:a.
(可选)对于Protocol和Port,根据需要修改默认值.
b.
(可选)对于Protocolversion,根据需要修改默认值.
c.
对于VPC,选择VirtualPrivateCloud(VPC).
d.
(可选)在运行状况检查部分中,根据需要修改默认设置.
7.
如果目标类型为Lambda函数,则可以通过在运行状况检查部分中选择启用来启用运行状况检查.

8.
(可选)添加一个或多个标签,如下所示:a.
展开标签部分.
b.
选择Addtag.
c.
输入标签键和标签值.
9.
选择Next(下一步).
10.
(可选)添加一个或多个目标,如下所示:如果目标类型为实例,请选择一个或多个实例,输入一个或多个端口,然后选择在下面以待注册的形式添加.
如果目标类型为IP地址,请选择网络,输入IP地址和端口,然后选择在下面以待注册的形式添加.
如果目标类型是Lambda函数,请指定单个Lambda函数,或者忽略此步骤并稍后指定Lambda函数.
11.
选择Createtargetgroup.
12.
(可选)您可以在侦听器规则中指定目标组.
有关更多信息,请参阅侦听器规则(p.
37).
Oldconsole使用旧控制台创建目标组1.
打开AmazonEC2控制台https://console.
amazonaws.
cn/ec2/.
2.
在导航窗格上的LOADBALANCING下,选择TargetGroups.
3.
选择Createtargetgroup.
4.
对于Targetgroupname,键入目标组的名称.
此名称在每个区域的每个账户中必须唯一,最多可以有32个字符,只能包含字母数字字符或连字符,不得以连字符开头或结尾.
5.
对于Targettype(目标类型),选择Instance(实例)按实例ID注册目标,选择IP注册IP地址,选择Lambdafunction(Lambda函数)注册Lambda函数.
6.
如果目标类型为Instance(实例)或IP,请执行以下操作:a.
(可选)对于Protocol和Port,根据需要修改默认值.
b.
(可选)对于Protocolversion,根据需要修改默认值.
c.
对于VPC,选择VirtualPrivateCloud(VPC).
7.
如果目标类型为Lambdafunction(Lambda函数),请执行以下操作:a.
对于Lambdafunction(Lambda函数),请执行下列操作之一:选择Lambda函数59ElasticLoadBalancingApplicationLoadBalancer配置运行状况检查创建新的Lambda函数并选择此函数创建目标组后注册Lambda函数b.
(可选)要启用运行状况检查,请依次选择Healthcheck(运行状况检查)和Enable(启用).
8.
(可选)对于Healthchecksettings和Advancedhealthchecksettings,根据需要修改默认设置.
9.
选择Create.
10.
(可选)添加一个或多个标签,如下所示:a.
选择新创建的目标组.
b.
在Tags选项卡上,选择Add/EditTags.
c.
在Add/EditTags页面上,对于添加的每个标签,选择CreateTag,然后指定标签键和标签值.
添加完标签后,选择Save.
11.
(可选)要向目标组添加目标,请参阅向您的目标组注册目标(p.
64).
12.
(可选)您可以在侦听器规则中指定目标组.
有关更多信息,请参阅侦听器规则(p.
37).
使用AWSCLI创建目标组使用create-target-group命令创建目标组,使用add-tags命令标记目标组,使用register-targets命令添加目标.
目标组的运行状况检查您的应用程序负载均衡器会定期向其注册目标发送请求以测试其状态.
这些测试称为运行状况检查.

每个负载均衡器节点仅将请求路由至负载均衡器的已启用可用区中的正常目标.
每个负载均衡器节点均使用每个目标注册到的目标组的运行状况检查设置来检查该目标的运行状况.
在注册目标后,目标必须通过一次运行状况检查才会被视为正常.
在完成每次运行状况检查后,负载均衡器节点将关闭为运行状况检查而建立的连接.
如果目标组仅包含运行状况不佳的注册目标,则负载均衡器节点将在其运行状况不佳的目标之间路由请求.

运行状况检查不支持WebSockets.
运行状况检查设置如下表所述,您可以为目标组中的目标配置运行状况检查.
表中使用的设置名称是API中使用的名称.
负载均衡器使用指定的端口、协议和ping路径,每隔HealthCheckIntervalSeconds指定的秒数向每个已注册目标发送一次运行状况检查请求.
每个运行状况检查请求都是独立的,其结果在整个时间间隔内持续.
目标响应所用时间不影响下一运行状况检查请求的时间间隔.
如果运行状况检查超出了UnhealthyThresholdCount连续失败次数,则负载均衡器将使目标停止服务.
如果运行状况检查超出了HealthyThresholdCount连续成功次数,则负载均衡器将使目标恢复服务.
设置说明HealthCheckProtocol对目标执行运行状况检查时负载均衡器使用的协议.
可能的协议为HTTP和HTTPS.
默认值为HTTP协议.
HealthCheckPort对目标执行运行状况检查时负载均衡器使用的端口.
默认设置是使用每个目标用来从负载均衡器接收流量的端口.
60ElasticLoadBalancingApplicationLoadBalancer目标运行状况设置说明HealthCheckPath目标运行状况检查的目的地.
如果协议版本是HTTP/1.
1或HTTP/2,请指定有效的URI(/pathquery).
默认值为/.
如果协议版本是gRPC,请使用格式/Package.
Class/method指定自定义运行状况检查方法的路径.
默认为/AWS.
ALB/healthcheck.
HealthCheckTimeoutSeconds以秒为单位的时间长度,在此期间内,没有来自目标的响应意味着无法通过运行状况检查.
范围为2–120秒.
默认值为5秒(如果目标类型为instance或ip)和30秒(如果目标类型为lambda).
HealthCheckIntervalSeconds各个目标的运行状况检查之间的大约时间量(以秒为单位).
范围为5–300秒.
默认值为30秒(如果目标类型为instance或ip)和35秒(如果目标类型为lambda).
HealthyThresholdCount将不正常目标视为正常运行之前所需的连续运行状况检查成功次数.
范围为2–10.
默认值为5.
UnhealthyThresholdCount将目标视为不正常之前所需的连续运行状况检查失败次数.
范围为2–10.
默认值为2.
Matcher检查来自目标的成功响应时要使用的代码.
这些代码在控制台中称为成功代码.
如果协议版本是HTTP/1.
1或HTTP/2,则可能的值在200到499之间.
您可以指定多个值(例如,"200,202")或一系列值(例如,"200-299").
默认值为200.
如果协议版本是gRPC,则可能的值在0到99之间.
您可以指定多个值(例如,"0,1")或一系列值(例如,"0-5").
默认值是12.
目标运行状况在负载均衡器向目标发送运行状况检查请求之前,您必须将目标注册到目标组,在侦听器规则中指定其目标组,并确保已为负载均衡器启用目标的可用区.
目标必须先通过初始运行状况检查,然后才能接收来自负载均衡器的请求.
在目标通过初始运行状况检查后,其状态为Healthy.
下表描述已注册目标的正常状态的可能值.
值说明initial负载均衡器正处于注册目标或对目标执行初始运行状况检查的过程中.
相关原因代码:Elb.
RegistrationInProgress|Elb.
InitialHealthChecking61ElasticLoadBalancingApplicationLoadBalancer运行状况检查原因代码值说明healthy目标正常.
相关原因代码:无unhealthy目标未响应运行状况检查或未通过运行状况检查.
相关原因代码:Target.
ResponseCodeMismatch|Target.
Timeout|Target.
FailedHealthChecks|Elb.
InternalErrorunused目标未注册到目标组,侦听器规则中未使用目标组,或者目标在没有启用的可用区中,或者目标处于停止或终止状态.
相关原因代码:Target.
NotRegistered|Target.
NotInUse|Target.
InvalidState|Target.
IpUnusabledraining目标正在取消注册,连接即将耗尽.
相关原因代码:Target.
DeregistrationInProgressunavailable对目标组禁用运行状况检查.
相关原因代码:Target.
HealthCheckDisabled运行状况检查原因代码如果目标的状态是Healthy以外的任何值,API将返回问题的原因代码和描述,并且控制台将在工具提示中显示相同的描述.
以Elb开头的原因代码源自负载均衡器端,以Target开头的原因代码源自目标端.
原因代码说明Elb.
InitialHealthChecking正在进行初始运行状况检查Elb.
InternalError由于内部错误,运行状况检查失败Elb.
RegistrationInProgress目标注册正在进行中Target.
DeregistrationInProgress目标取消注册正在进行中Target.
FailedHealthChecks运行状况检查失败Target.
HealthCheckDisabled运行状况检查已禁用Target.
InvalidState目标处于停止状态目标处于终止状态目标处于终止或停止状态目标处于无效状态Target.
IpUnusable该IP地址正被负载均衡器使用,因此无法用作目标Target.
NotInUse目标组没有被配置为接收来自负载均衡器的流量目标处于没有为负载均衡器启用的可用区62ElasticLoadBalancingApplicationLoadBalancer检查目标的运行状况原因代码说明Target.
NotRegistered目标未注册到目标组Target.
ResponseCodeMismatch运行状况检查失败,显示以下代码:[code]Target.
Timeout请求超时检查目标的运行状况您可以检查已注册到目标组的目标的运行状况.
Newconsole使用新控制台检查目标的运行状况1.
打开AmazonEC2控制台https://console.
amazonaws.
cn/ec2/.
2.
在导航窗格上的LOADBALANCING下,选择TargetGroups.
3.
选择目标组的名称以打开其详细信息页面.
4.
在Targets选项卡上,Status列指示每个目标的状态.
5.
如果状态是Healthy以外的任何值,则状态详细信息列将包含更多信息.
Oldconsole使用旧控制台检查目标的运行状况1.
打开AmazonEC2控制台https://console.
amazonaws.
cn/ec2/.
2.
在导航窗格上的LOADBALANCING下,选择TargetGroups.
3.
选择目标组.
4.
在Targets选项卡上,Status列指示每个目标的状态.
5.
如果状态是Healthy以外的任何值,请查看工具提示以了解更多信息.
使用AWSCLI检查目标的运行状况使用describe-target-health命令.
此命令的输出包含目标运行状况.
如果状态是Healthy以外的任何值,则输出还包括原因代码.
接收有关运行状况不佳的目标的电子邮件通知使用CloudWatch警报触发Lambda函数,以发送有关运行状况不佳的目标的详细信息.
有关分步说明,请参阅以下博客文章:识别负载均衡器的运行状况不佳的目标.
修改目标组的运行状况检查设置您可以随时修改目标组的运行状况检查设置.
Newconsole使用新控制台修改目标组的运行状况检查设置1.
打开AmazonEC2控制台https://console.
amazonaws.
cn/ec2/.
2.
在导航窗格上的LOADBALANCING下,选择TargetGroups.
3.
选择目标组的名称以打开其详细信息页面.
63ElasticLoadBalancingApplicationLoadBalancer注册目标4.
在组详细信息选项卡的运行状况检查设置部分中,选择编辑.
5.
在编辑运行状况检查设置页面上,根据需要修改设置,然后选择保存更改.

Oldconsole使用旧控制台修改目标组的运行状况检查设置1.
打开AmazonEC2控制台https://console.
amazonaws.
cn/ec2/.
2.
在导航窗格上的LOADBALANCING下,选择TargetGroups.
3.
选择目标组.
4.
在Healthchecks选项卡上,选择Edit.
5.
在Edittargetgroup页面上,根据需要修改设置,然后选择Save.
使用AWSCLI修改目标组的运行状况检查设置使用modify-target-group命令.
向您的目标组注册目标将目标注册到目标组.
在创建目标组时,指定其目标类型,此类型将确定您如何注册其目标.
例如,您可以注册实例ID、IP地址或Lambda函数.
有关更多信息,请参阅ApplicationLoadBalancer的目标组(p.
51).
如果当前已注册目标的需求增加,您可以注册其他目标以便满足该需求.
在目标准备好处理请求后,将目标注册到您的目标组.
只要注册过程完成且目标通过初始运行状况检查,负载均衡器就会开始将请求路由至目标.
如果已注册目标需求减少或者您需要为目标提供服务,您可以从目标组取消注册目标.
取消注册某个目标后,负载均衡器立即停止将请求路由到该目标.
在目标准备好接收请求时,您可以再次将目标注册到目标组.
在取消注册目标时,负载均衡器会一直等待,直到进行中的请求完成.
这称作连接耗尽.
在连接耗尽期间,目标的状态为draining.
取消注册通过IP地址注册的目标后,必须等待取消注册延迟结束,然后才可以重新注册相同的IP地址.
如果要通过实例ID来注册目标,则可以将负载均衡器与AutoScaling组一同使用.
将一个目标组附加到AutoScaling组且该组扩展后,将自动向此目标组注册AutoScaling组启动的实例.
如果您将目标组与AutoScaling组分离,则实例会自动从目标组中取消注册.
有关更多信息,请参阅AmazonEC2AutoScaling用户指南中的将负载均衡器附加到AutoScaling组.
目标安全组在将EC2实例注册为目标时,您必须确保实例的安全组允许负载均衡器在侦听器端口和运行状况检查端口上与您的实例进行通信.
推荐的规则InboundSourcePortRangeComment侦侦侦侦侦侦侦侦侦侦侦侦侦在实例侦听器端口上允许来自负载均衡器的流量64ElasticLoadBalancingApplicationLoadBalancer注册或取消注册目标侦侦侦侦侦侦侦侦侦侦侦侦侦侦在运行状况检查端口上允许来自负载均衡器的流量我们还建议您允许入站ICMP流量以支持路径MTU发现.
有关更多信息,请参阅AmazonEC2用户指南(适用于Linux实例)中的路径MTU发现.
注册或取消注册目标您的目标组的目标类型将确定如何向该目标组注册目标.
有关更多信息,请参阅Targettype(p.
52).
目录通过实例ID注册或取消注册目标(p.
65)通过IP地址注册或取消注册目标(p.
65)注册或注销Lambda函数(p.
66)使用AWSCLI注册或取消注册目标(p.
67)通过实例ID注册或取消注册目标实例必须位于您为目标组指定的VirtualPrivateCloud(VPC)中.
当您注册实例时,实例还必须处于running状态.
Newconsole使用新控制台按实例ID注册或注销目标1.
打开AmazonEC2控制台https://console.
amazonaws.
cn/ec2/.
2.
在导航窗格上的LOADBALANCING下,选择TargetGroups.
3.
选择目标组的名称以打开其详细信息页面.
4.
选择Targets选项卡.
5.
要注册实例,请选择注册目标.
选择一个或多个实例,根据需要输入默认实例端口,然后选择在下面以待注册的形式添加.
添加完实例后,选择注册待注册目标.
6.
要注销实例,请选择实例,然后选择注销.
Oldconsole使用旧控制台按实例ID注册或注销目标1.
打开AmazonEC2控制台https://console.
amazonaws.
cn/ec2/.
2.
在导航窗格上的LOADBALANCING下,选择TargetGroups.
3.
选择您的目标组.
4.
在Targets选项卡上,选择Edit.
5.
要注册实例,请从Instances中选择实例,根据需要修改默认实例端口,然后选择Addtoregistered.
6.
要取消注册实例,请从Registeredinstances中选择实例,然后选择Remove.
7.
选择Save.
通过IP地址注册或取消注册目标您注册的IP地址必须来自下列CIDR块之一:65ElasticLoadBalancingApplicationLoadBalancer注册或取消注册目标目标组的VPC的子网10.
0.
0.
0/8(RFC1918)100.
64.
0.
0/10(RFC6598)172.
16.
0.
0/12(RFC1918)192.
168.
0.
0/16(RFC1918)限制您无法在同一VPC中注册另一个应用程序负载均衡器的IP地址.
如果另一个应用程序负载均衡器位于与负载均衡器VPC对等的VPC中,则可以注册其IP地址.
Newconsole使用新控制台按IP地址注册或注销目标1.
打开AmazonEC2控制台https://console.
amazonaws.
cn/ec2/.
2.
在导航窗格上的LOADBALANCING下,选择TargetGroups.
3.
选择目标组的名称以打开其详细信息页面.
4.
选择Targets选项卡.
5.
要注册IP地址,请选择注册目标.
对于每个IP地址,选择网络,输入IP地址和端口,然后选择在下面以待注册的形式添加.
指定完地址后,选择注册待注册目标.
6.
要注销IP地址,请选择IP地址,然后选择注销.
如果您有多个注册的IP地址,则可能会发现添加筛选器或更改排序顺序很有帮助.
Oldconsole通过IP地址注册或取消注册目标1.
打开AmazonEC2控制台https://console.
amazonaws.
cn/ec2/.
2.
在导航窗格上的LOADBALANCING下,选择TargetGroups.
3.
选择您的目标组.
4.
在Targets选项卡上,选择Edit.
5.
要注册IP地址,请在菜单栏中选择Registertargets图标(加号).
对于每个IP地址,请选择网络,键入IP地址和端口,然后选择Addtolist(添加到列表).
指定完地址后,选择Register.
6.
要取消注册IP地址,请在菜单栏中选择Deregistertargets图标(减号).
如果您有多个注册的IP地址,则可能会发现添加筛选器或更改排序顺序很有帮助.
选择IP地址并选择Deregister.
7.
要离开此屏幕,请选择菜单栏中的Backtotargetgroup(返回到目标组)图标(后退按钮).
注册或注销Lambda函数您可以向每个目标组注册一个Lambda函数.
ElasticLoadBalancing必须有权调用Lambda函数.
如果您不再需要向您的Lambda函数发送流量,则可以将其取消注册.
在取消注册Lambda函数后,进行中的请求会失败,并显示HTTP5XX错误.
要替换Lambda函数,最好是创建一个新的目标组.
有关更多信息,请参阅Lambda函数作为目标(p.
67).
Newconsole使用新控制台注册或注销Lambda函数1.
打开AmazonEC2控制台https://console.
amazonaws.
cn/ec2/.
2.
在导航窗格上的LOADBALANCING下,选择TargetGroups.
66ElasticLoadBalancingApplicationLoadBalancerLambda函数作为目标3.
选择目标组的名称以打开其详细信息页面.
4.
选择Targets选项卡.
5.
如果未注册任何Lambda函数,请选择Register(注册).
选择Lambda函数并选择Register(注册).
6.
要取消注册Lambda函数,请选择Deregister(取消注册).
当系统提示您确认时,选择Deregister(取消注册).
Oldconsole使用旧控制台注册或注销Lambda函数1.
打开AmazonEC2控制台https://console.
amazonaws.
cn/ec2/.
2.
在导航窗格上的LOADBALANCING下,选择TargetGroups.
3.
选择您的目标组,然后选择Targets(目标)选项卡.
4.
如果未注册任何Lambda函数,请选择Register(注册).
选择Lambda函数并选择Register(注册).
5.
要取消注册Lambda函数,请选择Deregister(取消注册).
当系统提示您确认时,选择Deregister(取消注册).
使用AWSCLI注册或取消注册目标使用register-targets命令添加目标,并使用deregister-targets命令删除目标.
Lambda函数作为目标您可以将Lambda函数注册为目标并将侦听器规则配置为将请求转发到Lambda函数的目标组.
当负载均衡器将请求转发到目标组并使用Lambda函数作为目标时,它会调用Lambda函数并以JSON格式将请求内容传递到Lambda函数.
限制Lambda函数和目标组必须位于同一账户中,且位于同一区域中.
您可以发送到Lambda函数的请求正文的最大大小为1MB.
有关相关大小限制,请参阅HTTP标头限制.
Lambda函数可以发送的响应JSON的最大大小为1MB.
不支持WebSockets.
升级请求被拒绝,并显示HTTP400代码.
内容准备Lambda函数(p.
68)为Lambda函数创建目标组(p.
66)从负载均衡器接收事件(p.
69)响应负载均衡器(p.
70)多值标头(p.
70)启用运行状况检查(p.
72)注销Lambda函数(p.
73)有关演示,请参阅应用程序负载均衡器上的Lambda目标.
67ElasticLoadBalancingApplicationLoadBalancer准备Lambda函数准备Lambda函数如果您将Lambda函数与应用程序负载均衡器一起使用,则以下建议适用.
调用Lambda函数的权限如果使用AWS管理控制台创建目标组并注册Lambda函数,控制台会代表您将所需的权限添加到Lambda函数策略.
否则,在您使用AWSCLI创建目标组并注册函数后,必须使用add-permission命令来向ElasticLoadBalancing授予调用您的Lambda函数的权限.
我们建议您包含--source-arn参数以限制对指定目标组的函数调用.
awslambdaadd-permission\--function-namelambda-function-arn-with-alias-name\--statement-idelb1\--principalelasticloadbalancing.
amazonaws.
com\--actionlambda:InvokeFunction\--source-arntarget-group-arnLambda函数版本控制您可以为每个目标组注册一个Lambda函数.
为确保您可以更改Lambda函数并且负载均衡器始终调用当前版本的Lambda函数,请在向负载均衡器注册Lambda函数时创建一个函数别名并在函数ARN中包含该别名.
有关更多信息,请参阅AWSLambdaDeveloperGuide中的AWSLambda函数版本控制和别名和使用别名的流量转移.
函数超时负载均衡器会一直等待,直到您的Lambda函数响应或超时.
建议您根据预期运行时间配置Lambda函数的超时.
有关默认超时值以及如何更改该值的信息,请参阅基本AWSLambda函数配置.
有关可配置的最大超时值的信息,请参阅AWSLambda限制.
为Lambda函数创建目标组创建一个要在请求路由中使用的目标组.
如果请求内容与侦听器规则匹配并且具有将该内容转发到此目标组的操作,则负载均衡器会调用已注册的Lambda函数.
Newconsole使用新控制台创建目标组并注册Lambda函数1.
打开AmazonEC2控制台https://console.
amazonaws.
cn/ec2/.
2.
在导航窗格上的LOADBALANCING下,选择TargetGroups.
3.
选择Createtargetgroup.
4.
对于选择目标类型,选择Lambda函数.
5.
对于Targetgroupname,键入目标组的名称.
6.
(可选)要启用运行状况检查,请在运行状况检查部分中选择启用.
7.
(可选)添加一个或多个标签,如下所示:a.
展开标签部分.
b.
选择Addtag.
c.
输入标签键和标签值.
8.
选择Next(下一步).
9.
指定单个Lambda函数,或者忽略此步骤并在以后指定Lambda函数.
10.
选择Createtargetgroup.
68ElasticLoadBalancingApplicationLoadBalancer从负载均衡器接收事件Oldconsole使用旧控制台创建目标组并注册Lambda函数1.
打开AmazonEC2控制台https://console.
amazonaws.
cn/ec2/.
2.
在导航窗格上的LOADBALANCING下,选择TargetGroups.
3.
选择Createtargetgroup.
4.
对于Targetgroupname,键入目标组的名称.
5.
对于Targettype(目标类型),选择Lambdafunction(Lambda函数).
6.
对于Lambdafunction(Lambda函数),请执行下列操作之一:选择Lambda函数创建新的Lambda函数并选择此函数创建目标组后注册Lambda函数7.
(可选)要启用运行状况检查,请依次选择Healthcheck(运行状况检查)和Enable(启用).
8.
选择Create.
使用AWSCLI创建目标组并取消注册Lambda函数使用create-target-group和register-targets命令.
从负载均衡器接收事件负载均衡器支持通过HTTP和HTTPS进行请求的Lambda调用.
负载均衡器采用JSON格式发送事件.
负载均衡器将以下标头添加到每个请求:X-Amzn-Trace-Id、X-Forwarded-For、X-Forwarded-Port和X-Forwarded-Proto.
如果content-encoding标头存在,负载均衡器会对正文进行Base64编码并将isBase64Encoded设置为true.
如果content-encoding标头不存在,Base64编码取决于内容类型.
对于以下类型,负载均衡器按原样发送正文并将isBase64Encoded设置为false:text/*、application/json、application/javascript和application/xml.
否则,负载均衡器会对正文进行Base64编码并将isBase64Encoded设置为true.
以下是示例事件.
{"requestContext":{"elb":{"targetGroupArn":"arn:aws-cn:elasticloadbalancing:region:123456789012:targetgroup/my-target-group/6d0ecf831eec9f09"}},"httpMethod":"GET","path":"/","queryStringParameters":{parameters},"headers":{"accept":"text/html,application/xhtml+xml","accept-language":"en-US,en;q=0.
8","content-type":"text/plain","cookie":"cookies","host":"lambda-846800462-us-east-2.
elb.
amazonaws.
com","user-agent":"Mozilla/5.
0(Macintosh;IntelMacOSX10_11_6)","x-amzn-trace-id":"Root=1-5bdb40ca-556d8b0c50dc66f0511bf520","x-forwarded-for":"72.
21.
198.
66","x-forwarded-port":"443","x-forwarded-proto":"https"69ElasticLoadBalancingApplicationLoadBalancer响应负载均衡器},"isBase64Encoded":false,"body":"request_body"}响应负载均衡器来自Lambda函数的响应必须包含Base64编码状态、状态代码和标头.
您可以省略正文.
要在响应的正文中包含二进制内容,您必须对内容进行Base64编码并将isBase64Encoded设置为true.
负载均衡器解码内容以检索二进制内容并将该内容发送到HTTP响应的正文中的客户端.
负载均衡器不会遵守逐跳标头,如Connection或Transfer-Encoding.
您可以省略Content-Length标头,因为负载均衡器会在将响应发送到客户端之前计算它.
以下是来自Lambda函数的示例响应.
{"isBase64Encoded":false,"statusCode":200,"statusDescription":"200OK","headers":{"Set-cookie":"cookies","Content-Type":"application/json"},"body":"HellofromLambda(optional)"}有关与ApplicationLoadBalancer结合使用的Lambda函数模板,请参阅github上的application-load-balancer-serverless-app.
或者,打开Lambda控制台,创建一个函数,然后从AWSServerlessApplicationRepository中选择下列项目之一:ALB-Lambda-Target-HelloWorldALB-Lambda-Target-UploadFiletoS3ALB-Lambda-Target-BinaryResponseALB-Lambda-Target-WhatisMyIP多值标头如果来自客户端的请求或来自Lambda函数的响应包含具有多个值的标头或多次包含同一标头,或包含同一键具有多个值的查询参数,则可启用对多值标头语法的支持.
启用多值标头后,负载均衡器和Lambda函数之间交换的标头和查询参数将使用数组而不是字符串.
如果您没有启用多值标头语法,并且标头或查询参数具有多个值,则负载均衡器将使用其收到的最后一个值.
目录包含多值标头的请求(p.
70)包含多值标头的响应(p.
71)启用多值标头(p.
72)包含多值标头的请求用于标头和查询字符串参数的字段名称根据是否为目标组启用了多值标头而有所不同.

以下示例请求具有两个查询参数和同一个键:70ElasticLoadBalancingApplicationLoadBalancer多值标头http://www.
example.
com&myKey=val1&myKey=val2对于默认格式,负载均衡器将使用客户端发送的最后一个值,并使用queryStringParameters向您发送包含查询字符串参数的事件.
例如:"queryStringParameters":{"myKey":"val2"},如果启用了多值标头,则负载平衡器将使用客户端发送的两个键值,并使用multiValueQueryStringParameters向您发送包含查询字符串参数的事件.
例如:"multiValueQueryStringParameters":{"myKey":["val1","val2"]},同样,假设客户端发送标头中包含两个Cookie的请求:"cookie":"name1=value1","cookie":"name2=value2",对于默认格式,负载均衡器将使用客户端发送的最后一个Cookie,并使用headers向您发送包含标头的事件.
例如:"headers":{"cookie":"name2=value2",.
.
.
},如果启用了多值标头,负载均衡器将使用客户端发送的两个Cookie并使用multiValueHeaders向您发送包含标头的事件.
例如:"multiValueHeaders":{"cookie":["name1=value1","name2=value2"],.
.
.
},如果查询参数是URL编码的,则负载均衡器不会对它们进行解码.
您必须在Lambda函数中对它们进行解码.
包含多值标头的响应用于标头的字段名称根据是否为目标组启用了多值标头而有所不同.
如果启用了多值标头,则必须使用multiValueHeaders,否则使用headers.
对于默认格式,您可以指定单个Cookie:{"headers":{"Set-cookie":"cookie-name=cookie-value;Domain=myweb.
com;Secure;HttpOnly","Content-Type":"application/json"},}如果启用了多值标头,您必须指定多个Cookie,如下所示:{"multiValueHeaders":{71ElasticLoadBalancingApplicationLoadBalancer启用运行状况检查"Set-cookie":["cookie-name=cookie-value;Domain=myweb.
com;Secure;HttpOnly","cookie-name=cookie-value;Expires=May8,2019"],"Content-Type":["application/json"]},}启用多值标头您可以对目标类型为lambda的目标组启用或禁用多值标头.
Newconsole使用新控制台启用多值标头1.
打开AmazonEC2控制台https://console.
amazonaws.
cn/ec2/.
2.
在导航窗格上的LOADBALANCING下,选择TargetGroups.
3.
选择目标组的名称以打开其详细信息页面.
4.
在组详细信息选项卡的属性部分中,选择编辑.
5.
选择或清除多值标头.
6.
选择保存更改.
Oldconsole使用旧控制台启用多值标头1.
打开AmazonEC2控制台https://console.
amazonaws.
cn/ec2/.
2.
在导航窗格上的LOADBALANCING下,选择TargetGroups.
3.
选择您的目标组.
4.
在Description选项卡上,选择Editattributes.
5.
对于Multivalueheaders(多值标头),选择Enable(启用).
6.
选择Save.
使用AWSCLI启用多值标头使用带lambda.
multi_value_headers.
enabled属性的modify-target-group-attributes命令.
启用运行状况检查默认情况下,对类型为lambda的目标组禁用运行状况检查.
您可以启用运行状况检查,以便通过AmazonRoute53实施DNS故障转移.
Lambda函数可以在响应运行状况检查请求之前检查下游服务的运行状况.
如果来自Lambda函数的响应指示运行状况检查失败,则运行状况检查失败会传递到Route53.
您可以将Route53配置为故障转移到备份应用程序堆栈.
您需要支付运行状况检查的费用,就像您支付任何Lambda函数调用的费用一样.
以下是发送到您的Lambda函数的运行状况检查事件的格式.
要检查事件是否为运行状况检查事件,请检查user-agent字段的值.
运行状况检查的用户代理为ELB-HealthChecker/2.
0.
{"requestContext":{"elb":{"targetGroupArn":"arn:aws-cn:elasticloadbalancing:region:123456789012:targetgroup/my-target-group/6d0ecf831eec9f09"}72ElasticLoadBalancingApplicationLoadBalancer注销Lambda函数},"httpMethod":"GET","path":"/","queryStringParameters":{},"headers":{"user-agent":"ELB-HealthChecker/2.
0"},"body":"","isBase64Encoded":false}Newconsole使用新控制台为目标组启用运行状况检查1.
打开AmazonEC2控制台https://console.
amazonaws.
cn/ec2/.
2.
在导航窗格上的LOADBALANCING下,选择TargetGroups.
3.
选择目标组的名称以打开其详细信息页面.
4.
在组详细信息选项卡的运行状况检查设置部分中,选择编辑.
5.
对于运行状况检查,选择启用.
6.
选择保存更改.
Oldconsole使用旧控制台为目标组启用运行状况检查1.
打开AmazonEC2控制台https://console.
amazonaws.
cn/ec2/.
2.
在导航窗格上的LOADBALANCING下,选择TargetGroups.
3.
选择您的目标组.
4.
在Healthchecks(运行状况检查)选项卡上,选择Edithealthcheck(编辑运行状况检查).
5.
对于Healthcheck(运行状况检查),选择Enable(启用).
6.
选择Save.
使用AWSCLI为目标组启用运行状况检查将modify-target-group命令和--health-check-enabled选项结合使用.
注销Lambda函数如果您不再需要向您的Lambda函数发送流量,则可以将其取消注册.
在取消注册Lambda函数后,进行中的请求会失败,并显示HTTP5XX错误.
要替换Lambda函数,建议您创建新的目标组,向新目标组注册新函数,并将侦听器规则更新为使用新目标组而不是现有目标组.
Newconsole使用新控制台注销Lambda函数1.
打开AmazonEC2控制台https://console.
amazonaws.
cn/ec2/.
2.
在导航窗格上的LOADBALANCING下,选择TargetGroups.
3.
选择目标组的名称以打开其详细信息页面.
4.
在Targets(目标)选项卡上,选择Deregister(取消注册).
5.
当系统提示您确认时,选择Deregister.
73ElasticLoadBalancingApplicationLoadBalancer更新标签Oldconsole使用旧控制台注销Lambda函数1.
打开AmazonEC2控制台https://console.
amazonaws.
cn/ec2/.
2.
在导航窗格上的LOADBALANCING下,选择TargetGroups.
3.
选择您的目标组.
4.
在Targets(目标)选项卡上,选择Deregister(取消注册).
5.
当系统提示您确认时,选择Deregister.
使用AWSCLI取消注册Lambda函数使用deregister-targets命令.
适用于目标组的标签标签有助于按各种标准(例如用途、所有者或环境)对目标组进行分类.
您可以为每个目标组添加多个标签.
每个目标组的标签键必须是唯一的.
如果您添加的标签中的键已经与目标组关联,它将更新该标签的值.
用完标签后可以将其删除.
限制每个资源的最大标签数—50最大密钥长度—127个Unicode字符最大值长度—255个Unicode字符标签键和值区分大小写.
允许使用的字符包括可用UTF-8格式表示的字母、空格和数字,以及以下特殊字符:请不要使用前导空格或尾随空格.
请勿在标签名称或值中使用aws:前缀,因为它专为AWS使用预留.
您无法编辑或删除带此前缀的标签名称或值.
具有此前缀的标签不计入每个资源的标签数限制.
Newconsole使用新控制台更新目标组的标签1.
打开AmazonEC2控制台https://console.
amazonaws.
cn/ec2/.
2.
在导航窗格上的LOADBALANCING下,选择TargetGroups.
3.
选择目标组的名称以打开其详细信息页面.
4.
在标签选项卡上,选择管理标签,然后执行以下一项或多项操作:a.
要更新标签,请为键和值输入新值.
b.
要添加标签,请选择添加标签,然后为键和值输入值.
c.
要删除标签,请选择标签旁边的删除.
5.
更新完标签后,选择保存更改.
Oldconsole使用旧控制台更新目标组的标签1.
打开AmazonEC2控制台https://console.
amazonaws.
cn/ec2/.
74ElasticLoadBalancingApplicationLoadBalancer删除目标组2.
在导航窗格上的LOADBALANCING下,选择TargetGroups.
3.
选择目标组.
4.
在Tags(标签)选项卡上,选择Add/EditTags(添加/编辑标签),然后执行以下一项或多项操作:a.
要更新标签,请编辑Key和Value的值.
b.
要添加新标签,请选择CreateTag(创建标签)并为Key(密钥)和Value(值)键入值.
c.
要删除标签,请选择标签旁边的删除图标(X).
5.
完成更新标签后,选择Save.
使用AWSCLI更新目标组的标签使用add-tags和remove-tags命令.
删除目标组如果目标组未由任何侦听器规则的转发操作引用,则可以删除该目标组.
删除目标组不会影响已注册到目标组的目标.
如果您不再需要已注册的EC2实例,则可以停止或终止该实例.
Newconsole使用新控制台删除目标组1.
打开AmazonEC2控制台https://console.
amazonaws.
cn/ec2/.
2.
在导航窗格上的LOADBALANCING下,选择TargetGroups.
3.
选择目标组,然后依次选择Actions、Delete.
4.
当系统提示进行确认时,选择是,删除.
Oldconsole使用旧控制台删除目标组1.
打开AmazonEC2控制台https://console.
amazonaws.
cn/ec2/.
2.
在导航窗格上的LOADBALANCING下,选择TargetGroups.
3.
选择目标组,然后依次选择Actions、Delete.
4.
当系统提示您确认时,选择Yes.
使用AWSCLI删除目标组使用delete-target-group命令.
75ElasticLoadBalancingApplicationLoadBalancerCloudWatch指标监控ApplicationLoadBalancer您可使用以下功能监控负载均衡器,分析流量模式及解决与负载均衡器和目标相关的问题.

CloudWatch指标可以使用AmazonCloudWatch将有关负载均衡器和目标的数据点的统计数据作为一组有序时间序列数据(称作指标)进行检索.
您可使用这些指标来验证您的系统是否按预期运行.
有关更多信息,请参阅应用程序负载均衡器的CloudWatch指标(p.
76).
访问日志您可以使用访问日志来捕获有关向负载均衡器发出的请求的详细信息,并将这些详细信息作为日志文件存储在AmazonS3中.
您可以使用这些访问日志分析流量模式并解决与目标相关的问题.
有关更多信息,请参阅应用程序负载均衡器的访问日志(p.
87).
请求跟踪您可以使用来请求跟踪来跟踪HTTP请求.
负载均衡器会为它接收的每个请求添加一个包含跟踪标识符的标头.
有关更多信息,请参阅针对应用程序负载均衡器的请求跟踪(p.
100).
CloudTrail日志您可以使用AWSCloudTrail捕获有关向ElasticLoadBalancingAPI发出的调用的详细信息,并将这些详细信息作为日志文件存储在AmazonS3中.
可以使用这些CloudTrail日志确定已发出的调用、从中发出调用的源IP地址、调用的发出方、调用的发出时间等.
有关更多信息,请参阅使用AWSCloudTrail记录应用程序负载均衡器的API调用(p.
102).
应用程序负载均衡器的CloudWatch指标ElasticLoadBalancing将数据点发布到您的负载均衡器和目标的AmazonCloudWatch.
利用CloudWatch,您可以按一组有序的时间序列数据(称为指标)来检索有关这些数据点的统计数据.
可将指标视为要监控的变量,而将数据点视为该变量随时间变化的值.
例如,您可以在指定时间段内监控负载均衡器的正常目标的总数.
每个数据点都有相关联的时间戳和可选测量单位.
您可使用指标来验证系统是否正常运行.
例如,您可以创建CloudWatch警报来监控指定的指标,并在指标超出您的可接受范围时启动某个操作(如向电子邮件地址发送通知).
只有当请求流经负载均衡器时,ElasticLoadBalancing才会向CloudWatch报告指标.
如果有请求流经负载均衡器,则ElasticLoadBalancing进行测量并以60秒的间隔发送其指标.
如果没有请求流经负载均衡器或指标无数据,则不报告指标.
有关更多信息,请参阅AmazonCloudWatch用户指南.
目录应用程序负载均衡器指标(p.
76)ApplicationLoadBalancer的指标维度(p.
85)应用程序负载均衡器指标的统计数据(p.
85)查看负载均衡器的CloudWatch指标(p.
86)应用程序负载均衡器指标AWS/ApplicationELB命名空间包括负载均衡器的以下指标.
76ElasticLoadBalancingApplicationLoadBalancer应用程序负载均衡器指标指标说明ActiveConnectionCount从客户端到负载均衡器以及从负载均衡器到目标的并发活动TCP连接的总数.
报告标准:有非零值Statistics:最有用的统计工具是Sum.
DimensionsLoadBalancerClientTLSNegotiationErrorCount由因TLS错误而未能与负载均衡器建立会话的客户端发起的TLS连接数.
可能的原因包括密码或协议不匹配或者客户端因无法验证服务器证书而关闭了连接.
报告标准:有非零值Statistics:最有用的统计工具是Sum.
DimensionsLoadBalancerAvailabilityZone、LoadBalancerConsumedLCUs负载均衡器使用的负载均衡器容量单位(LCU)数量.
您需要为每小时使用的LCU数量付费.
有关更多信息,请参阅ElasticLoadBalancing定价.
报告标准:始终报告统计数据:全部维度LoadBalancerDesyncMitigationMode_NonCompliant_Request_Count不符合RFC7230标准的请求数.
报告标准:有非零值Statistics:最有用的统计工具是Sum.
DimensionsLoadBalancerAvailabilityZone、LoadBalancerGrpcRequestCount通过IPv4和IPv6处理的gRPC请求数量.
报告标准:有非零值统计数据:最有用的统计数据是Sum.
Minimum、Maximum以及Average全部返回1.
DimensionsLoadBalancerHTTP_Fixed_Response_Count成功的固定响应操作的次数.
77ElasticLoadBalancingApplicationLoadBalancer应用程序负载均衡器指标指标说明报告标准:有非零值统计数据:唯一有意义的统计数据是Sum.
DimensionsLoadBalancerAvailabilityZone、LoadBalancerHTTP_Redirect_Count成功的重定向操作的次数.
报告标准:有非零值统计数据:唯一有意义的统计数据是Sum.
DimensionsLoadBalancerAvailabilityZone、LoadBalancerHTTP_Redirect_Url_Limit_Exceeded_Count由于响应位置标头中的URL大于8K而无法完成的重定向操作数.
报告标准:有非零值统计数据:唯一有意义的统计数据是Sum.
DimensionsLoadBalancerAvailabilityZone、LoadBalancerHTTPCode_ELB_3XX_Count源自负载均衡器的HTTP3XX重定向代码数.
报告标准:有非零值统计数据:唯一有意义的统计数据是Sum.
DimensionsLoadBalancerAvailabilityZone、LoadBalancerHTTPCode_ELB_4XX_Count源自负载均衡器的HTTP4XX客户端错误代码的数量.
如果请求格式错误或不完整,则会生成客户端错误.
除了负载均衡器返回HTTP460错误代码(p.
107)的情况之外,目标不会收到这些请求.
该计数不包含目标生成的任何响应代码.
报告标准:有非零值统计数据:最有用的统计数据是Sum.
Minimum、Maximum以及Average全部返回1.
DimensionsLoadBalancerAvailabilityZone、LoadBalancer78ElasticLoadBalancingApplicationLoadBalancer应用程序负载均衡器指标指标说明HTTPCode_ELB_5XX_Count源自负载均衡器的HTTP5XX服务器错误代码的数量.
该计数不包含目标生成的任何响应代码.
报告标准:有非零值统计数据:最有用的统计数据是Sum.
Minimum、Maximum以及Average全部返回1.
DimensionsLoadBalancerAvailabilityZone、LoadBalancerHTTPCode_ELB_500_Count源自负载均衡器的HTTP500错误代码的数量.
报告标准:有非零值统计数据:唯一有意义的统计数据是Sum.
DimensionsLoadBalancerHTTPCode_ELB_502_Count源自负载均衡器的HTTP502错误代码的数量.
报告标准:有非零值统计数据:唯一有意义的统计数据是Sum.
DimensionsLoadBalancerHTTPCode_ELB_503_Count源自负载均衡器的HTTP503错误代码的数量.
报告标准:有非零值统计数据:唯一有意义的统计数据是Sum.
DimensionsLoadBalancerHTTPCode_ELB_504_Count源自负载均衡器的HTTP504错误代码的数量.
报告标准:有非零值统计数据:唯一有意义的统计数据是Sum.
DimensionsLoadBalancer79ElasticLoadBalancingApplicationLoadBalancer应用程序负载均衡器指标指标说明IPv6ProcessedBytes负载均衡器通过IPv6处理的总字节数.
此计数包含在ProcessedBytes中.
报告标准:有非零值Statistics:最有用的统计工具是Sum.
DimensionsLoadBalancerIPv6RequestCount负载均衡器收到的IPv6请求的数量.
报告标准:有非零值统计数据:最有用的统计数据是Sum.
Minimum、Maximum以及Average全部返回1.
DimensionsLoadBalancerNewConnectionCount从客户端到负载均衡器以及从负载均衡器到目标建立的新TCP连接的总数.
报告标准:有非零值Statistics:最有用的统计工具是Sum.
DimensionsLoadBalancerNonStickyRequestCount负载均衡器因其无法使用现有粘性会话而选择新目标的请求的数目.
例如,请求是来自新客户端的第一个请求且未提供粘性Cookie,提供了粘性Cookie但未指定已注册到此目标组的目标,粘性Cookie的格式错误或已过期,或者出现内部错误,导致负载均衡器无法读取粘性Cookie.
报告标准:已在目标组上启用粘性.
统计数据:唯一有意义的统计数据是Sum.
DimensionsLoadBalancerAvailabilityZone、LoadBalancerProcessedBytes负载均衡器通过IPv4和IPv6处理的总字节数.
此计数包括到和来自客户端和Lambda函数的流量,以及来自身份提供程序(IdP)的流量(如果启用了用户身份验证).
报告标准:有非零值Statistics:最有用的统计工具是Sum.
DimensionsLoadBalancer80ElasticLoadBalancingApplicationLoadBalancer应用程序负载均衡器指标指标说明RejectedConnectionCount由于负载均衡器达到连接数上限被拒绝的链接的数量.

报告标准:有非零值Statistics:最有用的统计工具是Sum.
DimensionsLoadBalancerAvailabilityZone、LoadBalancerRequestCount通过IPv4和IPv6处理的请求的数量.
报告标准:始终报告Statistics:最有用的统计工具是Sum.
DimensionsLoadBalancerTargetGroup、LoadBalancerRuleEvaluations在给定1小时的平均请求速率的情况下,负载均衡器处理的规则的数量.
报告标准:有非零值Statistics:最有用的统计工具是Sum.
DimensionsLoadBalancerAWS/ApplicationELB命名空间包括目标的以下指标.
指标说明HealthyHostCount被视为正常运行的目标数量.
报告标准:在启用了运行状况检查时报告Statistics:最有用的统计工具是Average、Minimum和Maximum.
DimensionsTargetGroup、LoadBalancerTargetGroup、AvailabilityZone、LoadBalancerHTTPCode_Target_2XX_Count、HTTPCode_Target_3XX_Count、HTTPCode_Target_4XX_Count、HTTPCode_目标生成的HTTP响应代码的数量.
它不包括负载均衡器生成的任何响应代码.
报告标准:有非零值统计数据:最有用的统计数据是Sum.
Minimum、Maximum以及Average全部返回1.
81ElasticLoadBalancingApplicationLoadBalancer应用程序负载均衡器指标指标说明DimensionsLoadBalancerAvailabilityZone、LoadBalancerTargetGroup、LoadBalancerTargetGroup、AvailabilityZone、LoadBalancerRequestCountPerTarget目标组中每个目标收到的平均请求数量.
您必须使用TargetGroup维度指定目标组.
如果目标是Lambda函数,则此指标不适用.
报告标准:始终报告统计:唯一有效的统计数据是Sum.
这代表平均值,而不是总和.
DimensionsTargetGroupTargetGroup、LoadBalancerTargetConnectionErrorCount负载均衡器和目标之间连接建立不成功的次数.
如果目标是Lambda函数,则此指标不适用.
报告标准:有非零值Statistics:最有用的统计工具是Sum.
DimensionsLoadBalancerAvailabilityZone、LoadBalancerTargetGroup、LoadBalancerTargetGroup、AvailabilityZone、LoadBalancerTargetResponseTime请求离开负载均衡器直至收到来自目标的响应所用的时间(以秒为单位).

这与访问日志中的target_processing_time字段是等效的.
报告标准:有非零值Statistics:最有用的统计工具是Average和pNN.
NN(百分比).
DimensionsLoadBalancerAvailabilityZone、LoadBalancerTargetGroup、LoadBalancerTargetGroup、AvailabilityZone、LoadBalancer82ElasticLoadBalancingApplicationLoadBalancer应用程序负载均衡器指标指标说明TargetTLSNegotiationErrorCount由未与目标建立会话的负载均衡器发起的TLS连接数.
可能的原因包括密码或协议不匹配.
如果目标是Lambda函数,则此指标不适用.
报告标准:有非零值Statistics:最有用的统计工具是Sum.
DimensionsLoadBalancerAvailabilityZone、LoadBalancerTargetGroup、LoadBalancerTargetGroup、AvailabilityZone、LoadBalancerUnHealthyHostCount被视为未正常运行的目标数量.
报告标准:在启用了运行状况检查时报告Statistics:最有用的统计工具是Average、Minimum和Maximum.
DimensionsTargetGroup、LoadBalancerTargetGroup、AvailabilityZone、LoadBalancerAWS/ApplicationELB命名空间包括已注册为目标的Lambda函数的以下指标.
指标说明LambdaInternalError因负载均衡器或AWSLambda内部出现问题而导致失败的对Lambda函数的请求数.
要获取错误原因代码,请查看访问日志的error_reason字段.
报告标准:有非零值统计数据:唯一有意义的统计数据是Sum.
DimensionsTargetGroupTargetGroup、LoadBalancerLambdaTargetProcessedBytes负载均衡器为针对Lambda函数的请求和来自该函数的响应处理的字节的总数.
报告标准:有非零值统计数据:唯一有意义的统计数据是Sum.
DimensionsLoadBalancerLambdaUserError因Lambda函数出现问题而导致失败的对Lambda函数的请求数.
例如,负载均衡器没有调用该函数的权限,负载均衡器从格式错误或缺少必填字段83ElasticLoadBalancingApplicationLoadBalancer应用程序负载均衡器指标指标说明的函数接收JSON,或者请求正文或响应的大小超过了1MB的最大大小.
要获取错误原因代码,请查看访问日志的error_reason字段.
报告标准:有非零值统计数据:唯一有意义的统计数据是Sum.
DimensionsTargetGroupTargetGroup、LoadBalancerAWS/ApplicationELB命名空间包括用户身份验证的以下指标.
指标说明ELBAuthError由于身份验证操作配置错误、负载均衡器无法与IdP建立连接,或负载均衡器因内部错误无法完成身份验证流程,所导致的无法完成用户身份验证的次数.
要获取错误原因代码,请查看访问日志的error_reason字段.
报告标准:有非零值统计数据:唯一有意义的统计数据是Sum.
DimensionsLoadBalancerAvailabilityZone、LoadBalancerELBAuthFailure由于IdP拒绝用户访问或授权代码多次使用导致的无法完成用户身份验证的次数.
要获取错误原因代码,请查看访问日志的error_reason字段.
报告标准:有非零值统计数据:唯一有意义的统计数据是Sum.
DimensionsLoadBalancerAvailabilityZone、LoadBalancerELBAuthLatency向IdP查询ID令牌和用户信息所用的时间(毫秒).
如果这些操作中有一项或多项操作失败,这表示失败时间.
报告标准:有非零值统计数据:所有统计数据均有意义.
DimensionsLoadBalancerAvailabilityZone、LoadBalancerELBAuthRefreshTokenSuccess负载均衡器使用IdP提供的刷新令牌成功刷新用户声明的次数.
报告标准:有非零值84ElasticLoadBalancingApplicationLoadBalancerApplicationLoadBalancer的指标维度指标说明统计数据:唯一有意义的统计数据是Sum.
DimensionsLoadBalancerAvailabilityZone、LoadBalancerELBAuthSuccess成功的身份验证操作的次数.
负载均衡器从IdP检索用户身份声明后,验证工作流结束时此指标会递增.
报告标准:有非零值Statistics:最有用的统计工具是Sum.
DimensionsLoadBalancerAvailabilityZone、LoadBalancerELBAuthUserClaimsSizeExceeded配置的IdP返回大小超过11K字节的用户声明的次数.
报告标准:有非零值统计数据:唯一有意义的统计数据是Sum.
DimensionsLoadBalancerAvailabilityZone、LoadBalancerApplicationLoadBalancer的指标维度要筛选您的应用程序负载均衡器的指标,可以使用以下维度.
维度说明AvailabilityZone按可用区筛选指标数据.
LoadBalancer按负载均衡器筛选指标数据.
按以下方式指定负载均衡器:app/load-balancer-name/1234567890123456(负载均衡器ARN的结尾部分).
TargetGroup按目标组筛选指标数据.
按以下方式指定目标组:targetgroup/target-group-name/1234567890123456(目标组ARN的结尾部分).
应用程序负载均衡器指标的统计数据CloudWatch提供基于ElasticLoadBalancing发布的指标数据点的统计数据.
统计数据是在指定的时间段内汇总的指标数据.
当请求统计数据时,返回的数据流按指标名称和维度进行识别.
维度是用于唯一标识指标的名称-值对.
例如,您可以请求在特定可用区内启动的负载均衡器背后所有正常状态EC2实例的统计数据.
Minimum和Maximum统计数据反映各个负载均衡器节点报告的最小值和最大值.
例如,假定有两个负载均衡器节点.
一个节点的HealthyHostCount的Minimum为2,Maximum为10,Average为6,另一85ElasticLoadBalancingApplicationLoadBalancer查看负载均衡器的CloudWatch指标个节点的HealthyHostCount的Minimum为1,Maximum为5,Average为3.
因此,负载均衡器的Minimum为1,Maximum为10,Average大约为4.
Sum统计数据是所有负载均衡器节点的汇总值.
由于这些指标在每个周期均包含多个报告,因此Sum仅适用于对所有负载均衡器节点进行汇总的指标.
SampleCount统计数据是测量的样本数.
由于这些指标是基于采样间隔和事件进行收集的,因此此统计信息一般没有用.
例如,对于HealthyHostCount,SampleCount基于每个负载均衡器节点报告的样本数,而不是运行状况正常的主机数.
百分位数指示某个值在数据集中的相对位置.
您可以指定任何百分位数,最多使用两位小数(例如p95.
45).
例如,第95个百分位数表示95%的数据低于此值,5%的数据高于此值.
百分位数通常用于隔离异常值.
例如,假设某个应用程序从缓存服务大多数请求的时间是1-2毫秒,但如果缓存是空的,则时间需要100-200毫秒.
最大值反映了最慢的情况,也就是大约200毫秒.
平均值不表示数据的分布.
百分位提供了一个更有意义的应用程序性能视图.
通过使用第99个百分位数作为AutoScaling触发器或CloudWatch警报,您可以将目标设定为不超过1%的请求的处理时间会超过2毫秒.
查看负载均衡器的CloudWatch指标您可以使用AmazonEC2控制台查看负载均衡器的CloudWatch指标.
这些指标显示为监控图表.
如果负载均衡器处于活动状态并且正在接收请求,则监控图表会显示数据点.
或者,您可以使用CloudWatch控制台查看负载均衡器的指标.
使用AmazonEC2控制台查看指标1.
打开AmazonEC2控制台https://console.
amazonaws.
cn/ec2/.
2.
要查看按目标组筛选的指标,请执行以下操作:a.
在导航窗格中,选择TargetGroups.
b.
选择目标组,然后选择Monitoring选项卡.
c.
(可选)要按时间筛选结果,请从Showingdatafor中选择时间范围.
d.
要获得单个指标的一个较大视图,请选择其图形.
3.
要查看按负载均衡器筛选的指标,请执行以下操作:a.
在导航窗格中,选择LoadBalancers.
b.
选择您的负载均衡器,然后选择Monitoring选项卡.
c.
(可选)要按时间筛选结果,请从Showingdatafor中选择时间范围.
d.
要获得单个指标的一个较大视图,请选择其图形.
使用CloudWatch控制台查看指标1.
通过以下网址打开CloudWatch控制台:https://console.
amazonaws.
cn/cloudwatch/.
2.
在导航窗格中,选择Metrics.
3.
选择ApplicationELB命名空间.
4.
(可选)要跨所有维度查看某个指标,请在搜索字段中输入其名称.
5.
(可选)要按维度筛选,请选择下列选项之一:要仅显示为负载均衡器报告的指标,请选择PerAppELBMetrics.
要查看单个负载均衡器的指标,请在搜索字段中输入其名称.
要仅显示为您的目标组报告的指标,请选择PerAppELB,perTGMetrics.
要查看单个目标组的指标,请在搜索字段中输入其名称.
要仅按可用区显示为负载均衡器报告的指标,请选择PerAppELB,perAZMetrics.
要查看单个负载均衡器的指标,请在搜索字段中输入其名称.
要查看单个可用区的指标,请在搜索字段中输入其名称.
86ElasticLoadBalancingApplicationLoadBalancer访问日志要仅按可用区和目标组显示为负载均衡器报告的指标,请选择PerAppELB,perAZ,perTGMetrics.
要查看单个负载均衡器的指标,请在搜索字段中输入其名称.
要查看单个目标组的指标,请在搜索字段中输入其名称.
要查看单个可用区的指标,请在搜索字段中输入其名称.

使用AWSCLI查看指标使用以下list-metrics命令列出可用指标:awscloudwatchlist-metrics--namespaceAWS/ApplicationELB使用AWSCLI获取指标的统计数据使用以下get-metric-statistics命令获取指定指标和维度的统计数据.
CloudWatch将不同维度的每种唯一组合视为一个单独的指标.
您无法使用未专门发布的维度组合检索统计数据.
您必须指定创建指标时使用的同一维度.
awscloudwatchget-metric-statistics--namespaceAWS/ApplicationELB\--metric-nameUnHealthyHostCount--statisticsAverage--period3600\--dimensionsName=LoadBalancer,Value=app/my-load-balancer/50dc6c495c0c9188\Name=TargetGroup,Value=targetgroup/my-targets/73e2d6bc24d8a067\--start-time2016-04-18T00:00:00Z--end-time2016-04-21T00:00:00Z下面是示例输出:{"Datapoints":[{"Timestamp":"2016-04-18T22:00:00Z","Average":0.
0,"Unit":"Count"},{"Timestamp":"2016-04-18T04:00:00Z","Average":0.
0,"Unit":"Count"},.
.
.
],"Label":"UnHealthyHostCount"}应用程序负载均衡器的访问日志ElasticLoadBalancing提供了访问日志,该访问日志可捕获有关发送到负载均衡器的请求的详细信息.
每个日志都包含信息(例如,收到请求的时间、客户端的IP地址、延迟、请求路径和服务器响应).
您可以使用这些访问日志分析流量模式并解决问题.
访问日志记录是ElasticLoadBalancing的一项可选功能,默认情况下已禁用此功能.
为负载均衡器启用访问日志记录之后,ElasticLoadBalancing捕获日志并将其作为压缩文件存储在您指定的AmazonS3存储桶中.
您可以随时禁用访问日志记录.
每个访问日志文件在存储到S3存储桶中之前将自动使用SSE-S3加密,并在您访问它时进行解密.
您不需要执行任何操作;加密和解密以透明方式执行.
每个日志文件都使用一个唯一密钥进行加密,此密钥本身将使用定期轮换的主密钥进行加密.
有关更多信息,请参阅AmazonSimpleStorageService开发人员指南中的使用具有AmazonS3托管加密密钥的服务器端加密(SSE-S3)保护数据.
87ElasticLoadBalancingApplicationLoadBalancer访问日志文件使用访问日志无需额外付费.
您将需要支付AmazonS3的存储费用,但无需为ElasticLoadBalancing用来将日志文件发送到AmazonS3的带宽付费.
有关存储成本的更多信息,请参阅AmazonS3定价.
目录访问日志文件(p.
88)访问日志条目(p.
89)存储桶权限(p.
96)启用访问日志记录(p.
99)禁用访问日志记录(p.
100)处理访问日志文件(p.
100)访问日志文件ElasticLoadBalancing每5分钟为每个负载均衡器节点发布一次日志文件.
日志传输最终是一致的.
负载均衡器可以传输相同时间段的多个日志.
通常,如果站点具有高流量,会出现此情况.

访问日志的文件名采用以下格式:bucket[/prefix]/AWSLogs/aws-account-id/elasticloadbalancing/region/yyyy/mm/dd/aws-account-id_elasticloadbalancing_region_load-balancer-id_end-time_ip-address_random-string.
log.
gz存储桶S3存储桶的名称.
前缀存储桶中的前缀(逻辑层级结构).
如果您不指定前缀,则会将日志置于存储桶的根级.
aws-account-id拥有者的AWS账户ID.
区域负载均衡器和S3存储桶所在的区域.
yyyy/mm/dd传输日志的日期.
load-balancer-id负载均衡器的资源ID.
如果资源ID包含任何正斜杠(/),这些正斜杠将替换为句点(.
).
end-time日志记录间隔结束的日期和时间.
例如,结束时间20140215T2340Z包含在23:35和23:40之间发出的请求的条目.
ip-address处理请求的负载均衡器节点的IP地址.
对于内部负载均衡器,这是私有IP地址.
random-string系统生成的随机字符串.
以下是示例日志文件名:88ElasticLoadBalancingApplicationLoadBalancer访问日志条目s3://my-bucket/prefix/AWSLogs/123456789012/elasticloadbalancing/us-west-2/2016/05/01/123456789012_elasticloadbalancing_us-west-2_app.
my-loadbalancer.
1234567890abcdef_20140215T2340Z_172.
160.
001.
192_20sg8hgm.
log.
gz日志文件可以在存储桶中存储任意长时间,不过您也可以定义AmazonS3生命周期规则以自动存档或删除日志文件.
有关更多信息,请参阅AmazonSimpleStorageService开发人员指南中的对象生命周期管理.
访问日志条目ElasticLoadBalancing会记录发送给负载均衡器的请求,包括从未到达目标的请求.
例如,如果客户端发送格式错误的请求或者没有正常的目标响应请求,仍会记录请求.
ElasticLoadBalancing不记录运行状况检查请求.
每个日志条目均包含向负载均衡器发出的一个请求(如果使用WebSockets,则为连接)的详细信息.
对于WebSockets,仅在关闭连接后写入条目.
如果无法建立升级后的连接,则HTTP或HTTPS请求的条目相同.
ImportantElasticLoadBalancing将尽力记录请求.
我们建议您使用访问日志来了解请求性质,而不是作为所有请求的完整描述.
目录语法(p.
89)采取的操作(p.
92)分类原因(p.
92)错误原因代码(p.
93)示例(p.
95)语法下表按顺序描述了访问日志条目的字段.
使用空格分隔所有字段.
在引入新的字段时,会将这些字段添加到日志条目的末尾.
您应忽略日志条目结尾的任何不需要的字段.
字段说明type请求或连接的类型.
可能的值如下(忽略任何其他值):http—HTTPhttps—HTTPoverTLSh2—HTTP/2overTLSgrpcs—gRPCoverTLSws—WebSocketswss—WebSocketsoverTLStime负载均衡器生成对客户端的响应的时间(采用ISO8601格式).
对于WebSockets,这是关闭连接的时间.
elb负载均衡器的资源ID.
如果您正在解析访问日志条目,请注意,资源ID可包含正斜杠(/).
client:port请求客户端的IP地址和端口.
89ElasticLoadBalancingApplicationLoadBalancer访问日志条目字段说明target:port处理此请求的目标的IP地址和端口.
如果客户端没有发送完整请求,则负载均衡器无法将请求分派到目标,并且此值设置为-.
如果目标是Lambda函数,则此值设置为-.
如果AWSWAF拦截了此请求,该值会被设置为-,且elb_status_code的值会被设置为403.
request_processing_time从负载均衡器收到请求到将请求发送到目标所用的总时间(以秒为单位,精度为毫秒).
如果负载均衡器无法将请求分派到目标,则此值设置为-1.
如果目标在空闲超时前关闭连接,或客户端发送了格式错误的请求,则会发生这种情况.
如果注册目标在空闲超时之前未响应,则此值还可设置为-1.
target_processing_time从负载均衡器将请求发送到目标到该目标开始发送响应标头所用的总时间(以秒为单位,精度为毫秒).
如果负载均衡器无法将请求分派到目标,则此值设置为-1.
如果目标在空闲超时前关闭连接,或客户端发送了格式错误的请求,则会发生这种情况.
如果注册目标在空闲超时之前未响应,则此值还可设置为-1.
response_processing_time从负载均衡器收到来自目标的响应标头到开始向客户端发送响应所用的总时间(以秒为单位,精度为毫秒).
此时间包括在负载均衡器上的排队时间以及从负载均衡器到客户端的连接获取时间.
如果负载均衡器无法将请求发送到目标,则此值设置为-1.
如果目标在空闲超时前关闭连接,或客户端发送了格式错误的请求,则会发生这种情况.
elb_status_code来自负载均衡器的响应的状态代码.
target_status_code来自目标的响应的状态代码.
仅在已建立与目标的连接且目标已发送响应的情况下记录此值.
否则,其设置为-.
received_bytes从客户端(申请方)接收的请求大小(以字节为单位).
对于HTTP请求,这包括标头.
对于WebSockets,这是通过连接从客户端接收的字节总数.
sent_bytes发送到客户端(申请方)的响应的大小(以字节为单位).
对于HTTP请求,这包括标头.
对于WebSockets,这是通过连接发送到客户端的字节总数.
"request"来自客户端的请求行,包含在双引号内并采用以下格式进行记录:HTTP方法+协议://主机:端口/uri+HTTP版本.
负载均衡器将保留客户端记录请求URI时发送的URL.
它不设置访问日志文件的内容类型.
当您处理此字段时,请考虑客户端发送URL的方式.
"user_agent"标识发出请求的客户端的用户代理字符串(用双引号括起来).
该字符串包含一个或多个产品标识符(product[/version]).
如果字符串长度超过8KB,则将被截断.
ssl_cipher[HTTPS侦听器]SSL密码.
如果侦听器不是HTTPS侦听器,则此值设置为-.
ssl_protocol[HTTPS侦听器]SSL协议.
如果侦听器不是HTTPS侦听器,则此值设置为-.
90ElasticLoadBalancingApplicationLoadBalancer访问日志条目字段说明target_group_arn目标组的Amazon资源名称(ARN).
"trace_id"X-Amzn-Trace-Id标头的内容(用双引号括起来).
"domain_name"[HTTPS侦听器]TLS握手期间客户端提供的SNI域(用双引号括起来).
如果客户端不支持SNI或此域与证书不匹配且将向客户端提供默认证书,则此值将设置为-.
"chosen_cert_arn"[HTTPS侦听器]向客户端提供的证书的ARN(用双引号括起来).
如果重复使用会话,则将此值设置为session-reused.
如果侦听器不是HTTPS侦听器,则此值设置为-.
matched_rule_priority匹配请求的规则的优先级值.
如果匹配了某个规则,则此值的范围介于1和50000之间.
如果未匹配任何规则并且已执行默认操作,则此值设置为0.
如果错误发生在规则评估时,则它设置为-1.
对于任何其他错误,它设置为-.
request_creation_time负载均衡器从客户端收到请求的时间(采用ISO8601格式).
"actions_executed"处理请求时执行的操作(用双引号括起来).
此值是一个逗号分隔的列表,可以包含采取的操作(p.
92)中所描述的值.
如果未执行任何操作(例如,针对格式错误的请求的操作),则此值设置为-.
"redirect_url"HTTP响应位置标头的重定向目标的URL,使用双引号括起.
如果不执行重定向操作,则此值设置为-.
"error_reason"错误原因代码(包含在双引号内).
如果请求失败,则为错误原因代码(p.
93)中描述的错误代码之一.
如果所采取的操作不包含身份验证操作或目标不是Lambda函数,则此值设置为-.
"target:port_list"处理此请求的目标的IP地址和端口的列表,各个地址和端口之间用空格分隔,并且用双引号括起.
当前,此列表可以包含一个项,并且与target:port字段匹配.
如果客户端没有发送完整请求,则负载均衡器无法将请求分派到目标,并且此值设置为-.
如果目标是Lambda函数,则此值设置为-.
如果AWSWAF拦截了此请求,该值会被设置为-,且elb_status_code的值会被设置为403.
"target_status_code_list"目标响应的状态代码列表,代码之间用空格分隔,并且用双引号括起来.
当前,此列表可以包含一个项,并且与target_status_code字段匹配.
仅在已建立与目标的连接且目标已发送响应的情况下记录此值.
否则,其设置为-.
"classification"异步缓解的分类(包含在双引号内).
如果请求不符合RFC7230标准,则可能的值为"可接受"、"不明确"和"严重".
如果请求符合RFC7230标准,则此值设置为"-".
"classification_reason"分类原因代码(包含在双引号内).
如果请求不符合RFC7230标准,则这是分类原因(p.
92)中描述的分类代码之一.
如果请求符合RFC7230标准,则此值设置为"-".
91ElasticLoadBalancingApplicationLoadBalancer访问日志条目采取的操作负载均衡器将其采取的操作存储在访问日志的actions_executed字段中.
authenticate—负载均衡器验证会话,验证用户身份,并将用户信息添加到规则配置所指定的请求标头中.
fixed-response—负载均衡器发出规则配置所指定的固定响应.
forward—负载均衡器将请求转发到规则配置所指定的目标.
redirect—负载均衡器将请求重定向到规则配置所指定的另一个URL.
waf—负载均衡器将请求转发到AWSWAF以确定是否应将请求转发到目标.
如果这是最终操作,则AWSWAF确定应拒绝请求.
waf-failed—负载均衡器尝试将请求转发到AWSWAF,但此过程失败.
分类原因如果请求不符合RFC7230标准,负载均衡器将在访问日志的classification_reason字段中存储以下代码之一.
有关更多信息,请参阅异步缓解模式(p.
14).
代码描述ClassificationAmbiguousUri请求URI包含控制字符.
不明确BadContentLengthContent-Length标头包含一个无法解析或不是有效数字的值.
严重BadHeader标头包含Null字符或回车符.
严重BadTransferEncodingTransfer-Encoding标头包含错误的值.
严重BadUri请求URI包含Null字符或回车符.
严重BadMethod请求方法格式不正确.
严重BadVersion请求版本格式不正确.
严重BothTeClPresent请求同时包含Transfer-Encoding标头和Content-Length标头.
不明确DuplicateContentLength存在多个具有相同值的Content-Length标头.
不明确EmptyHeader标头是空的,或者有一行中只包含空格.
不明确GetHeadZeroContentLength对于GET或HEAD请求,有一个值为0的Content-Length标头.
可接受MultipleContentLength存在多个具有不同值的Content-Length标头.
严重MultipleTransferEncodingChunked存在多个Transfer-Encoding:chunked标头.
严重NonCompliantHeader标头包含非ASCII字符或控制字符.
可接受NonCompliantVersion请求版本包含错误的值.
可接受SpaceInUri请求URI包含一个未采用URL编码的空格.
可接受SuspiciousHeader有一个标头可以使用常见的文本规范化技术标准化为Transfer-Encoding或Content-Length.
不明确92ElasticLoadBalancingApplicationLoadBalancer访问日志条目代码描述ClassificationUndefinedContentLengthSemantics没有为GET或HEAD请求定义Content-Length标头.
不明确UndefinedTransferEncodingSemantics没有为GET或HEAD请求定义Transfer-Encoding标头.
不明确错误原因代码如果负载均衡器无法完成身份验证操作,则负载均衡器会在访问日志的error_reason字段中存储以下原因代码之一.
负载均衡器还会增加相应的CloudWatch指标.
有关更多信息,请参阅使用应用程序负载均衡器验证用户身份(p.
43).
代码说明指标AuthInvalidCookie身份验证Cookie无效.
ELBAuthFailureAuthInvalidGrantError来自令牌终端节点的授权授予代码无效.
ELBAuthFailureAuthInvalidIdTokenID令牌无效.
ELBAuthFailureAuthInvalidStateParam状态参数无效.
ELBAuthFailureAuthInvalidTokenResponse来自令牌终端节点的响应无效.
ELBAuthFailureAuthInvalidUserinfoResponse来自用户信息终端节点的响应无效.
ELBAuthFailureAuthMissingCodeParam来自授权终端节点的身份验证响应缺少名为"code"的查询参数.
ELBAuthFailureAuthMissingHostHeader来自授权终端节点的身份验证响应缺少主机标头字段.
ELBAuthErrorAuthMissingStateParam来自授权终端节点的身份验证响应缺少名为"state"的查询参数.
ELBAuthFailureAuthTokenEpRequestFailed令牌终端节点存在错误响应(非2XX).
ELBAuthErrorAuthTokenEpRequestTimeout负载均衡器无法与令牌终端节点通信.
ELBAuthErrorAuthUnhandledException负载均衡器遇到未处理的异常.
ELBAuthErrorAuthUserinfoEpRequestFailedIdP用户信息终端节点存在错误响应(非2XX).
ELBAuthErrorAuthUserinfoEpRequestTimeout负载均衡器无法与IdP用户信息终端节点通信.
ELBAuthErrorAuthUserinfoResponseSizeExceededIdP返回的声明大小超过11K字节.
ELBAuthUserClaimsSizeExceeded如果对加权目标组的请求失败,则负载均衡器会在访问日志的error_reason字段中存储下列错误代码之一.
代码描述AWSALBTGCookieInvalid与加权目标组一起使用的AWSALBTGCookie无效.
例如,当Cookie值采用URL编码时,负载均衡器就会返回此错误.
WeightedTargetGroupsUnhandledException负载均衡器遇到未处理的异常.
93ElasticLoadBalancingApplicationLoadBalancer访问日志条目如果对Lambda函数的请求失败,则负载均衡器会在访问日志的error_reason字段中存储下列原因代码之一.
负载均衡器还会增加相应的CloudWatch指标.
有关更多信息,请参阅Lambda调用操作.
代码说明指标LambdaAccessDenied负载均衡器无权调用Lambda函数.
LambdaUserErrorLambdaBadRequestLambda调用失败,因为客户端请求标头或正文不只是包含UTF-8字符.
LambdaUserErrorLambdaConnectionTimeout尝试连接到Lambda时发生超时.
LambdaInternalErrorLambdaEC2AccessDeniedExceptionAmazonEC2在函数初始化期间已拒绝访问Lambda.
LambdaUserErrorLambdaEC2ThrottledExceptionAmazonEC2在函数初始化期间已限制Lambda.
LambdaUserErrorLambdaEC2UnexpectedExceptionAmazonEC2在函数初始化期间遇到意外异常.
LambdaUserErrorLambdaENILimitReachedExceptionLambda无法在Lambda函数配置中指定的VPC中创建网络接口,因为超出了网络接口的限制.
LambdaUserErrorLambdaInvalidResponse来自Lambda函数的响应的格式不正确或缺少必填字段.
LambdaUserErrorLambdaInvalidRuntimeException指定版本的Lambda运行时不受支持.
LambdaUserErrorLambdaInvalidSecurityGroupIDExceptionLambda函数配置中指定的安全组ID无效.
LambdaUserErrorLambdaInvalidSubnetIDExceptionLambda函数配置中指定的子网ID无效.
LambdaUserErrorLambdaInvalidZipFileExceptionLambda无法解压缩指定的函数zip文件.
LambdaUserErrorLambdaKMSAccessDeniedExceptionLambda无法解密环境变量,因为对KMS密钥的访问已被拒绝.
检查Lambda函数的KMS权限.
LambdaUserErrorLambdaKMSDisabledExceptionLambda无法解密环境变量,因为指定的KMS密钥已被禁用.
检查Lambda函数的KMS密钥设置.
LambdaUserErrorLambdaKMSInvalidStateExceptionLambda无法解密环境变量,因为KMS密钥的状态无效.
检查Lambda函数的KMS密钥设置.
LambdaUserErrorLambdaKMSNotFoundExceptionLambda无法解密环境变量,因为找不到KMS密钥.
检查Lambda函数的KMS密钥设置.
LambdaUserErrorLambdaRequestTooLarge请求正文的大小已超过1MB.
LambdaUserErrorLambdaResourceNotFound找不到Lambda函数.
LambdaUserErrorLambdaResponseTooLarge响应的大小已超过1MB.
LambdaUserErrorLambdaServiceExceptionLambda遇到了内部错误.
LambdaInternalErrorLambdaSubnetIPAddressLimitReachedExceptionLambda无法为Lambda函数设置VPC访问权限,因为一个或多个子网没有可用的IP地址.
LambdaUserErrorLambdaThrottlingLambda函数受到限制,因为请求过多.
LambdaUserErrorLambdaUnhandledLambda函数遇到了未处理的异常.
LambdaUserErrorLambdaUnhandledException负载均衡器遇到未处理的异常.
LambdaInternalError94ElasticLoadBalancingApplicationLoadBalancer访问日志条目如果负载均衡器在将请求转发至AWSWAF时遇到错误,则会在访问日志的error_reason字段中存储下列错误代码之一.
代码描述WAFConnectionError负载均衡器无法连接到AWSWAF.
WAFConnectionTimeout与AWSWAF的连接超时.
WAFResponseReadTimeout对AWSWAF的请求超时.
WAFServiceErrorAWSWAF返回了5XX错误.
WAFUnhandledException负载均衡器遇到未处理的异常.
示例以下是示例日志条目.
请注意,文本以多行形式显示只是为了更方便阅读.

示例HTTP条目以下是HTTP侦听器(端口80到端口80)的示例日志条目:http2018-07-02T22:23:00.
186641Zapp/my-loadbalancer/50dc6c495c0c9188192.
168.
131.
39:281710.
0.
0.
1:800.
0000.
0010.
00020020034366"GEThttp://www.
example.
com:80/HTTP/1.
1""curl/7.
46.
0"--arn:aws-cn:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067"Root=1-58337262-36d228ad5d99923122bbe354"02018-07-02T22:22:48.
364000Z"forward"10.
0.
0.
1:80200"-""-"示例HTTPS条目以下是HTTPS侦听器(端口443到端口80)的示例日志条目:https2018-07-02T22:23:00.
186641Zapp/my-loadbalancer/50dc6c495c0c9188192.
168.
131.
39:281710.
0.
0.
1:800.
0860.
0480.
037200200057"GEThttps://www.
example.
com:443/HTTP/1.
1""curl/7.
46.
0"ECDHE-RSA-AES128-GCM-SHA256TLSv1.
2arn:aws-cn:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067"Root=1-58337281-1d84f3d73c47ec4e58577259""www.
example.
com""arn:aws:acm:us-west-2:123456789012:certificate/12345678-1234-1234-1234-123456789012"12018-07-02T22:22:48.
364000Z"authenticate,forward"10.
0.
0.
1:80200"-""-"示例HTTP/2条目以下是HTTP/2流的示例日志条目.
h22018-07-02T22:23:00.
186641Zapp/my-loadbalancer/50dc6c495c0c918810.
0.
1.
252:4816010.
0.
0.
66:90000.
0000.
0020.
0002002005257"GEThttps://10.
0.
2.
105:773/HTTP/2.
0""curl/7.
46.
0"ECDHE-RSA-AES128-GCM-SHA256TLSv1.
2arn:aws-cn:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067"Root=1-58337327-72bd00b0343d75b906739c42"12018-07-02T22:22:48.
364000Z"redirect""https://example.
com:80/""-"10.
0.
0.
66:9000200"-""-"示例WebSockets条目95ElasticLoadBalancingApplicationLoadBalancer存储桶权限以下是WebSockets连接的示例日志条目.
ws2018-07-02T22:23:00.
186641Zapp/my-loadbalancer/50dc6c495c0c918810.
0.
0.
140:4091410.
0.
1.
192:80100.
0010.
0030.
000101101218587"GEThttp://10.
0.
0.
30:80/HTTP/1.
1"arn:aws-cn:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067"Root=1-58337364-23a8c76965a2ef7629b185e3"12018-07-02T22:22:48.
364000Z"forward"10.
0.
1.
192:8010101"-""-"安全WebSockets条目示例以下是安全WebSockets连接的示例日志条目.
wss2018-07-02T22:23:00.
186641Zapp/my-loadbalancer/50dc6c495c0c918810.
0.
0.
140:4424410.
0.
0.
171:80100.
0000.
0010.
000101101218786"GEThttps://10.
0.
0.
30:443/HTTP/1.
1""-"ECDHE-RSA-AES128-GCM-SHA256TLSv1.
2arn:aws-cn:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067"Root=1-58337364-23a8c76965a2ef7629b185e3"12018-07-02T22:22:48.
364000Z"forward"10.
0.
0.
171:8010101"-""-"Lambda函数的示例条目以下是对Lambda函数的成功请求的示例日志条目:http2018-11-30T22:23:00.
186641Zapp/my-loadbalancer/50dc6c495c0c9188192.
168.
131.
39:2817-0.
0000.
0010.
00020020034366"GEThttp://www.
example.
com:80/HTTP/1.
1""curl/7.
46.
0"--arn:aws-cn:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067"Root=1-58337364-23a8c76965a2ef7629b185e3"02018-11-30T22:22:48.
364000Z"forward"以下是对Lambda函数的失败请求的示例日志条目:http2018-11-30T22:23:00.
186641Zapp/my-loadbalancer/50dc6c495c0c9188192.
168.
131.
39:2817-0.
0000.
0010.
000502-34366"GEThttp://www.
example.
com:80/HTTP/1.
1""curl/7.
46.
0"--arn:aws-cn:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067"Root=1-58337364-23a8c76965a2ef7629b185e3"02018-11-30T22:22:48.
364000Z"forward""-""LambdaInvalidResponse"存储桶权限在启用访问日志记录时,您必须为访问日志指定S3存储桶.
存储桶必须满足以下要求.
要求存储桶必须位于与负载均衡器相同的区域中.
需要使用AmazonS3托管加密密钥(SSE-S3).
不支持其他加密选项.
存储桶必须具有为ElasticLoadBalancing授予将访问日志写入存储桶的权限的存储桶策略.
存储桶策略是JSON语句的集合,这些语句以访问策略语言编写,用于为存储桶定义访问权限.
每个语句都包括有关单个权限的信息并包含一系列元素.
使用以下选项之一准备S3存储桶以进行访问日志记录.
96ElasticLoadBalancingApplicationLoadBalancer存储桶权限选项要使用ElasticLoadBalancing控制台创建存储桶并启用访问日志记录,请跳到启用访问日志记录(p.
99)并选择让控制台为您创建存储桶和存储桶策略的选项.
要使用现有存储桶并使用AmazonS3控制台添加所需的存储桶策略,请使用以下过程,但跳过标记为"[跳过使用现有存储桶]"的步骤.
要使用AmazonS3控制台创建存储桶并添加所需的存储桶策略(例如,如果您使用AWSCLI或API启用访问日志记录),请使用以下过程.
准备AmazonS3存储桶以进行访问日志记录1.
通过以下网址打开AmazonS3控制台:https://console.
amazonaws.
cn/s3/.
2.
[跳过使用现有存储桶]选择创建存储桶.
3.
[跳过使用现有存储桶]在创建存储桶页面上,执行以下操作:a.
对于存储桶名称,请输入存储桶的名称.
此名称在AmazonS3内所有现有存储桶名称中必须唯一.
在某些区域,可能对存储桶名称有其他限制.
有关更多信息,请参阅AmazonSimpleStorageService开发人员指南中的存储桶限制.
b.
对于区域,选择在其中创建负载均衡器的区域.
c.
选择Create.
4.
选择存储桶.
选择Permissions,然后再选择BucketPolicy.
5.
如果要创建新的存储桶策略,请将整个策略文档复制到策略编辑器,然后用相应的信息替换占位符.

如果您正在编辑现有存储桶策略,请仅复制策略文档中的新语句(Statement元素的[和]之间的文本).
[可用区和本地扩展区]使用以下策略.
更新存储桶名称和前缀的占位符、ElasticLoadBalancing的AWS账户ID(基于负载均衡器的区域)以及您的AWS账户的ID.
{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal":{"AWS":"arn:aws-cn:iam::elb-account-id:root"},"Action":"s3:PutObject","Resource":"arn:aws-cn:s3:::bucket-name/prefix/AWSLogs/your-aws-account-id/*"},{"Effect":"Allow","Principal":{"Service":"delivery.
logs.
amazonaws.
com"},"Action":"s3:PutObject","Resource":"arn:aws-cn:s3:::bucket-name/prefix/AWSLogs/your-aws-account-id/*","Condition":{"StringEquals":{"s3:x-amz-acl":"bucket-owner-full-control"}}},{"Effect":"Allow","Principal":{"Service":"delivery.
logs.
amazonaws.
com"},"Action":"s3:GetBucketAcl",97ElasticLoadBalancingApplicationLoadBalancer存储桶权限"Resource":"arn:aws-cn:s3:::bucket-name"}]}下表中包含用于替代存储桶策略中的elb-account-id的账户ID.
区域区域名称ElasticLoadBalancing账户IDus-east-1美国东部(弗吉尼亚北部)127311923021us-east-2美国东部(俄亥俄州)033677994240us-west-1美国西部(加利福尼亚北部)027434742980us-west-2美国西部(俄勒冈)797873946194af-south-1非洲(开普敦)098369216593ca-central-1加拿大(中部)985666609251eu-central-1欧洲(法兰克福)054676820928eu-west-1欧洲(爱尔兰)156460612806eu-west-2欧洲(伦敦)652711504416eu-south-1欧洲(米兰)635631232127eu-west-3欧洲(巴黎)009996457667eu-north-1欧洲(斯德哥尔摩)897822967062ap-east-1亚太地区(香港)754344448648ap-northeast-1亚太区域(东京)582318560864ap-northeast-2亚太区域(首尔)600734575887ap-northeast-3亚太区域(大阪当地)383597477331ap-southeast-1亚太区域(新加坡)114774131450ap-southeast-2亚太区域(悉尼)783225319266ap-south-1亚太地区(孟买)718504428378me-south-1中东(巴林)076674570225sa-east-1南美洲(圣保罗)507241528517us-gov-west-1*AWSGovCloud(US-West)048591011584us-gov-east-1*AWSGovCloud(美国东部)190560391635cn-north-1*中国(北京)638102146993cn-northwest-1*中国(宁夏)03760470134098ElasticLoadBalancingApplicationLoadBalancer启用访问日志记录*这些区域需要单独的账户.
有关更多信息,请参阅AWSGovCloud(美国西部)和中国(北京).
[Outpost]使用以下策略.
更新存储桶的名称和前缀的占位符以及您的AWS账户的ID.
{"Effect":"Allow","Principal":{"Service":"logdelivery.
elb.
amazonaws.
com"},"Action":"s3:PutObject","Resource":"arn:aws-cn:s3:::bucket-name/prefix/AWSLogs/your-aws-account-id/*","Condition":{"StringEquals":{"s3:x-amz-acl":"bucket-owner-full-control"}}}6.
选择Save.
启用访问日志记录在为负载均衡器启用访问日志记录时,您必须指定负载均衡器将在其中存储日志的S3存储桶的名称.
存储桶必须位于负载均衡器所在的区域,并且必须具有向ElasticLoadBalancing授予在存储桶中写入访问日志的权限的存储桶策略.
该存储桶可由与拥有负载均衡器的账户不同的账户拥有.

使用控制台启用访问日志记录1.
打开AmazonEC2控制台https://console.
amazonaws.
cn/ec2/.
2.
在导航窗格中,选择LoadBalancers.
3.
选择您的负载均衡器.
4.
在Description选项卡上,选择Editattributes.
5.
在Editloadbalancerattributes页面上,执行以下操作:a.
对于访问日志,请选择启用.
b.
对于S3位置,输入S3存储桶的名称,包括任何前缀(例如,my-loadbalancer-logs/my-app).
您可以指定现有存储桶的名称或新存储桶名称.
如果您指定现有存储桶,请确保您拥有此存储桶,且配置了必要的存储桶策略.
c.
(可选)如果存储桶不存在,请选择Createthislocationforme.
您必须指定在AmazonS3中的所有现有存储桶名称中唯一的名称,并遵循DNS命名约定.
有关更多信息,请参阅AmazonSimpleStorageService开发人员指南中的存储桶命名规则.
d.
选择Save.
使用AWSCLI启用访问日志记录使用modify-load-balancer-attributes命令.
验证ElasticLoadBalancing是否在S3存储桶中创建了测试文件在为负载均衡器启用访问日志记录后,ElasticLoadBalancing将验证S3存储桶,并创建测试文件以确保存储桶策略指定所需权限.
您可以使用AmazonS3控制台验证是否已创建测试文件.
测试文件不是实际的访问日志文件;它不包含示例记录.
1.
通过以下网址打开AmazonS3控制台:https://console.
amazonaws.
cn/s3/.
99ElasticLoadBalancingApplicationLoadBalancer禁用访问日志记录2.
对于AllBuckets,选择您的S3存储桶.
3.
导航到您指定用于访问日志记录的存储桶,然后查找ELBAccessLogTestFile.
例如,如果使用控制台创建存储桶和存储桶策略,则路径如下:my-bucket/prefix/AWSLogs/123456789012/ELBAccessLogTestFile管理保存访问日志的S3存储桶启用访问日志记录之后,要删除存有访问日志的存储桶,请确保首先禁用访问日志记录.
否则,如果有一个新存储桶具有相同名称和所需的存储桶策略,但是在不属于您的AWS账户中创建的,ElasticLoadBalancing会将您的负载均衡器的访问日志写入这个新存储桶.
禁用访问日志记录您随时可为您的负载均衡器禁用访问日志记录.
在禁用访问日志记录后,您的访问日志将在S3存储桶中保留,直至您将其删除.
有关更多信息,请参阅AmazonSimpleStorageService控制台用户指南中的使用存储桶.
使用控制台禁用访问日志记录1.
打开AmazonEC2控制台https://console.
amazonaws.
cn/ec2/.
2.
在导航窗格中,选择LoadBalancers.
3.
选择您的负载均衡器.
4.
在Description选项卡上,选择Editattributes.
5.
对于Accesslogs(访问日志),清除Enable(启用).
6.
选择Save.
使用AWSCLI禁用访问日志记录使用modify-load-balancer-attributes命令.
处理访问日志文件访问日志文件是压缩文件.
如果您使用AmazonS3控制台打开这些文件,则将对其进行解压缩,并且将显示信息.
如果您下载这些文件,则必须对其进行解压才能查看信息.
如果您的网站上有大量需求,则负载均衡器可以生成包含大量数据的日志文件(以GB为单位).
您可能无法通过逐行处理来处理数量如此庞大的数据.
因此,您可能必须使用提供并行处理解决方案的分析工具.
例如,您可以使用以下分析工具分析和处理访问日志:AmazonAthena是一种交互式查询服务,让您能够使用标准SQL在AmazonS3中轻松分析数据.
有关更多信息,请参阅AmazonAthena用户指南中的查询应用程序负载均衡器日志.
LogglySplunkSumoLogic针对应用程序负载均衡器的请求跟踪您可以使用请求跟踪来跟踪HTTP请求(从客户端到目标或其他服务).
当负载均衡器从客户端接收到某个请求时,它将添加或更新X-Amzn-Trace-Id标头,然后再将该请求发送到目标.
负载均衡器和目标之间的任何服务或应用程序也可以添加或更新此标头.
100ElasticLoadBalancingApplicationLoadBalancer语法如果您启用访问日志,则将记录X-Amzn-Trace-Id标头的内容.
有关更多信息,请参阅应用程序负载均衡器的访问日志(p.
87).
语法X-Amzn-Trace-Id标头包含使用以下格式的字段:Field=version-time-id字段字段的名称.
支持的值是Root和Self.
应用程序可以出于自身目的添加任意字段.
负载均衡器将保留这些字段,但不会使用它们.

version版本号.
time新纪元时间(用秒表示).
id跟踪标识符.
示例如果传入的请求中不存在X-Amzn-Trace-Id标头,则负载均衡器会生成一个包含Root字段的标头,然后再转发该请求.
例如:X-Amzn-Trace-Id:Root=1-67891233-abcdef012345678912345678如果X-Amzn-Trace-Id标头存在并且包含Root字段,则负载均衡器将插入Self字段,然后再转发该请求.
例如:X-Amzn-Trace-Id:Self=1-67891234-12456789abcdef012345678;Root=1-67891233-abcdef012345678912345678如果应用程序添加了包含一个Root字段和一个自定义字段的标头,则负载均衡器将保留这两个字段并插入一个Self字段,然后再转发该请求:X-Amzn-Trace-Id:Self=1-67891234-12456789abcdef012345678;Root=1-67891233-abcdef012345678912345678;CalledFrom=app如果X-Amzn-Trace-Id标头存在并包含Self字段,则负载均衡器将更新Self字段的值.
限制负载均衡器在接收到传入的请求时将更新标头,而在接收到响应时不进行更新.

如果HTTP标头大于7KB,则负载均衡器将重写编写包含Root字段的X-Amzn-Trace-Id标头.
利用WebSockets,您只可以跟踪到升级请求成功.
101ElasticLoadBalancingApplicationLoadBalancerCloudTrail日志使用AWSCloudTrail记录应用程序负载均衡器的API调用ElasticLoadBalancing与AWSCloudTrail集成,后者是一项服务,该服务提供了由用户、角色或ElasticLoadBalancing中的AWS服务执行的操作的记录.
CloudTrail将ElasticLoadBalancing的所有API调用作为事件捕获.
捕获的调用包含来自AWS管理控制台的调用和对ElasticLoadBalancingAPI操作的代码调用.
如果您创建跟踪,则可以使CloudTrail事件持续传送到AmazonS3存储桶(包括ElasticLoadBalancing的事件).
如果您不配置跟踪,则仍可在CloudTrail控制台的Eventhistory(事件历史记录)中查看最新事件.
通过使用CloudTrail收集的信息,您可以确定向ElasticLoadBalancing发出了什么请求、发出请求的IP地址、何人发出的请求、请求的发出时间以及其他详细信息.
要了解有关CloudTrail的更多信息,请参阅AWSCloudTrailUserGuide.
要监控负载均衡器的其他操作(例如,当客户端向负载均衡器发出请求时),请使用访问日志.
有关更多信息,请参阅应用程序负载均衡器的访问日志(p.
87).
CloudTrail中的ElasticLoadBalancing信息在您创建CloudTrail账户时,即针对该账户启用了AWS.
ElasticLoadBalancing中发生活动时,该活动将记录在CloudTrail事件中,并与其他AWS服务事件一同保存在Eventhistory(事件历史记录)中.
您可以在AWS账户中查看、搜索和下载最新事件.
有关更多信息,请参阅使用CloudTrail事件历史记录查看事件.
要持续记录AWS账户中的事件(包括ElasticLoadBalancing的事件),请创建跟踪.
通过跟踪,CloudTrail可将日志文件传送至AmazonS3存储桶.
默认情况下,在控制台中创建跟踪时,此跟踪应用于所有AWS区域.
此跟踪在AWS分区中记录来自所有区域的事件,并将日志文件传送至您指定的AmazonS3存储桶.
此外,您可以配置其他AWS服务,进一步分析在CloudTrail日志中收集的事件数据并采取行动.
有关更多信息,请参阅下列内容:创建跟踪概述CloudTrail支持的服务和集成为CloudTrail配置AmazonSNS通知从多个区域接收CloudTrail日志文件和从多个账户中接收CloudTrail日志文件ApplicationLoadBalancer的所有ElasticLoadBalancing操作均由CloudTrail记录下来并记载到ElasticLoadBalancingAPI参考第2015-12-01版中.
例如,对CreateLoadBalancer和DeleteLoadBalancer操作的调用会在CloudTrail日志文件中生成条目.
每个事件或日志条目都包含有关生成请求的人员的信息.
身份信息帮助您确定以下内容:请求是使用根用户凭证还是AWSIdentityandAccessManagement(IAM)用户凭证发出的.
请求是使用角色还是联合身份用户的临时安全凭证发出的.
请求是否由其他AWS服务发出.
有关更多信息,请参阅CloudTrailuserIdentity元素.
了解ElasticLoadBalancing日志文件条目跟踪是一种配置,可用于将事件作为日志文件传送到您指定的AmazonS3存储桶.
CloudTrail日志文件包含一个或多个日志条目.
一个事件表示来自任何源的一个请求,包括有关所请求的操作、操作的日期和时间、请求参数等方面的信息.
CloudTrail日志文件不是公用API调用的有序堆栈跟踪,因此它们不会以任何特定顺序显示.
102ElasticLoadBalancingApplicationLoadBalancer了解ElasticLoadBalancing日志文件条目这些日志文件包含AWS账户的所有AWSAPI调用(而不只是ElasticLoadBalancingAPI调用)的相关事件.
您可通过检查是否有包含值elasticloadbalancing.
amazonaws.
com的eventSource元素来查找对ElasticLoadBalancingAPI的调用.
要查看特定操作(如CreateLoadBalancer)的记录,请检查是否有具有操作名称的eventName元素.
以下是一位用户的ElasticLoadBalancing的示例CloudTrail日志记录,该用户使用AWSCLI创建了一个应用程序负载均衡器,然后又删除了它.
您可以使用userAgent元素标识CLI.
可使用eventName元素标识请求的API调用.
有关用户(Alice)的信息可在userIdentity元素中找到.
Example示例:CreateLoadBalancer{"eventVersion":"1.
03","userIdentity":{"type":"IAMUser","principalId":"123456789012","arn":"arn:aws:iam::123456789012:user/Alice","accountId":"123456789012","accessKeyId":"AKIAIOSFODNN7EXAMPLE","userName":"Alice"},"eventTime":"2016-04-01T15:31:48Z","eventSource":"elasticloadbalancing.
amazonaws.
com","eventName":"CreateLoadBalancer","awsRegion":"us-west-2","sourceIPAddress":"198.
51.
100.
1","userAgent":"aws-cli/1.
10.
10Python/2.
7.
9Windows/7botocore/1.
4.
1","requestParameters":{"subnets":["subnet-8360a9e7","subnet-b7d581c0"],"securityGroups":["sg-5943793c"],"name":"my-load-balancer","scheme":"internet-facing"},"responseElements":{"loadBalancers":[{"type":"application","loadBalancerName":"my-load-balancer","vpcId":"vpc-3ac0fb5f","securityGroups":["sg-5943793c"],"state":{"code":"provisioning"},"availabilityZones":[{"subnetId":"subnet-8360a9e7","zoneName":"us-west-2a"},{"subnetId":"subnet-b7d581c0","zoneName":"us-west-2b"}],"dNSName":"my-load-balancer-1836718677.
us-west-2.
elb.
amazonaws.
com","canonicalHostedZoneId":"Z2P70J7HTTTPLU","createdTime":"Apr11,20165:23:50PM","loadBalancerArn":"arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-load-balancer/ffcddace1759e1d0","scheme":"internet-facing"}]},"requestID":"b9960276-b9b2-11e3-8a13-f1ef1EXAMPLE","eventID":"6f4ab5bd-2daa-4d00-be14-d92efEXAMPLE","eventType":"AwsApiCall","apiVersion":"2015-12-01","recipientAccountId":"123456789012"}Example示例:DeleteLoadBalancer{"eventVersion":"1.
03",103ElasticLoadBalancingApplicationLoadBalancer了解ElasticLoadBalancing日志文件条目"userIdentity":{"type":"IAMUser","principalId":"123456789012","arn":"arn:aws:iam::123456789012:user/Alice","accountId":"123456789012","accessKeyId":"AKIAIOSFODNN7EXAMPLE","userName":"Alice"},"eventTime":"2016-04-01T15:31:48Z","eventSource":"elasticloadbalancing.
amazonaws.
com","eventName":"DeleteLoadBalancer","awsRegion":"us-west-2","sourceIPAddress":"198.
51.
100.
1","userAgent":"aws-cli/1.
10.
10Python/2.
7.
9Windows/7botocore/1.
4.
1","requestParameters":{"loadBalancerArn":"arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-load-balancer/ffcddace1759e1d0"},"responseElements":null,"requestID":"349598b3-000e-11e6-a82b-298133eEXAMPLE","eventID":"75e81c95-4012-421f-a0cf-babdaEXAMPLE","eventType":"AwsApiCall","apiVersion":"2015-12-01","recipientAccountId":"123456789012"}104ElasticLoadBalancingApplicationLoadBalancer已注册目标未处于可用状态排除ApplicationLoadBalancer的故障以下信息可帮助您解决与应用程序负载均衡器相关的问题.
问题已注册目标未处于可用状态(p.
105)客户端无法连接到面向Internet的负载均衡器(p.
105)负载均衡器将请求发送到运行状况不佳的目标(p.
106)负载均衡器发送响应代码000(p.
106)负载均衡器生成HTTP错误(p.
106)目标生成HTTP错误(p.
109)已注册目标未处于可用状态如果目标进入InService状态所花费的时间超过预期,则该目标可能无法通过运行状况检查.
您的目标未处于可用状态,除非通过一次运行状况检查.
有关更多信息,请参阅目标组的运行状况检查(p.
60).
确认您的实例未通过运行状况检查,然后检查以下问题:安全组不允许流量与实例关联的安全组必须允许来自负载均衡器的使用运行状况检查端口和运行状况检查协议的流量.
您可以向实例安全组添加一个规则以允许来自负载均衡器安全组的所有流量.
负载均衡器的安全组也必须允许流入实例的流量.
网络访问控制列表(ACL)不允许流量与实例的子网关联的网络ACL必须允许运行状况检查端口上的入站流量,以及临时端口(1024-65535)上的出站流量.
与您负载均衡器节点的子网关联的网络ACL必须允许临时端口上的入站流量,以及运行状况检查端口和临时端口上的出站流量.
ping路径不存在创建运行状况检查的目标页并将其路径指定为ping路径.
连接超时首先,验证您是否能使用目标的私有IP地址和运行状况检查协议直接从网络中连接到目标.
如果您无法连接,请检查实例是否被过度使用,并将多个目标添加到目标组(如果它太忙而无法响应).
如果您可以连接,则在运行状况检查超时期限之前,目标页可能不会响应.
为运行状况检查选择更简单的目标页,或者调整运行状况检查设置.
目标未返回成功响应代码默认情况下,成功代码为200,但您可以选择在配置运行状况检查时指定其他成功代码.
确认负载均衡器所需的成功代码,并且应用程序已配置为在成功时返回这些代码.
客户端无法连接到面向Internet的负载均衡器如果负载均衡器未响应请求,请检查以下问题:105ElasticLoadBalancingApplicationLoadBalancer负载均衡器将请求发送到运行状况不佳的目标您的面向Internet的负载均衡器已连接到私有子网您必须为负载均衡器指定公有子网.
公有子网有一个指向VirtualPrivateCloud(VPC)的Internet网关的路由.
安全组或网络ACL不允许流量负载均衡器的安全组和负载均衡器子网的任何网络ACL必须允许客户端侦听器端口上的入站流量和出站流量.
负载均衡器将请求发送到运行状况不佳的目标如果目标组中至少有一个运行正常的目标,则负载均衡器仅将请求路由到运行正常的目标.
如果目标组仅包含运行状况不佳的目标,则负载均衡器将请求路由到运行状况不佳的目标.

负载均衡器发送响应代码000使用HTTP/2连接时,如果任何标头的压缩长度超过8K,负载均衡器就会发送GOAY帧并关闭与TCPFIN的连接.
负载均衡器生成HTTP错误以下HTTP错误由负载均衡器生成.
负载均衡器将HTTP代码发送到客户端,将请求保存到访问日志并增加HTTPCode_ELB_4XX_Count或HTTPCode_ELB_5XX_Count指标.
错误HTTP400:错误请求(p.
106)HTTP401:未授权(p.
107)HTTP403:禁止访问(p.
107)HTTP405:不允许的方法(p.
107)HTTP408:请求超时(p.
107)HTTP413:有效负载过大(p.
107)HTTP414:URI太长(p.
107)HTTP460(p.
107)HTTP463(p.
107)HTTP464(p.
107)HTTP500:内部服务器错误(p.
108)HTTP501:未实现(p.
108)HTTP502:无效网关(p.
108)HTTP503:服务不可用(p.
108)HTTP504:网关超时(p.
108)HTTP505:不支持版本(p.
109)HTTP561:未授权(p.
109)HTTP400:错误请求可能的原因:106ElasticLoadBalancingApplicationLoadBalancerHTTP401:未授权客户端发送的请求格式错误,不符合HTTP规范.
请求标头超出了每个请求行16K、每单个标头16K或整个标头64K的限制.
HTTP401:未授权您已将侦听器规则配置为对用户进行身份验证,但出现下列情况之一:已将OnUnauthenticatedRequest配置为拒绝未经身份验证的用户或IdP拒绝访问.
IdP返回的声明大小超出了负载均衡器支持的最大大小.
客户端提交了一个不带主机标头的HTTP/1.
0请求,并且负载均衡器未能生成重定向URL.
请求的范围未返回ID令牌.
HTTP403:禁止访问您已配置AWSWAFWeb访问控制列表(WebACL)来监控发往您的应用程序负载均衡器的请求,并且它拦截了请求.
HTTP405:不允许的方法客户端使用了ApplicationLoadBalancer不支持的TRACE方法.
HTTP408:请求超时客户端在空闲超时期到期前未发送数据.
发送TCPkeep-alive不会阻止此超时.
在每个空闲超时期过去之前发送至少1个字节的数据.
根据需要增加空闲超时期长度.
HTTP413:有效负载过大目标是Lambda函数,请求正文超过1MB.
HTTP414:URI太长请求URL或查询字符串参数过大.
HTTP460负载均衡器收到了来自客户端的请求,但客户端在空闲超时期限结束前就关闭了与负载均衡器的连接.

检查客户端超时期限是否超过负载均衡器的空闲超时期限.
确保目标在客户端超时期限之前向客户端提供响应,或增加客户端超时期限以匹配负载均衡器空闲超时(如果客户端支持这样做).
HTTP463负载均衡器收到一个包含多个IP地址的X-Forwarded-For请求标头.
IP地址的上限为30.
HTTP464负载均衡器收到一个与目标组协议的版本配置不兼容的传入请求协议.

107ElasticLoadBalancingApplicationLoadBalancerHTTP500:内部服务器错误可能的原因:请求协议是HTTP/1.
1,而目标组协议版本是gRPC或HTTP/2.
请求协议是gRPC,而目标组协议版本是HTTP/1.
1.
请求协议是HTTP/2,请求不是POST,而目标组协议版本是gRPC.
HTTP500:内部服务器错误可能的原因:您配置了一个AWSWAFWeb访问控制列表(webACL),并且在执行WebACL规则时出现了错误.
负载均衡器无法与IdP令牌终端节点或IdP用户信息终端节点进行通信.
验证负载均衡器的安全组和VPC的网络ACL是否允许至这些终端节点的出站访问.
验证您的VPC可以访问Internet.
如果您有面向内部的负载均衡器,请使用NAT网关启用Internet访问.
HTTP501:未实现负载均衡器收到具有不支持的值的Transfer-Encoding标头.
Transfer-Encoding支持的值为chunked和identity.
作为替代方案,您可以使用Content-Encoding标头.
HTTP502:无效网关可能的原因:负载均衡器在尝试建立连接时从目标收到了TCPRST.
负载均衡器收到来自目标的意外响应,如当尝试建立连接时,收到"ICMPDestinationunreachable(Hostunreachable)".
检查是否允许来自负载均衡器子网的流量流至目标端口上的目标.

小白云 (80元/月),四川德阳 4核2G,山东枣庄 4核2G,美国VPS20元/月起三网CN2

小白云是一家国人自营的企业IDC,主营国内外VPS,致力于让每一个用户都能轻松、快速、经济地享受高端的服务,成立于2019年,拥有国内大带宽高防御的特点,专注于DDoS/CC等攻击的防护;海外线路精选纯CN2线路,以确保用户体验的首选线路,商家线上多名客服一对一解决处理用户的问题,提供7*24无人全自动化服务。商家承诺绝不超开,以用户体验为中心为用提供服务,一直坚持主打以产品质量用户体验性以及高效...

UCloud优刻得,新增1核1G内存AMD快杰云机型,服务器2元/首月,47元/年

UCloud优刻得近日针对全球大促活动进行了一次改版,这次改版更加优惠了,要比之前的优惠价格还要低一些,并且新增了1核心1G内存的快杰云服务器,2元/首年,47元/年,这个价格应该是目前市面上最低最便宜的云服务器产品了,有需要国内外便宜VPS云服务器的朋友可以关注一下。UCloud好不好,UCloud服务器怎么样?UCloud服务器值不值得购买UCloud是优刻得科技股份有限公司旗下拥有的云计算服...

俄罗斯vps主机推荐,怎么样俄罗斯vps俄罗斯vps速度怎么样?

俄罗斯vps速度怎么样?俄罗斯vps云主机节点是欧洲十大节点之一,地处俄罗斯首都莫斯科,网络带宽辐射周边欧洲大陆,10G专线连通德国法兰克福、法国巴黎、意大利米兰等,向外连接全球。俄罗斯vps云主机速度快吗、延迟多少?由于俄罗斯数据中心出口带宽充足,俄罗斯vps云主机到全球各地的延迟、速度相对来说都不错。今天,云服务器网(yuntue.com)小编介绍一下俄罗斯vps速度及俄罗斯vps主机推荐!俄...

http://www.taobao.com/为你推荐
固态硬盘是什么固态硬盘是什么意思硬盘工作原理数据存储的原理是什么商标注册流程及费用注册商标的流程是什么,大概需要多少费用?firetrap我淘宝店还是卖二单就被删,怎么回事!psbc.com怎样登录wap.psbc.comwww.haole012.com阜阳有什么好的正规的招聘网站?m.2828dy.com电影虫www.dyctv.com这个电影站能下载电影吗?广告法新修订的《广告法》有哪些内容59ddd.comarmada m300什么装系统龚如敏请问这张图片出自哪里?
m3型虚拟主机 怎样申请域名 idc资讯 鲁诺 根服务器 深圳域名 测试网速命令 789电视剧网 google搜索打不开 香港ip apachetomcat cloudflare weblogic部署 阿里云宕机故障 vim let 装修瓦工培训 联想塔式服务器 个人web服务器 免费服务器代理 更多