本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
为经典负载均衡器启用访问日志
要为负载均衡器启用访问日志,您必须指定负载均衡器将在其中存储日志的 Amazon S3 存储桶的名称。您还必须将一个存储桶策略附加到此存储桶,该策略向 Elastic Load Balancing 授予写入存储桶的权限。
步骤 1:创建 S3 存储桶
在启用访问日志时,您必须为访问日志指定 S3 存储桶。存储桶必须满足以下要求。
要求
-
存储桶必须位于与负载均衡器相同的区域中。该存储桶和负载均衡器可由不同的账户拥有。
-
唯一支持的服务器端加密选项是 Amazon S3 托管密钥 (SSE-S3)。有关更多信息,请参阅 Amazon S3 托管的加密密钥 (SSE- S3)。
使用 Amazon S3 控制台创建 S3 存储桶。
-
打开 Amazon S3 控制台,网址为https://console.aws.amazon.com/s3/
。 -
选择 Create bucket (创建存储桶)。
-
在 Create a bucket (创建存储桶) 页上,执行以下操作:
-
对于存储桶名称,请输入存储桶的名称。此名称在 Amazon S3 内所有现有存储桶名称中必须唯一。在某些区域,可能对存储桶名称有其他限制。有关更多信息,请参阅 《Amazon Simple Storage Service 用户指南》中的存储桶限制。
-
对于 AWS 区域,选择在其中创建负载均衡器的区域。
-
对于默认加密,请选择亚马逊 S3 托管密钥 (SSE- S3)。
-
选择创建存储桶。
-
步骤 2:将策略附加到 S3 存储桶
S3 存储桶必须具有为 Elastic Load Balancing 授予将访问日志写入存储桶的权限的存储桶策略。存储桶策略是用访问策略语言编写的一组语JSON句,用于定义存储桶的访问权限。每个语句都包括有关单个权限的信息并包含一系列元素。
如果您正在使用具有附加策略的现有存储桶,则可以将 Elastic Load Balancing 访问日志的语句添加到该策略。如果您这样做,则建议您评估生成的权限集,以确保它们适用于需要具有对访问日志的存储桶的访问权的用户。
可用的存储桶策略
您将使用的存储桶策略取决于存储桶 AWS 区域 的策略。 以下每个可扩展部分都包含存储桶策略,以及有关何时使用该策略的信息。
该策略向指定的日志传送服务授予权限。将此策略用于以下区域的可用区和本地区中的负载均衡器:
亚太地区(海得拉巴)
亚太地区(马来西亚)
亚太地区(墨尔本)
加拿大西部(卡尔加里)
欧洲(西班牙)
欧洲(苏黎世)
以色列(特拉维夫)
中东 (UAE)
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "logdelivery.elasticloadbalancing.amazonaws.com" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::
amzn-s3-demo-loadbalancer-logs
/logging-prefix
/AWSLogs/012345678912
/*" } ] }
该策略向指定的 Elastic Load Balancing 账户 ID 授予权限。将此策略用于以下所列 区域的可用区或 Local Zones 中的负载均衡器。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
elb-account-id
:root" }, "Action": "s3:PutObject", "Resource": "s3-bucket-arn
" } ] }
Replace(替换) elb-account-id
以及您所在地区的 Elastic Load Balancing 的 ID: AWS 账户
-
美国东部(弗吉尼亚州北部)– 127311923021
-
美国东部(俄亥俄州)– 033677994240
-
美国西部(北加利福尼亚)– 027434742980
-
美国西部(俄勒冈州)– 797873946194
-
非洲(开普敦)– 098369216593
-
亚太地区(香港)– 754344448648
-
亚太地区(雅加达)– 589379963580
-
亚太地区(孟买)– 718504428378
-
亚太地区(大阪)– 383597477331
-
亚太地区(首尔)– 600734575887
-
亚太地区(新加坡)– 114774131450
-
亚太地区(悉尼)– 783225319266
-
亚太地区(东京)– 582318560864
-
加拿大(中部)– 985666609251
-
欧洲(法兰克福)– 054676820928
-
欧洲(爱尔兰)– 156460612806
-
欧洲(伦敦)– 652711504416
-
欧洲(米兰)– 635631232127
-
欧洲(巴黎)– 009996457667
-
欧洲(斯德哥尔摩)– 897822967062
-
中东(巴林)– 076674570225
-
南美洲(圣保罗)– 507241528517
Replace(替换) s3-bucket-arn
以及ARN您的访问日志所在的位置。ARN您指定的取决于您是否计划在步骤 3 中启用访问日志时指定前缀。
-
ARN带前缀的示例
arn:aws:s3:::
amzn-s3-demo-loadbalancer-logs
/logging-prefix
/AWSLogs/012345678912
/* -
ARN不带前缀的示例
arn:aws:s3:::
amzn-s3-demo-loadbalancer-logs
/AWSLogs/012345678912
/*
该策略向指定的 Elastic Load Balancing 账户 ID 授予权限。此策略适用于可用区中的负载均衡器或下表中 AWS GovCloud (US) 区域中的 Local Zones。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws-us-gov:iam::
elb-account-id
:root" }, "Action": "s3:PutObject", "Resource": "s3-bucket-arn
" } ] }
Replace(替换) elb-account-id
以及您 AWS 账户 所在地区的 Elastic Load Balancing 的 ID: AWS 账户
-
AWS GovCloud (美国西部)— 048591011584
-
AWS GovCloud (美国东部)— 190560391635
Replace(替换) s3-bucket-arn
以及ARN您的访问日志所在的位置。ARN您指定的取决于您是否计划在步骤 3 中启用访问日志时指定前缀。
-
ARN带前缀的示例
arn:aws-us-gov:s3:::
amzn-s3-demo-loadbalancer-logs
/logging-prefix
/AWSLogs/012345678912
/* -
ARN不带前缀的示例
arn:aws-us-gov:s3:::
amzn-s3-demo-loadbalancer-logs
/AWSLogs/012345678912
/*
使用 Amazon S3 控制台将访问日志的存储桶策略附加到您的存储桶
-
打开 Amazon S3 控制台,网址为https://console.aws.amazon.com/s3/
。 -
选择存储桶的名称以打开其详细信息页面。
-
选择 Permissions(权限),然后选择 Bucket policy(存储桶策略)、Edit(编辑)。
-
更新存储桶策略以授予所需权限。
-
选择 Save changes(保存更改)。
步骤 3:配置访问日志
使用以下过程配置访问日志,以捕获请求信息并将日志文件传送到您的 S3 存储桶。
要求
存储桶必须满足第 1 步中所描述的要求,并且必须附加第 2 步中所描述的存储桶策略。如果指定前缀,则前缀不得包含字符串 “AWSLogs”。
使用控制台为负载均衡器配置访问日志
打开亚马逊EC2控制台,网址为https://console.aws.amazon.com/ec2/
。 -
在导航窗格上的负载均衡下,选择负载均衡器。
-
选择您的负载均衡器的名称以打开其详细信息页面。
-
在属性选项卡上,选择编辑。
-
在编辑负载均衡器属性页面的监控部分中,执行以下操作:
-
启用访问日志。
-
对于 S3 URI,请输入日志文件URI的 S3。URI您指定的取决于您是否使用前缀。
-
URI带前缀:
s3://
amzn-s3-demo-loadbalancer-logs
/logging-prefix
-
URI不带前缀:
s3://
amzn-s3-demo-loadbalancer-logs
-
-
将日志记录间隔时间保留为
60 minutes - default
。 -
选择 Save changes(保存更改)。
-
要为负载均衡器配置访问日志,请使用 AWS CLI
首先,创建一个 .json 文件,该文件使 Elastic Load Balancing 能够捕获日志并每 60 分钟将这些日志传输到您为日志创建的 S3 存储桶一次:
{ "AccessLog": { "Enabled": true, "S3BucketName": "
amzn-s3-demo-loadbalancer-logs
", "EmitInterval": 60, "S3BucketPrefix": "my-app
" } }
接下来,在modify-load-balancer-attributes命令中指定.json 文件,如下所示:
aws elb modify-load-balancer-attributes --load-balancer-name
my-loadbalancer
--load-balancer-attributes file://my-json-file
.json
以下为响应示例。
{
"LoadBalancerAttributes": {
"AccessLog": {
"Enabled": true,
"EmitInterval": 60,
"S3BucketName": "amzn-s3-demo-loadbalancer-logs",
"S3BucketPrefix": "my-app"
}
},
"LoadBalancerName": "my-loadbalancer"
}
管理保存访问日志的 S3 存储桶
要删除您配置用于访问日志的存储桶,请确保首先禁用访问日志。否则,如果有一个名称相同的新存储桶,并且在您不拥有的存储桶中创建了所需的存储桶策略 AWS 账户 ,Elastic Load Balancing 可能会将您的负载均衡器的访问日志写入这个新存储桶。
步骤 4:确认存储桶权限
在为负载均衡器启用访问日志后,Elastic Load Balancing 将验证 S3 存储桶,并创建测试文件以确保存储桶策略指定所需权限。您可以使用 S3 控制台验证是否已创建测试文件。测试文件不是实际的访问日志文件;它不包含示例记录。
验证 Elastic Load Balancing 是否在 S3 存储桶中创建了测试文件
-
打开 Amazon S3 控制台,网址为https://console.aws.amazon.com/s3/
。 -
选择您指定用于访问日志的 S3 存储桶的名称。
-
导航到测试文件
ELBAccessLogTestFile
。位置取决于您是否使用前缀。-
带前缀的位置:
amzn-s3-demo-loadbalancer-logs
/logging-prefix
/AWSLogs/123456789012
/ELBAccessLogTestFile -
没有前缀的位置:
amzn-s3-demo-loadbalancer-logs
/AWSLogs/123456789012
/ELBAccessLogTestFile
-
故障排除
存储桶的访问被拒绝:bucket-name
。 请检查 s3Bucket 权限
如果您收到此错误,则以下是可能的原因:
-
存储桶策略没有为 Elastic Load Balancing 授予将访问日志写入存储桶的权限。确认您使用的是该区域正确的存储桶策略。确认该资源ARN使用的存储桶名称与您在启用访问日志时指定的存储桶名称相同。如果您在启用访问日志时ARN未指定前缀,请验证资源是否不包含前缀。
-
存储桶使用不支持的服务器端加密选项。存储桶必须使用亚马逊 S3 托管的密钥 (SSE-S3)。